Questo argomento descrive come configurare una mappa che è stata aggiunta a un'app per iOS utilizzando l'SDK Maps per iOS.
Panoramica
Dopo aver aggiunto una mappa all'app, puoi configurare le impostazioni iniziali e di runtime della mappa. Per dettagli sull'aggiunta di un contenitore della mappa, consulta la sezione Aggiungere una mappa.
Le impostazioni iniziali della mappa includono:
- La posizione della fotocamera, inclusa la posizione, lo zoom, il rilevamento e l'inclinazione. Consulta la sezione Videocamera e vista per informazioni dettagliate sul posizionamento della videocamera.
- Il tipo di mappa.
- I componenti dell'interfaccia utente da visualizzare, come i pulsanti di zoom e la bussola.
- I gesti da attivare.
In fase di runtime puoi configurare queste impostazioni e alcune impostazioni aggiuntive aggiornando
l'oggetto GMSMapView
.
Tipi di mappe
Puoi personalizzare la mappa con uno di diversi tipi. Il tipo di una mappa regola la rappresentazione complessiva della mappa. Ad esempio, un atlante contiene in genere mappe politiche incentrate sulla visualizzazione dei confini e mappe stradali che mostrano tutte le strade di una città o di un'area geografica. L'SDK Maps per iOS offre i seguenti tipi di mappe:
Tipo di mappa | |
---|---|
Normale | Valore:
kGMSTypeNormal Mappa stradale standard. Mostra strade, alcuni elementi realizzati dagli esseri umani e importanti caratteristiche naturali come i fiumi. Sono visibili anche le etichette
di strade e caratteristiche.
|
Ambiente ibrido | Valore:
kGMSTypeHybrid Dati delle fotografie satellitari aggiunti alle mappe stradali. Sono visibili anche le etichette della strada e dell'elemento. |
Satellite | Valore:
kGMSTypeSatellite Dati delle fotografie satellitari. Le etichette della strada e degli elementi non sono visibili.
|
Rilievo | 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 di base non verranno visualizzati. Questa modalità è utile in combinazione con i livelli di riquadri. La visualizzazione dei dati sul traffico sarà disattivata quando il tipo di mappa è impostato su nessuno. |
Modificare il tipo di mappa
Per impostare il tipo di una mappa, assegna un nuovo valore alla proprietà GMSMapView.mapType
. Ad esempio, per visualizzare un tipo di mappa satellitare:
Swift
let camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.mapType = .satellite
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.mapType = kGMSTypeSatellite;
Il selettore di seguito mostra un confronto tra rilievi, mappe normali e ibride per la stessa località:
Mappe di interni
A livelli di zoom elevati, l'SDK Maps per iOS mostra le planimetrie di spazi interni come aeroporti, centri commerciali, grandi negozi e stazioni di transito. Le planimetrie di 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 viene diminuita.
Puoi disattivare le mappe interne 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 del piano.
Aggiungere planimetrie
Le planimetrie sono disponibili in alcune località. Se i dati della planimetria non sono disponibili per un edificio che vuoi mettere in evidenza nella tua applicazione, puoi:
- Aggiungere direttamente le planimetrie a Google Maps. In questo modo, i piani saranno disponibili per tutti gli utenti di Google Maps.
- Mostra una planimetria come un overlay del suolo. Ciò consentirà solo agli utenti della tua applicazione di visualizzare le tue planimetrie.
Livello di traffico
Puoi consentire agli utenti di visualizzare la mappa con informazioni sulla densità di traffico sovrapposte. Fornisce un riepilogo visivo della situazione del traffico locale. Puoi attivare e disattivare il livello del traffico chiamando il metodo trafficEnabled
. L'esempio seguente mostra come potrebbe apparire il livello traffico su una mappa.
Accessibilità
Per impostazione predefinita, gli elementi di accessibilità sulla mappa sono nascosti. Puoi abilitare
l'accessibilità impostando la proprietà accessibilityElementsHidden
di
GMSMapView
su NO
. Di conseguenza, gli elementi di accessibilità verranno generati per gli oggetti in overlay (ad esempio GMSMarker
e finestre informative GMSPolyline
ecc.).
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
Questa proprietà segue il protocollo UIAccessibility
informale, ad eccezione del fatto che
il valore predefinito nell'SDK di Maps per iOS è YES
.
La mia posizione
Per impostazione predefinita, sulla mappa non vengono mostrati dati sulla posizione. Puoi attivare il punto blu "La mia posizione" e la direzione bussola impostando myLocationEnabled
su GMSMapView
.
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
L'attivazione di questa funzionalità fornisce la posizione attuale dell'utente anche tramite la proprietà myLocation
. Questa proprietà potrebbe non essere immediatamente disponibile, ad esempio se iOS richiede all'utente di consentire l'accesso a questi dati. In questo caso sarà nullo.
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
Edifici 3D
Molte città, se osservate da vicino, hanno edifici 3D visibili, come nell'immagine di Seattle, Washington sotto.

Puoi disattivare gli edifici 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 mappa
Una mappa di Google Maps è progettata per riempire l'intera regione definita da GMSMapView
. Le dimensioni della vista definiscono vari aspetti del modo in cui la mappa viene visualizzata e si comporta:
- Il target della videocamera rifletterà il centro della regione imbottita.
- I controlli mappa sono posizionati in base ai bordi della mappa.
- Le informazioni legali, come le dichiarazioni sul copyright o il logo di Google, vengono visualizzate sul bordo inferiore della mappa.
Puoi aggiungere una spaziatura interna intorno ai bordi della mappa utilizzando GMSMapView
.padding
. La mappa continuerà a riempire l'intero contenitore, ma il posizionamento del testo e dei controlli, i gesti delle mappe e i movimenti della videocamera si comporteranno come se fossero stati posizionati in uno spazio più piccolo. Questo comporta le seguenti modifiche:
- I movimenti della videocamera tramite chiamate API o pressioni di pulsanti (ad esempio bussola, la mia posizione) saranno relativi alla regione imbottita.
GMSMapView
.projection
restituirà una proiezione che include solo l'area geografica riempita.- I controlli dell'interfaccia utente verranno offset dal bordo del container in base al numero di punti specificato.
La spaziatura interna può essere utile nella progettazione di interfacce utente che si sovrappongono ad alcune parti della mappa. Ad esempio, nell'immagine seguente, la mappa viene riempita lungo i bordi superiore e destro. I controlli e il testo legale visibili della mappa verranno visualizzati lungo i bordi della regione imbottita, mostrata in verde, mentre la mappa continuerà a riempire l'intero contenitore, mostrata in blu. In questo esempio, puoi rendere mobile un menu sul lato destro della mappa senza oscurare i controlli della mappa.
Per aggiungere una spaziatura interna alla mappa, crea un oggetto UIEdgeInsets
e passalo a
GMSMapView
.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;