Aggiungere una mappa con un indicatore

Questo tutorial mostra come aggiungere una semplice mappa di Google con un indicatore alla tua app per iOS. È adatto a chi ha conoscenze iniziali o intermedie di Swift o Objective-C, oltre a una conoscenza generale di Xcode. Per una guida avanzata alla creazione di mappe, leggi la guida per gli sviluppatori.

Con questo tutorial creerai la seguente mappa. L'indicatore è posizionato a Sydney, Australia.

Uno screenshot che mostra una mappa con un indicatore su Sydney

Ottieni il codice

Clona o scarica il repository di esempi di Google Maps per iOS su GitHub.

In alternativa, fai clic sul seguente pulsante per scaricare il codice sorgente:

Dammi il codice

Swift

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.
        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        let mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}
      

Objective-C

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                          longitude:151.20
                                                               zoom:6];
  GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera];
  mapView.myLocationEnabled = YES;
  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end
      

Inizia

Swift Package Manager

Maps SDK for iOS può essere installato utilizzando Swift Package Manager.

  1. Assicurati di aver rimosso eventuali dipendenze di Maps SDK for iOS esistenti.
  2. Apri una finestra del terminale e vai alla directory tutorials/map-with-marker.
  3. Assicurati che l'area di lavoro Xcode sia chiusa ed esegui i seguenti comandi:
    sudo gem install cocoapods-deintegrate cocoapods-clean
    pod deintegrate
    pod cache clean --all
    rm Podfile
    rm map-with-marker.xcworkspace
  4. Apri il progetto Xcode ed elimina il file Podfile.
  5. Vai a File > Aggiungi dipendenze del pacchetto.
  6. Inserisci https://github.com/googlemaps/ios-maps-sdk come URL, premi Invio per importare il pacchetto e fai clic su Aggiungi pacchetto.
  7. Potresti dover reimpostare la cache dei pacchetti utilizzando File > Pacchetti > Reimposta cache dei pacchetti.

Utilizzare CocoaPods

  1. Scarica e installa Xcode versione 15.0 o successive.
  2. Se non hai già CocoaPods, installalo su macOS eseguendo il seguente comando dal terminale:
    sudo gem install cocoapods
  3. Vai alla directory tutorials/map-with-marker.
  4. Esegui il comando pod install. Verrà installato l'SDK Maps specificato in Podfile, insieme a eventuali dipendenze.
  5. Esegui pod outdated per confrontare la versione del pod installata con eventuali nuovi aggiornamenti. Se viene rilevata una nuova versione, esegui pod update per aggiornare Podfile e installare l'SDK più recente. Per maggiori dettagli, consulta la guida di CocoaPods.
  6. Apri (fai doppio clic) il file map-with-marker.xcworkspace del progetto per aprirlo in Xcode. Per aprire il progetto, devi utilizzare il file .xcworkspace.

Ottieni una chiave API e abilita le API necessarie

Per completare questo tutorial, devi disporre di una chiave API Google autorizzata all'uso dell'SDK Maps per iOS. Fai clic sul pulsante seguente per ottenere una chiave e attivare l'API.

Inizia

Per maggiori dettagli, consulta Ottenere una chiave API.

Aggiungi la chiave API all'applicazione

Aggiungi la chiave API a AppDelegate.swift come segue:

  1. Tieni presente che al file è stata aggiunta la seguente istruzione di importazione:
    import GoogleMaps
  2. Modifica la riga seguente nel metodo application(_:didFinishLaunchingWithOptions:) sostituendo YOUR_API_KEY con la tua chiave API:
    GMSServices.provideAPIKey("YOUR_API_KEY")

Crea ed esegui la tua app

  1. Collega un dispositivo iOS al computer o seleziona un simulatore dal menu dello schema di Xcode.
  2. Se utilizzi un dispositivo, assicurati che i servizi di geolocalizzazione siano attivi. Se utilizzi un simulatore, seleziona una località dal menu Funzionalità.
  3. In Xcode, fai clic sull'opzione di menu Prodotto/Esegui (o sull'icona del pulsante di riproduzione).
    • Xcode compila l'app e poi la esegue sul dispositivo o sul simulatore.
    • Dovresti vedere una mappa con un indicatore centrato su Sydney, sulla costa orientale dell'Australia, simile all'immagine in questa pagina.

Risoluzione dei problemi:

  • Se non vedi una mappa, verifica di aver ottenuto una chiave API e di averla aggiunta all'app come descritto in precedenza. Controlla la console di debug di Xcode per verificare la presenza di messaggi di errore relativi alla chiave API.
  • Se hai limitato la chiave API in base all'identificatore del pacchetto iOS, modifica la chiave per aggiungere l'identificatore del pacchetto per l'app:com.google.examples.map-with-marker.
  • Assicurati di avere una buona connessione Wi-Fi o GPS.
  • Utilizza gli strumenti di debug di Xcode per visualizzare i log e eseguire il debug dell'app.

comprendi il codice

  1. Crea una mappa e impostala come vista in viewDidLoad().

    Swift

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
    view = mapView
          

    Objective-C

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                            longitude:151.20
                                                                 zoom:6.0];
    GMSMapView *mapView = [[GMSMapView alloc] initWithFrame: CGRectZero camera:camera];
    self.view = mapView;
          
  2. Aggiungi un indicatore alla mappa in viewDidLoad().

    Swift

    // Creates a marker in the center of the map.
    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
    marker.title = "Sydney"
    marker.snippet = "Australia"
    marker.map = mapView
          

    Objective-C

    // Creates a marker in the center of the map.
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
    marker.title = @"Sydney";
    marker.snippet = @"Australia";
    marker.map = mapView;
          

Per impostazione predefinita, Maps SDK per iOS mostra i contenuti della finestra informativa quando l'utente tocca un indicatore. Non è necessario aggiungere un gestore degli eventi di clic per il marker se vuoi utilizzare il comportamento predefinito.

Complimenti! Hai creato un'app per iOS che mostra una mappa di Google con un indicatore per indicare una determinata posizione. Hai anche imparato a utilizzare Maps SDK for iOS.

Passaggi successivi

Scopri di più sull'oggetto mappa e su cosa puoi fare con i indicatori.