Umgekehrte Geocodierung eines Standorts

Entwickler im Europäischen Wirtschaftsraum (EWR)

  Wenn lange auf die Karte gedrückt wird, werden die Koordinaten der Geste an den Reverse-Geocoding-Dienst gesendet. Wenn die Suche erfolgreich ist, wird der Karte eine Markierung mit einem Infofenster hinzugefügt, das das Ergebnis enthält.

Jetzt starten

Bevor Sie den Beispielcode ausprobieren können, müssen Sie Ihre Entwicklungsumgebung konfigurieren. Weitere Informationen finden Sie unter Maps SDK for iOS – Beispielcode.

Code ansehen

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       

Vollständige Beispielanwendung lokal ausführen

Die Beispiel-App für das Maps SDK for iOS ist als Downloadarchiv auf GitHub verfügbar. So installieren Sie die Maps SDK for iOS-Beispiel-App und probieren sie aus:

  1. Führen Sie git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git aus, um das Beispiel-Repository in ein lokales Verzeichnis zu klonen.
  2. Öffnen Sie ein Terminalfenster, wechseln Sie zu dem Verzeichnis, in das Sie die Beispieldateien geklont haben, und rufen Sie das Verzeichnis „GoogleMaps“ auf:

    Swift

    cd maps-sdk-for-ios-samples/GoogleMaps-Swift open GoogleMapsSwiftXCFrameworkDemos.xcodeproj

    Objective-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps open GoogleMapsDemos.xcodeproj
  3. Gehen Sie im Xcode-Projekt zu File > Add Package Dependencies (Datei > Paketabhängigkeiten hinzufügen). Geben Sie https://github.com/googlemaps/ios-maps-sdk als URL ein, drücken Sie die Eingabetaste, um das Paket abzurufen, und klicken Sie auf Paket hinzufügen.
  4. Drücken Sie in Xcode die Schaltfläche zum Kompilieren, um die App mit dem aktuellen Schema zu erstellen. Beim Erstellen des Builds wird ein Fehler ausgegeben, der Sie auffordert, Ihren API-Schlüssel in die Datei SDKConstants.swift für Swift oder in die Datei SDKDemoAPIKey.h für Objective-C einzugeben.
  5. Rufen Sie einen API-Schlüssel für Ihr Projekt ab, für das das Maps SDK for iOS aktiviert ist.
  6. Bearbeiten Sie die Datei SDKConstants.swift für Swift oder die Datei SDKDemoAPIKey.h für Objective-C und fügen Sie Ihren API-Schlüssel in die Definition der Konstanten apiKey oder kAPIKey ein. Beispiel:

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  7. Entfernen Sie in der Datei SDKConstants.swift (Swift) oder SDKDemoAPIKey.h (Objective-C) die folgende Zeile, da sie zum Registrieren des nutzerdefinierten Problems verwendet wird:

    Swift

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

    Objective-C

    #error Register for API Key and insert here.
  8. Erstellen Sie das Projekt und führen Sie es aus. Das iOS-Simulationsfenster wird geöffnet und zeigt eine Liste mit Maps SDK-Demos an.
  9. Wählen Sie eine der angezeigten Optionen aus, um eine Funktion des Maps SDK for iOS auszuprobieren.
  10. Wenn Sie aufgefordert werden, GoogleMapsDemos den Zugriff auf Ihren Standort zu erlauben, wählen Sie Zulassen aus.