Configurare le modalità normale e Luce scarsa

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:

  1. Imposta la modalità Luce iniziale all'avvio: quando configuri la mappa, leggi la proprietà suggestedLightingMode da GMSNavigator e assegna questo valore a mapView.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.
  2. Ascolta le modifiche alla modalità di illuminazione durante la navigazione: adotta il protocollo GMSNavigatorListener e implementa il metodo navigator(_:didChangeSuggestedLightingMode:) per aggiornare mapView.lightingMode ogni 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.