Konfigurowanie trybu normalnego i trybu słabego oświetlenia

Pakiet SDK do nawigacji na iOS nie przełącza się automatycznie między trybem jasnym a ciemnym systemu iOS. Zamiast tego `GMSMapView` z włączoną nawigacją GMSMapView obsługuje schematy kolorów w trybie normalnym i słabego oświetlenia 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 jasny na podstawie pory dnia i lokalizacji urządzenia oraz udostępnia go za pomocą właściwości suggestedLightingMode GMSNavigator. Jednak GMSMapView nie stosuje tej rekomendacji automatycznie.

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

  1. Ustaw początkowy tryb jasny podczas uruchamiania: podczas konfigurowania mapy odczytaj właściwość suggestedLightingMode z GMSNavigator i przypisz tę wartość do mapView.lightingMode. Ponieważ detektor uruchamia się tylko wtedy, gdy zmieni się sugerowany tryb oświetlenia (np. o wschodzie lub zachodzie słońca), ustawienie wartości początkowej zapewnia, że mapa będzie renderowana w trybie słabego oświetlenia, jeśli użytkownik rozpocznie nawigację w nocy.
  2. Nasłuchuj zmian trybu oświetlenia podczas nawigacji: zastosuj protokół GMSNavigatorListener i zaimplementuj metodę navigator(_:didChangeSuggestedLightingMode:) , aby aktualizować 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 stosowaniu GMSNavigatorListener, znajdziesz w artykule Deklarowanie zgodności z wymaganymi protokołami w przewodniku Nasłuchiwanie zdarzeń nawigacji.

Wymuszanie trybu normalnego lub słabego oświetlenia

Jeśli nie chcesz, aby mapa automatycznie przełączała tryby, możesz wymusić tryb normalny lub słabego oświetlenia, ustawiając mapView.lightingMode bezpośrednio i pomijając aktualizację detektora navigator(_:didChangeSuggestedLightingMode:).

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

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 w trybie słabego oświetlenia

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 artykule Kolory nagłówka w trybie słabego oświetlenia w przewodniku Modyfikowanie interfejsu nawigacji.