L'SDK Navigation per iOS non segue automaticamente le modalità Luce e Buio del sistema iOS.
Un abilitato alla navigazione
GMSMapView
supporta invece le combinazioni di colori normale e in condizioni di scarsa illuminazione tramite la proprietà
lightingMode
e l'enumerazione
GMSNavigationLightingMode:
- Modalità normale (
.normal): utilizza una combinazione di colori adatta alla visualizzazione diurna. - Modalità in condizioni di scarsa illuminazione (
.lowLight): utilizza una combinazione di colori adatta alla visualizzazione notturna.
Attivare il passaggio automatico alla modalità Luce
L'SDK Navigation per iOS calcola la modalità Luce consigliata in base all'ora del giorno e alla posizione del dispositivo e la espone tramite la
suggestedLightingMode
proprietà di
GMSNavigator.
Tuttavia,
GMSMapView
non applica automaticamente questo consiglio.
Per passare automaticamente dalla modalità normale a quella in condizioni di scarsa illuminazione, completa i seguenti passaggi nel controller della visualizzazione:
- Imposta la modalità Luce iniziale all'avvio: quando configuri la mappa, leggi
la
suggestedLightingModeproprietà daGMSNavigatore assegna questo valore amapView.lightingMode. Poiché il listener si attiva solo quando la modalità di illuminazione suggerita cambia (ad esempio all'alba o al tramonto), l'impostazione del valore iniziale garantisce che la mappa venga visualizzata immediatamente in modalità Luce scarsa se l'utente avvia la navigazione di notte. - Ascolta le modifiche della modalità di illuminazione durante la navigazione: adotta il
GMSNavigatorListenerprotocollo e implementa ilnavigator(_:didChangeSuggestedLightingMode:)metodo per aggiornaremapView.lightingModeogni volta che la modalità suggerita cambia.
L'esempio seguente mostra come impostare la modalità Luce iniziale e aggiornarla quando la modalità Luce suggerita cambia:
Swift
// Step 1: Set the initial lighting mode on launch or setup.
mapView.navigator?.add(self)
mapView.lightingMode = mapView.navigator?.suggestedLightingMode ?? .normal
// Step 2: Update the lighting mode when the sun sets or rises during navigation.
func navigator(
_ navigator: GMSNavigator,
didChangeSuggestedLightingMode lightingMode: GMSNavigationLightingMode
) {
mapView.lightingMode = lightingMode
}
Objective-C
// Step 1: Set the initial lighting mode on launch or setup.
[_mapView.navigator addListener:self];
_mapView.lightingMode = _mapView.navigator.suggestedLightingMode;
// Step 2: Update the lighting mode when the sun sets or rises during navigation.
- (void)navigator:(GMSNavigator *)navigator
didChangeSuggestedLightingMode:(GMSNavigationLightingMode)lightingMode {
_mapView.lightingMode = lightingMode;
}
Per saperne di più sull'adozione di
GMSNavigatorListener,
consulta la sezione Dichiarare la conformità ai protocolli richiesti
nella guida Ascoltare gli eventi di navigazione.
Forzare la modalità normale o in condizioni di scarsa illuminazione
Se non vuoi che la mappa cambi modalità automaticamente, puoi forzare la modalità normale
o in condizioni di scarsa illuminazione impostando
mapView.lightingMode
direttamente e omettendo l'aggiornamento del listener
navigator(_:didChangeSuggestedLightingMode:).
L'esempio seguente mostra come forzare la mappa in modalità in condizioni di scarsa illuminazione o normale:
Swift
// Force low-light mode.
mapView.lightingMode = .lowLight
// Or force normal (daylight) mode.
mapView.lightingMode = .normal
Objective-C
// Force low-light mode.
_mapView.lightingMode = GMSNavigationLightingModeLowLight;
// Or force normal (daylight) mode.
_mapView.lightingMode = GMSNavigationLightingModeNormal;
Personalizzare i colori dell'interfaccia utente in condizioni di scarsa illuminazione
Puoi anche personalizzare i colori di sfondo primario e secondario dell'intestazione di navigazione quando la mappa è in modalità in condizioni di scarsa illuminazione. Per saperne di più sulla personalizzazione di questi colori, consulta la sezione Colori dell'intestazione in modalità in condizioni di scarsa illuminazione nella guida Modificare l'interfaccia utente di navigazione.