L'SDK Navigation per iOS non segue automaticamente le modalità Chiaro e Buio del sistema iOS.
Al contrario, un
GMSMapView
con navigazione supporta schemi di colori normali 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 alla luce del giorno. - Modalità Luce scarsa (
.lowLight): Utilizza una combinazione di colori adatta alla visione notturna.
Attivare il cambio automatico della modalità di illuminazione
L'SDK Navigation per iOS calcola la modalità di illuminazione consigliata in base all'ora del giorno e alla posizione del dispositivo e la espone tramite la proprietà suggestedLightingMode 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 di visualizzazione:
- Imposta la modalità di illuminazione iniziale all'avvio: quando configuri la mappa, leggi
la proprietà
suggestedLightingModedaGMSNavigatore assegna questo valore amapView.lightingMode. Poiché il listener viene attivato 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à di scarsa illuminazione se l'utente inizia la navigazione di notte. - Ascolta le modifiche alla modalità di illuminazione durante la navigazione: adotta il
GMSNavigatorListenerprotocollo e implementa il metodonavigator(_:didChangeSuggestedLightingMode:)per aggiornaremapView.lightingModeogni volta che la modalità suggerita cambia.
L'esempio seguente mostra come impostare la modalità di illuminazione iniziale e aggiornarla quando cambia la modalità di illuminazione suggerita:
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 Dichiarare la conformità ai protocolli
richiesti
nella guida Ascoltare gli eventi di navigazione.
Forzare la modalità normale o Luce scarsa
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:).
Il seguente esempio mostra come forzare la modalità di visualizzazione della mappa 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à con scarsa illuminazione. Per saperne di più sulla personalizzazione di questi colori, consulta Colori dell'intestazione della modalità Buio nella guida Modificare l'interfaccia utente di navigazione.