L'SDK Navigation per iOS non segue automaticamente le modalità Luce e Buio del sistema iOS.
Invece, un GMSMapView con navigazione abilitata supporta combinazioni di colori normali e con scarsa illuminazione tramite la proprietà lightingMode e l'enum GMSNavigationLightingMode:
- Modalità normale (
.normal): utilizza una combinazione di colori adatta alla visualizzazione diurna. - Modalità Luce scarsa (
.lowLight): utilizza una combinazione di colori adatta alla visione notturna.
Attiva il passaggio automatico alla 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 alla modalità Luce scarsa e viceversa, completa i seguenti passaggi nel view controller:
- Imposta la modalità Luce iniziale all'avvio: quando configuri la mappa, leggi la proprietà
suggestedLightingModedaGMSNavigatore assegna questo valore amapView.lightingMode. Poiché il listener si attiva solo quando cambia la modalità di illuminazione suggerita (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 alla modalità di illuminazione durante la navigazione: adotta il protocollo
GMSNavigatorListenere implementa il metodonavigator(_:didChangeSuggestedLightingMode:)per aggiornaremapView.lightingModeogni volta che la modalità suggerita cambia.
L'esempio seguente mostra come impostare la modalità Luce iniziale e aggiornarla quando cambia la modalità Luce 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 Dichiarazione di conformità ai protocolli
richiesti
nella guida Ascolta gli eventi di navigazione.
Forza la modalità normale o Luce scarsa
Se non vuoi che la mappa cambi modalità automaticamente, puoi forzare la modalità normale o con scarsa illuminazione impostando mapView.lightingMode direttamente e omettendo l'aggiornamento del listener navigator(_:didChangeSuggestedLightingMode:).
L'esempio seguente mostra come forzare la mappa in modalità Luce scarsa 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;
Personalizza i colori dell'interfaccia utente in condizioni di scarsa illuminazione
Puoi anche personalizzare i colori di sfondo principale e secondario dell'intestazione di navigazione quando la mappa è in modalità Luce scarsa. Per saperne di più sulla personalizzazione di questi colori, consulta Colori dell'intestazione della modalità Luce scarsa nella guida Modifica l'interfaccia utente di navigazione.