ย้อนกลับตำแหน่งที่ระบุพิกัดทางภูมิศาสตร์

เมื่อกดแผนที่ค้างไว้ ระบบจะส่งพิกัดของท่าทางไปยังบริการการแปลงพิกัดภูมิศาสตร์ย้อนกลับ หากดำเนินการสำเร็จ ระบบจะเพิ่มเครื่องหมายที่มีหน้าต่างข้อมูลซึ่งมีผลลัพธ์ลงในแผนที่

เริ่มต้นใช้งาน

คุณต้องกําหนดค่าสภาพแวดล้อมการพัฒนาก่อนจึงจะลองใช้โค้ดตัวอย่างได้ ดูข้อมูลเพิ่มเติมได้ที่ตัวอย่างโค้ด Maps SDK สำหรับ iOS

ดูรหัส

Swift

import GoogleMaps
import UIKit

// Sample code for GeoCoder service.
class GeocoderViewController: UIViewController {

  private lazy var mapView: GMSMapView = {
    let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12)
    return GMSMapView(frame: .zero, camera: camera)
  }()

  private lazy var geocoder = GMSGeocoder()

  override func loadView() {
    view = mapView
    mapView.delegate = self
  }
}

extension GeocoderViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) {
    // On a long press, reverse geocode this location.
    geocoder.reverseGeocodeCoordinate(coordinate) { response, error in
      guard let address = response?.firstResult() else {
        let errorMessage = error.map { String(describing: $0) } ?? "<no error>"
        print(
          "Could not reverse geocode point (\(coordinate.latitude), \(coordinate.longitude)): \(errorMessage)"
        )
        return
      }
      print("Geocoder result: \(address)")
      let marker = GMSMarker(position: address.coordinate)
      marker.appearAnimation = .pop
      marker.map = mapView

      guard let lines = address.lines, let title = lines.first else { return }
      marker.title = title
      if lines.count > 1 {
        marker.snippet = lines[1]
      }
    }
  }
}
      

Objective-C

#import "GoogleMapsDemos/Samples/GeocoderViewController.h"

#import <GoogleMaps/GoogleMaps.h>

@implementation GeocoderViewController {
  GMSMapView *_mapView;
  GMSGeocoder *_geocoder;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868
                                                          longitude:151.2086
                                                               zoom:12];

  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  _mapView.delegate = self;

  _geocoder = [[GMSGeocoder alloc] init];

  self.view = _mapView;
}

- (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate {
  // On a long press, reverse geocode this location.
  __weak __typeof__(self) weakSelf = self;
  GMSReverseGeocodeCallback handler = ^(GMSReverseGeocodeResponse *response, NSError *error) {
    [weakSelf handleResponse:response coordinate:coordinate error:error];
  };
  [_geocoder reverseGeocodeCoordinate:coordinate completionHandler:handler];
}

- (void)handleResponse:(nullable GMSReverseGeocodeResponse *)response
            coordinate:(CLLocationCoordinate2D)coordinate
                 error:(nullable NSError *)error {
  GMSAddress *address = response.firstResult;
  if (address) {
    NSLog(@"Geocoder result: %@", address);

    GMSMarker *marker = [GMSMarker markerWithPosition:address.coordinate];
    NSArray<NSString *> *lines = [address lines];

    marker.title = [lines firstObject];
    if (lines.count > 1) {
      marker.snippet = [lines objectAtIndex:1];
    }

    marker.appearAnimation = kGMSMarkerAnimationPop;
    marker.map = _mapView;
  } else {
    NSLog(@"Could not reverse geocode point (%f,%f): %@", coordinate.latitude, coordinate.longitude,
          error);
  }
}

@end
      

เรียกใช้แอปตัวอย่างเวอร์ชันเต็มในเครื่อง

แอปตัวอย่าง Maps SDK สําหรับ iOS มีให้บริการเป็นไฟล์เก็บถาวรที่ดาวน์โหลดได้จาก GitHub ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้งและลองใช้แอปตัวอย่าง Maps SDK สําหรับ iOS

  1. เรียกใช้ git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git เพื่อโคลนที่เก็บตัวอย่างไปยังไดเรกทอรีในเครื่อง
  2. เปิดหน้าต่างเทอร์มินัล ไปที่ไดเรกทอรีที่คุณโคลนไฟล์ตัวอย่าง แล้วเจาะลึกลงในไดเรกทอรี GoogleMaps

    Swift

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
    pod install
    open GoogleMapsSwiftDemos.xcworkspace

    Objective-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps
    pod install
    open GoogleMapsDemos.xcworkspace
  3. ใน Xcode ให้กดปุ่มคอมไพล์เพื่อสร้างแอปด้วยรูปแบบปัจจุบัน บิลด์แสดงข้อผิดพลาดโดยแจ้งให้คุณป้อนคีย์ API ในSDKConstants.swiftไฟล์สำหรับ Swift หรือSDKDemoAPIKey.hไฟล์สำหรับ Objective-C
  4. หากยังไม่มีคีย์ API ให้ทําตามวิธีการเพื่อตั้งค่าโปรเจ็กต์ในคอนโซล Google Cloud และรับคีย์ API เมื่อกำหนดค่าคีย์ในคอนโซลระบบคลาวด์ คุณสามารถจำกัดคีย์ให้ใช้กับตัวระบุ App Bundle ของแอปตัวอย่างได้ เพื่อให้มั่นใจว่ามีเพียงแอปของคุณเท่านั้นที่ใช้คีย์ได้ ตัวระบุแพ็กเกจเริ่มต้นของแอปตัวอย่าง SDK คือ com.example.GoogleMapsDemos
  5. แก้ไขไฟล์ SDKConstants.swift สำหรับ Swift หรือไฟล์ SDKDemoAPIKey.h สำหรับ Objective-C แล้ววางคีย์ API ของคุณลงในคําจํากัดความของค่าคงที่ apiKey หรือ kAPIKey เช่น

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. ในSDKConstants.swiftไฟล์ (Swift) หรือSDKDemoAPIKey.hไฟล์ (Objective-C) ให้ลบบรรทัดต่อไปนี้ออก เนื่องจากใช้เพื่อบันทึกปัญหาที่ผู้ใช้กำหนด

    Swift

    #error (Register for API Key and insert here. Then delete this line.)

    Objective-C

    #error Register for API Key and insert here.
  7. สร้างและเรียกใช้โปรเจ็กต์ หน้าต่างโปรแกรมจำลอง iOS จะปรากฏขึ้นพร้อมแสดงรายการเดโม Maps SDK
  8. เลือกตัวเลือกใดตัวเลือกหนึ่งที่แสดงเพื่อทดลองใช้ฟีเจอร์ของ Maps SDK สำหรับ iOS
  9. หากได้รับข้อความแจ้งให้อนุญาตให้ GoogleMapsDemos เข้าถึงตำแหน่งของคุณ ให้เลือกอนุญาต