Configurare una mappa

Seleziona la piattaforma: Android iOS

Questa panoramica descrive come configurare una mappa aggiunta a un'app per iOS utilizzando Maps SDK for iOS.

Panoramica

Dopo aver aggiunto una mappa alla tua app, puoi configurare le opzioni iniziali e le impostazioni di runtime della mappa. Per maggiori dettagli sull'aggiunta di un contenitore di mappa, consulta Aggiungere una mappa.

Le impostazioni iniziali della mappa includono:

In fase di runtime, puoi configurare queste e alcune impostazioni aggiuntive aggiornando l'oggetto GMSMapView.

Opzioni mappa

Durante l'inizializzazione della visualizzazione mappa, le opzioni di configurazione sono impostate su GMSMapViewOptions. Le proprietà opzione includono frame, camera, mapID o backgroundColor.

Opzioni mappa
cornice
Valore: CGRect
Il frame della mappa. Il valore predefinito è CGRectZero.
fotocamera
Valore: GMSCameraPosition
La posizione predefinita della fotocamera della mappa.
mapID
Valore: GMSMapID
Google mapID. Parametro facoltativo.
backgroundColor
Valore: UIColor
Il valore predefinito è UIColor.lightGray

Configura opzioni della mappa

Puoi impostare le proprietà delle opzioni o passare un'istanza GMSMapViewOptions creata con valori predefiniti direttamente a GMSMapView.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Ecco un esempio di come passare un oggetto GMSMapViewOptions con valori predefiniti direttamente a GMSMapView.

Swift

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

Configura il colore di sfondo

Quando lavori in modalità Buio o passi da una visualizzazione mappa a un'altra, può essere utile sostituire il colore di sfondo predefinito della mappa. A tal fine, imposta la proprietà backgroundColor delle opzioni della mappa.

Swift

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Tipi di mappa

Puoi personalizzare la mappa con uno dei diversi tipi di mappa disponibili. Il tipo di mappa regola la rappresentazione complessiva della mappa. Ad esempio, un atlante di solito contiene mappe politiche che si concentrano sull'indicazione dei confini, mentre mappe strade che mostrano tutte le strade di una città o regione. Maps SDK for iOS offre i seguenti tipi di mappe:

Tipo di mappa
Normale
Valore: kGMSTypeNormal
Mappa stradale tipica. Mostra le strade, alcune caratteristiche costruite da esseri umani e importanti elementi naturali come i fiumi. Sono visibili anche le etichette delle strade e degli elementi.
Ibrido
Valore: kGMSTypeHybrid
Dati delle foto satellitari con l'aggiunta di mappe stradali. Sono visibili anche le etichette delle strade e degli elementi.
Satellite
Valore: kGMSTypeSatellite
Dati delle foto satellitari. Le etichette delle strade e degli elementi non sono visibili.
Terreno
Valore: kGMSTypeTerrain
Dati topografici. La mappa include colori, linee di contorno ed etichette e ombreggiatura prospettica. Sono visibili anche alcune strade ed etichette.
Nessuno
Valore: kGMSTypeNone
Nessun riquadro mappa. I riquadri della mappa base non verranno visualizzati. Questa modalità è utile in combinazione con i livelli dei riquadri. La visualizzazione dei dati sul traffico è disattivata quando il tipo di mappa è impostato su Nessuno.

Modifica del tipo di mappa

Per impostare il tipo di mappa, assegna un nuovo valore alla proprietà GMSMapView.mapType. Ad esempio, per visualizzare un tipo di mappa satellitare:

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

Il selettore di seguito mostra un confronto tra mappe con rilievi, normali e ibride per la stessa località:

Mappe di interni

A livelli di zoom elevati, Maps SDK for iOS mostra le planimetrie degli spazi interni come aeroporti, centri commerciali, grandi negozi e stazioni di trasporto pubblico. Le planimetrie per interni sono integrate nei riquadri predefiniti della mappa per il tipo di mappa "normale" (kGMSTypeNormal) e vengono attivate automaticamente quando l'utente aumenta lo zoom e svaniscono quando la mappa diminuisce.

Puoi disattivare le mappe di interni impostando la proprietà indoorEnabled di GMSMapView su NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

In alternativa, puoi disattivare solo il controllo del selettore di piani.

Aggiunta di planimetrie

Le planimetrie sono disponibili solo in alcune località. Se i dati della planimetria non sono disponibili per un edificio che vuoi mettere in evidenza nella tua applicazione, puoi:

  • Aggiungi le planimetrie direttamente a Google Maps. In questo modo, i tuoi piani sono disponibili per tutti gli utenti di Google Maps.
  • Mostra una pianta del piano come overlay del suolo. Ciò consente solo agli utenti dell'applicazione di visualizzare le tue planimetrie.

Il livello di traffico

Puoi offrire agli utenti la possibilità di visualizzare la mappa con sopra le informazioni sulla densità del traffico. Fornisce un riepilogo visivo della situazione del traffico locale. Puoi attivare e disattivare il livello di traffico chiamando il metodo trafficEnabled. L'esempio seguente mostra come potrebbe apparire il livello di traffico su una mappa.

Una mappa Google che mostra
il livello del traffico

Accessibilità

Per impostazione predefinita, gli elementi di accessibilità sulla mappa sono nascosti. Puoi attivare l'accessibilità impostando la proprietà accessibilityElementsHidden di GMSMapView su NO. In questo modo vengono generati elementi di accessibilità per gli oggetti in overlay (come GMSMarker e finestre informative, GMSPolyline e così via).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Questa proprietà è conforme al protocollo UIAccessibility informale, ad eccezione del fatto che il valore predefinito in Maps SDK for iOS è YES.

La mia località

Per impostazione predefinita, sulla mappa non vengono mostrati dati sulla posizione. Puoi attivare il punto blu "La mia posizione" e la direzione della bussola impostando myLocationEnabled su GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

L'attivazione di questa funzionalità fornisce la posizione corrente dell'utente tramite la proprietà myLocation. Questa proprietà potrebbe non essere immediatamente disponibile, ad esempio se all'utente viene richiesto da iOS di consentire l'accesso a questi dati. In questo caso, è nil.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);
      

Edifici in 3D

Molte città, se viste da vicino, mostrano edifici in 3D, come puoi vedere nell'immagine di Seattle, Washington qui sotto.

Una mappa 3D di edifici a Seattle, Washington.

Puoi disattivare gli edifici in 3D impostando la proprietà GMSMapView corrispondente in Swift o Objective-C, come mostrato di seguito:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Spaziatura interna della mappa

Una mappa di Google Maps è progettata per riempire l'intera regione definita dal GMSMapView. Diversi aspetti dell'aspetto e del comportamento della mappa sono definiti dalle dimensioni della visualizzazione:

  • Il target della fotocamera riflette il centro dell'area coperta.
  • I controlli della mappa sono posizionati in relazione ai bordi della mappa.
  • Informazioni legali, come dichiarazioni sul copyright o il logo Google, appaiono lungo il bordo inferiore della mappa.

Puoi aggiungere una spaziatura interna intorno ai bordi della mappa utilizzando l'GMSMapView.padding. La mappa continua a riempire l'intero contenitore, ma il posizionamento di testo e controllo, i gesti sulla mappa e i movimenti della fotocamera si comportano come se fossero stati collocati in uno spazio più piccolo. Ciò comporta le seguenti modifiche:

  • I movimenti della videocamera tramite chiamate API o pressioni dei pulsanti (ad es. bussola, la mia posizione) si riferiscono all'area coperta.
  • GMSMapView.projection restituisce una proiezione che include solo l'area geografica con padding.
  • L'offset dei controlli UI dal bordo del container è determinato dal numero di punti specificato.

La spaziatura interna può essere utile durante la progettazione di interfacce utente che si sovrappongono in alcune parti della mappa. Ad esempio, nell'immagine la mappa viene riempita lungo i bordi superiore e destro. I controlli della mappa visibili e il testo legale vengono visualizzati lungo i bordi dell'area geografica con spaziatura interna, mostrati in verde, mentre la mappa continua a riempire l'intero container (mostrato in blu). In questo esempio, potresti far scorrere un menu sul lato destro della mappa senza occultare i controlli.

Spaziatura interna mappa

Per aggiungere una spaziatura interna alla mappa, crea un oggetto UIEdgeInsets e passalo a GMSMapView.Proprietà padding.

Swift

// Insets are specified in this order: top, left, bottom, right
let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets
      

Objective-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;