Normal- und Modus für wenig Licht konfigurieren

Das Navigation SDK for iOS folgt nicht automatisch dem hellen und dunklen Modus des iOS-Systems. Stattdessen unterstützt ein navigationsfähiges GMSMapView normale und schwache Farbschemata über die Property lightingMode und das Enum GMSNavigationLightingMode:

  • Normaler Modus (.normal): Verwendet ein Farbschema, das für die Anzeige bei Tageslicht geeignet ist.
  • Modus für wenig Licht (.lowLight): Verwendet ein Farbschema, das für die Nachtansicht geeignet ist.

Automatischen Wechsel des Beleuchtungsmodus aktivieren

Das Navigation SDK for iOS berechnet den empfohlenen Beleuchtungsmodus anhand der Tageszeit und des Gerätestandorts und stellt ihn über das Attribut suggestedLightingMode von GMSNavigator bereit. GMSMapView wendet diese Empfehlung jedoch nicht automatisch an.

Führen Sie die folgenden Schritte in Ihrem Ansichts-Controller aus, um automatisch zwischen dem normalen Modus und dem Modus für wenig Licht zu wechseln:

  1. Anfänglichen Beleuchtungsmodus beim Start festlegen: Lesen Sie beim Einrichten der Karte die Property suggestedLightingMode aus GMSNavigator und weisen Sie diesen Wert mapView.lightingMode zu. Da der Listener nur ausgelöst wird, wenn sich der vorgeschlagene Beleuchtungsmodus ändert (z. B. bei Sonnenaufgang oder Sonnenuntergang), wird durch das Festlegen des Anfangswerts dafür gesorgt, dass die Karte sofort im Modus für wenig Licht gerendert wird, wenn der Nutzer die Navigation nachts startet.
  2. Änderungen des Beleuchtungsmodus während der Navigation erkennen: Übernehmen Sie das Protokoll GMSNavigatorListener und implementieren Sie die Methode navigator(_:didChangeSuggestedLightingMode:), um mapView.lightingMode zu aktualisieren, wenn sich der vorgeschlagene Modus ändert.

Im folgenden Beispiel wird gezeigt, wie Sie den anfänglichen Beleuchtungsmodus festlegen und aktualisieren, wenn sich der vorgeschlagene Beleuchtungsmodus ändert:

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

Weitere Informationen zur Übernahme von GMSNavigatorListener finden Sie im Leitfaden „Auf Navigationsereignisse warten“ unter Konformität mit den erforderlichen Protokollen deklarieren.

Normalen Modus oder Modus für wenig Licht erzwingen

Wenn Sie nicht möchten, dass die Karte automatisch den Modus wechselt, können Sie den normalen Modus oder den Modus für wenig Licht erzwingen, indem Sie mapView.lightingMode direkt festlegen und die Listener-Aktualisierung navigator(_:didChangeSuggestedLightingMode:) weglassen.

Im folgenden Beispiel wird gezeigt, wie Sie die Karte in den Nacht- oder Tagmodus versetzen:

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;

UI-Farben bei schlechten Lichtverhältnissen anpassen

Sie können auch die primären und sekundären Hintergrundfarben des Navigationsheaders anpassen, wenn sich die Karte im Modus für wenig Licht befindet. Weitere Informationen zum Anpassen dieser Farben finden Sie im Leitfaden „Navigations-UI ändern“ unter Kopffarben im Modus für wenig Licht.