Configurare le modalità normale e Luce scarsa

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:

  1. Imposta la modalità di illuminazione iniziale all'avvio: quando configuri la mappa, leggi la proprietà suggestedLightingMode da GMSNavigator e assegna questo valore a mapView.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.
  2. Ascolta le modifiche alla modalità di illuminazione durante la navigazione: adotta il GMSNavigatorListener protocollo 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à 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.