Normal- und Modus für wenig Licht konfigurieren

Das Navigation SDK for iOS folgt nicht automatisch den hellen und dunklen Modi des iOS-Systems. Stattdessen unterstützt eine navigationsfähige GMSMapView normale und Low-Light-Farbschemas über die Eigenschaft lightingMode und die Enum GMSNavigationLightingMode:

  • Normaler Modus (.normal): Verwendet ein Farbschema, das für die Anzeige bei Tageslicht geeignet ist.
  • Low-Light-Modus (.lowLight): Verwendet ein Farbschema, das für die Anzeige bei Nacht geeignet ist.

Automatisches Umschalten des Beleuchtungsmodus aktivieren

Das Navigation SDK for iOS berechnet den empfohlenen Beleuchtungsmodus basierend auf der Tageszeit und dem Standort des Geräts und stellt ihn über die suggestedLightingMode Eigenschaft von GMSNavigatorzur Verfügung. GMSMapView wendet diese Empfehlung jedoch nicht automatisch an.

So wechseln Sie automatisch zwischen dem normalen und dem Low-Light-Modus: Führen Sie die folgenden Schritte in Ihrem Ansichtscontroller aus:

  1. Anfangsbeleuchtungsmodus beim Start festlegen: Wenn Sie die Karte einrichten, lesen Sie die suggestedLightingMode Eigenschaft aus GMSNavigator und weisen Sie diesen Wert mapView.lightingModezu. Da der Listener nur ausgelöst wird, wenn sich der empfohlene Beleuchtungsmodus ändert (z. B. bei Sonnenaufgang oder Sonnenuntergang), wird durch das Festlegen des Anfangswerts sichergestellt, dass die Karte sofort im Low-Light-Modus gerendert wird, wenn der Nutzer die Navigation nachts startet.
  2. Auf Änderungen des Beleuchtungsmodus während der Navigation warten: Übernehmen Sie das GMSNavigatorListener Protokoll und implementieren Sie die navigator(_:didChangeSuggestedLightingMode:) Methode, um mapView.lightingMode immer dann zu aktualisieren, wenn sich der empfohlene Modus ändert.

Im folgenden Beispiel wird gezeigt, wie Sie den anfänglichen Beleuchtungsmodus festlegen und aktualisieren, wenn sich der empfohlene 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 oder Low-Light-Modus erzwingen

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

Im folgenden Beispiel wird gezeigt, wie Sie den Low-Light- oder normalen Modus für die Karte erzwingen:

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;

Farben der Benutzeroberfläche im Low-Light-Modus anpassen

Sie können auch die primären und sekundären Hintergrundfarben der Navigationskopfzeile anpassen, wenn sich die Karte im Low-Light-Modus befindet. Weitere Informationen zum Anpassen dieser Farben finden Sie im Leitfaden Navigationsbenutzeroberfläche ändern unter Farben der Kopfzeile im Low-Light-Modus.