Konfigurowanie trybu normalnego i trybu słabego oświetlenia

Pakiet SDK do nawigacji na iOS nie dostosowuje się automatycznie do trybu jasnego i ciemnego w systemie iOS. Zamiast tego nawigacjaGMSMapView obsługuje schematy kolorów normalne i przy słabym oświetleniu za pomocą właściwości lightingMode i wyliczenia GMSNavigationLightingMode:

  • Tryb normalny (.normal): używa schematu kolorów odpowiedniego do oglądania w świetle dziennym.
  • Tryb słabego oświetlenia (.lowLight): używa schematu kolorów odpowiedniego do oglądania w nocy.

Włączanie automatycznego przełączania trybu oświetlenia

Pakiet SDK do nawigacji na iOS oblicza zalecany tryb oświetlenia na podstawie pory dnia i lokalizacji urządzenia, a następnie udostępnia go za pomocą właściwości suggestedLightingMode obiektu GMSNavigator. Nie stosuje jednak tej rekomendacji automatycznie.GMSMapView

Aby automatycznie przełączać się między trybem normalnym a trybem słabego oświetlenia, wykonaj te czynności w kontrolerze widoku:

  1. Ustawianie początkowego trybu oświetlenia podczas uruchamiania: podczas konfigurowania mapy odczytaj właściwość suggestedLightingMode z GMSNavigator i przypisz tę wartość do mapView.lightingMode. Słuchacz uruchamia się tylko wtedy, gdy zmienia się sugerowany tryb oświetlenia (np. o wschodzie lub zachodzie słońca), więc ustawienie wartości początkowej zapewnia natychmiastowe renderowanie mapy w trybie słabego oświetlenia, jeśli użytkownik rozpocznie nawigację w nocy.
  2. Nasłuchiwanie zmian trybu oświetlenia podczas nawigacji: zastosuj protokół GMSNavigatorListener i zastosuj metodę navigator(_:didChangeSuggestedLightingMode:) do aktualizowania mapView.lightingMode za każdym razem, gdy zmieni się sugerowany tryb.

Poniższy przykład pokazuje, jak ustawić początkowy tryb oświetlenia i zaktualizować go, gdy zmieni się sugerowany tryb oświetlenia:

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;
}

Więcej informacji o wdrażaniu GMSNavigatorListener znajdziesz w przewodniku Deklarowanie zgodności z wymaganymi protokołami w sekcji Słuchanie zdarzeń nawigacji.

Wymuszanie trybu normalnego lub słabego oświetlenia

Jeśli nie chcesz, aby mapa automatycznie przełączała się między trybami, możesz wymusić tryb normalny lub tryb przy słabym oświetleniu, ustawiając bezpośrednio wartość mapView.lightingMode i pomijając aktualizację odbiornika navigator(_:didChangeSuggestedLightingMode:).

Poniższy przykład pokazuje, jak wymusić tryb słabego oświetlenia lub tryb normalny:

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;

Dostosowywanie kolorów interfejsu przy słabym oświetleniu

Możesz też dostosować podstawowy i dodatkowy kolor tła nagłówka nawigacji, gdy mapa jest w trybie słabego oświetlenia. Więcej informacji o dostosowywaniu tych kolorów znajdziesz w sekcji Kolory nagłówka w trybie słabego oświetlenia w przewodniku Modyfikowanie interfejsu nawigacji.