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 il runtime le impostazioni della mappa. Per maggiori dettagli sull'aggiunta di un contenitore mappa, consulta la sezione Aggiungere un contenitore mappa.
Le impostazioni iniziali della mappa includono:
- La posizione della fotocamera, tra cui: posizione, zoom, orientamento e inclinazione. Consulta Fotocamera e Vista per i dettagli sul posizionamento della videocamera.
- Il colore di sfondo della mappa.
- 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 altre impostazioni aggiuntive
l'aggiornamento
GMSMapView
.
Opzioni mappa
Durante l'inizializzazione della visualizzazione mappa, le opzioni di configurazione vengono impostate con
GMSMapViewOptions
. Le proprietà dell'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 sulla mappa.
|
mapID | Valore:
GMSMapID ID mappa Google. Parametro facoltativo.
|
backgroundColor | Valore:
UIColor Il valore predefinito è UIColor.lightGray
|
Configura opzioni mappa
Puoi impostare le tue proprietà di opzione o passare un'istanza
GMSMapViewOptions
con i valori predefiniti direttamente su 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 passaggio di 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 all'altra, può essere utile:
sostituisci il colore di sfondo predefinito della mappa. A questo scopo, imposta
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 mappe
Puoi personalizzare la mappa con uno dei vari tipi di mappe disponibili. Il tipo di mappa regola la rappresentazione complessiva della mappa. Ad esempio, un atlante di solito contiene mappe politiche incentrate sulla visualizzazione dei confini e mappe stradali che mostrano tutte le strade di una città o di una regione. Maps SDK for iOS offre i seguenti tipi di mappe:
Tipo di mappa | |
---|---|
Normale | Valore:
kGMSTypeNormal Mappa stradale tipica. Mostra le strade, alcune funzionalità create da
esseri umani e importanti caratteristiche naturali come i fiumi. Etichette di strade ed elementi
sono visibili. Supporta l'impostazione della combinazione di colori della mappa su scura, chiara
o le impostazioni di sistema.
|
Ibrido | Valore:
kGMSTypeHybrid Dati delle fotografie satellitari con l'aggiunta di mappe stradali. Strada e elemento
sono visibili anche le etichette. |
Satellite | Valore:
kGMSTypeSatellite Dati delle fotografie satellitari. Le etichette delle strade e degli elementi non sono
visibile.
|
Rilievo | Valore:
kGMSTypeTerrain Dati topografici. La mappa include colori, linee di contorno ed etichette,
e ombreggiatura prospettica. Alcune strade ed etichette sono visibili. Supporta
Impostare la combinazione di colori della mappa su scura, chiara o seguire le impostazioni di sistema.
|
Nessuno | Valore:
kGMSTypeNone Nessun riquadro mappa. I riquadri della mappa base non verranno visualizzati. Questa modalità è
utile in combinazione con tile
strati. 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 a GMSMapView.mapType
proprietà. 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 riportato di seguito mostra un confronto tra terreno, mappe normali e ibride per stessa località:
Mappe di interni
A livelli di zoom elevati, Maps SDK for iOS mostra le planimetrie dei piani
spazi interni come aeroporti, centri commerciali, grandi negozi e servizi di trasporto pubblico
stazioni di servizio. Le planimetrie di interni sono integrate nei riquadri della mappa predefiniti
'normale' tipo di mappa (kGMSTypeNormal
) e vengono attivate automaticamente quando
l'utente aumenta lo zoom e sparisce quando la mappa viene diminuita.
Puoi disattivare le mappe di interni impostando la proprietà indoorEnabled
di
GMSMapView
a NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
In alternativa, puoi disattivare solo Controllo del selettore del piano.
Aggiunta di planimetrie
Le planimetrie sono disponibili in di località. Se i dati relativi alle planimetrie non sono disponibili per un edificio di cui desideri evidenziare nella tua applicazione, puoi:
- Aggiungi piano piani direttamente su Google Maps. In questo modo i piani sono disponibili per tutti gli utenti di Google Maps.
- Mostra la pianta di un piano come overlay al suolo. Ciò consente della tua applicazione per visualizzare le tue planimetrie.
Livello di traffico
Puoi offrire agli utenti la possibilità di visualizzare la mappa con la densità del traffico
informazioni sovrapposte. Fornisce un riepilogo visivo
situazione del traffico locale. Puoi attivare e disattivare il livello del traffico chiamando
il
trafficEnabled
. L'esempio seguente mostra come potrebbe essere visualizzato il livello di traffico su una mappa.
Accessibilità
Per impostazione predefinita, gli elementi di accessibilità sulla mappa sono nascosti. Puoi attivare
accessibilità impostando la proprietà accessibilityElementsHidden
GMSMapView
a NO
. Questo fa sì che vengano generati elementi di accessibilità
oggetti overlay (ad esempio 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 la proprietà
il valore predefinito in Maps SDK for iOS è YES
.
La mia località
Per impostazione predefinita, i dati sulla posizione non vengono mostrati sulla mappa. Puoi attivare l'opzione blu "La mia
Località" la direzione del punto e della bussola impostando myLocationEnabled
su
GMSMapView
.
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
L'attivazione di questa funzione fornisce la posizione corrente dell'utente tramite
myLocation
proprietà. Questa proprietà potrebbe non essere disponibile immediatamente per
Ad esempio, se iOS richiede all'utente di consentire l'accesso a questi dati. È
nil
in questo caso.
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
Edifici 3D
Per molte città, se viste da vicino, gli edifici in 3D saranno visibili. nell'immagine di Seattle, Washington qui sotto.
![Una mappa 3D di edifici a Seattle, Washington.](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=5&hl=it)
Puoi disattivare gli edifici in 3D impostando la corrispondente
GMSMapView
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 è progettata per riempire l'intera regione definita dall'GMSMapView
.
Diversi aspetti dell'aspetto e del comportamento della mappa sono definiti dalle dimensioni
della vista:
- L'obiettivo della fotocamera riflette il centro dell'area imbottita.
- I controlli della mappa sono posizionati rispetto ai bordi della mappa.
- Vengono mostrate informazioni legali, ad esempio dichiarazioni sul copyright o il logo Google lungo il bordo inferiore della mappa.
Puoi aggiungere spaziatura interna intorno ai bordi della mappa utilizzando lo
GMSMapView
.Proprietà padding
. La mappa continua a riempirsi
l'intero contenitore, ma il posizionamento di testo e controlli, i gesti sulla mappa e la fotocamera
movimenti si comportano come se fosse stato collocato in uno spazio più piccolo. Ciò porta
le seguenti modifiche:
- Movimenti della videocamera tramite chiamate API o pressioni di pulsanti (ad es. bussola, location) sono relativi alla regione riempita.
GMSMapView
.projection
restituisce una proiezione che include solo l'elemento riempito regione.- I controlli UI sono spostati dal bordo del container in base al valore il numero di punti.
La spaziatura interna può essere utile quando si progettano UI che si sovrappongono a una parte della mappa. Ad esempio, nell'immagine, la mappa è riempita lungo i bordi superiore e destro. I controlli della mappa visibili e il testo legale vengono visualizzati lungo i bordi dello spazio regione, mostrata in verde, mentre la mappa continua a riempire l'intero container, di colore blu. In questo esempio, potresti far scorrere un menu sul lato destro di sulla mappa senza nascondere i controlli.
Per aggiungere spaziatura interna alla mappa, crea un oggetto UIEdgeInsets
e passalo alla
GMSMapView
.padding
proprietà.
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;
Combinazione di colori della mappa
Per le mappe di tipo normale e rilievo, puoi impostare la combinazione di colori su scuro, spia luminosa o di usare le impostazioni di sistema correnti. Ad esempio, puoi scurire schiarire la combinazione di colori della mappa in base all'ora del giorno o all'uso in ambienti interni o esterni del dispositivo.
Utilizza GMSMapView
overrideUserInterfaceStyle:
per impostare e aggiornare la combinazione di colori della mappa.
Swift
let options = GMSMapViewOptions() // Map is init to use light mode by default. let mapView = GMSMapView(options: options) // Set map to use dark mode. mapView.overrideUserInterfaceStyle = .dark // Set map to use light mode. mapView.overrideUserInterfaceStyle = .light // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = .unspecified
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; // Map is init to always use light mode. GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; // Set map to use dark mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark; // Set map to use light mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;