Geocodifica invertita una località

Sviluppatori dello Spazio economico europeo (SEE)

  Quando la mappa viene premuta a lungo, le coordinate del gesto vengono inviate al servizio di geocoding inverso. Se l'operazione va a buon fine, alla mappa viene aggiunto un indicatore con una finestra informativa contenente il risultato.

Inizia

Prima di poter provare il codice di esempio, devi configurare l'ambiente di sviluppo. Per ulteriori informazioni, consulta Esempi di codice di Maps SDK for iOS.

Visualizzare il codice

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       

Esegui l'app di esempio completa in locale

L'app di esempio dell'SDK Maps per iOS è disponibile come archivio di download da GitHub. Segui questi passaggi per installare e provare l'app di esempio Maps SDK for iOS.

  1. Esegui git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git per clonare il repository di esempi in una directory locale.
  2. Apri una finestra del terminale, vai alla directory in cui hai clonato i file di esempio e vai alla directory 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. In Xcode, premi il pulsante di compilazione per creare l'app con lo schema corrente. La build genera un errore, che ti chiede di inserire la chiave API nel file SDKConstants.swift per Swift o nel fileSDKDemoAPIKey.h per Objective-C.
  4. Recupera una chiave API dal tuo progetto con l'SDK Maps per iOS attivato.
  5. Modifica il file SDKConstants.swift per Swift o il file SDKDemoAPIKey.h per Objective-C e incolla la chiave API nella definizione della costante apiKey o kAPIKey. Ad esempio:

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. Nel file SDKConstants.swift (Swift) oSDKDemoAPIKey.h (Objective-C), rimuovi la seguente riga, perché viene utilizzata per registrare il problema definito dall'utente:

    Swift

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

    Objective-C

    #error Register for API Key and insert here.
  7. Crea ed esegui il progetto. Viene visualizzata la finestra del simulatore iOS, che mostra un elenco di demo di Maps SDK.
  8. Scegli una delle opzioni visualizzate per sperimentare una funzionalità di Maps SDK for iOS.
  9. Se ti viene chiesto di consentire a GoogleMapsDemos di accedere alla tua posizione, scegli Consenti.