Configurare le modalità normale e Luce scarsa

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:

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