Odwróć geokodowanie lokalizacji

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

  Gdy użytkownik przytrzyma mapę, współrzędne gestu są wysyłane do usługi odwrotnego geokodowania. Jeśli się uda, na mapie pojawi się znacznik z oknem informacyjnym zawierającym wynik.

Rozpocznij

Zanim wypróbujesz przykładowy kod, musisz skonfigurować środowisko programistyczne. Więcej informacji znajdziesz w przykładach kodu pakietu Maps SDK na iOS.

Wyświetlanie kodu

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       

Uruchamianie pełnej przykładowej aplikacji lokalnie

Przykładowa aplikacja Maps SDK na iOS jest dostępna jako archiwum do pobrania w GitHub. Aby zainstalować i wypróbować przykładową aplikację pakietu Maps SDK na iOS, wykonaj te czynności.

  1. Uruchom git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git, aby sklonować repozytorium z przykładami do katalogu lokalnego.
  2. Otwórz okno terminala, przejdź do katalogu, w którym zostały sklonowane pliki przykładowe, i otwórz katalog 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. W Xcode naciśnij przycisk kompilacji, aby skompilować aplikację z bieżącym schematem. Kompilacja spowoduje błąd, który wyświetli prośbę o wpisanie klucza interfejsu API w pliku SDKConstants.swift w przypadku języka Swift lub w pliku SDKDemoAPIKey.h w przypadku języka Objective-C.
  4. Pobierz klucz interfejsu API z projektu, w którym włączony jest pakiet Maps SDK na iOS.
  5. Edytuj plik SDKConstants.swift w przypadku języka Swift lubSDKDemoAPIKey.h w przypadku języka Objective-C i wklej klucz interfejsu API do definicji stałej apiKey lub kAPIKey. Na przykład:

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. W pliku SDKConstants.swift (Swift) lubSDKDemoAPIKey.h (Objective-C) usuń ten wiersz, ponieważ służy on do rejestrowania problemu zdefiniowanego przez użytkownika:

    Swift

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

    Objective-C

    #error Register for API Key and insert here.
  7. Skompiluj i uruchom projekt. Pojawi się okno symulatora iOS z listą demonstracji pakietu Maps SDK.
  8. Wybierz jedną z wyświetlonych opcji, aby wypróbować funkcję pakietu SDK Map na iOS.
  9. Jeśli pojawi się pytanie, czy zezwolić aplikacji GoogleMapsDemos na dostęp do Twojej lokalizacji, kliknij Zezwól.