Wenn lange auf die Karte gedrückt wird, werden die Koordinaten der Geste an den Dienst für die umgekehrte Geocodierung 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:
- 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. Öffnen Sie ein Terminalfenster, wechseln Sie zu dem Verzeichnis, in dem Sie die Beispieldateien geklont haben, und rufen Sie das Verzeichnis „GoogleMaps“ auf:
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
- Drücken Sie in Xcode auf die Schaltfläche „Kompilieren“, um die App mit dem aktuellen Schema zu erstellen. Beim Erstellen tritt ein Fehler auf, der Sie auffordert, Ihren API-Schlüssel in die Datei
SDKConstants.swift
für Swift oder in die DateiSDKDemoAPIKey.h
für Objective-C einzugeben. - Rufen Sie einen API-Schlüssel für Ihr Projekt ab, für das das Maps SDK for iOS aktiviert ist.
- Bearbeiten Sie die Datei
SDKConstants.swift
für Swift oder die DateiSDKDemoAPIKey.h
für Objective-C und fügen Sie Ihren API-Schlüssel in die Definition der KonstantenapiKey
oderkAPIKey
ein. Beispiel:Swift
static let apiKey = "YOUR_API_KEY"
Objective-C
static NSString *const kAPIKey = @"YOUR_API_KEY";
- Entfernen Sie in der Datei
SDKConstants.swift
(Swift) oderSDKDemoAPIKey.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.
- Erstellen Sie das Projekt und führen Sie es aus. Das iOS-Simulatorfenster wird geöffnet und zeigt eine Liste mit Maps SDK-Demos an.
- Wählen Sie eine der angezeigten Optionen aus, um eine Funktion des Maps SDK for iOS auszuprobieren.
- Wenn Sie aufgefordert werden, GoogleMapsDemos den Zugriff auf Ihren Standort zu erlauben, wählen Sie Zulassen aus.