Das Navigation SDK for iOS folgt nicht automatisch dem hellen und dunklen Modus des iOS-Systems.
Stattdessen unterstützt ein für die Navigation optimiertes GMSMapView über die Eigenschaft lightingMode und die Enum-Klasse GMSNavigationLightingMode Farbschemas für normale und schlechte Lichtverhältnisse:
- Normalmodus (
.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 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 macht ihn über die Eigenschaft suggestedLightingMode von GMSNavigator verfügbar.
Allerdings wird diese Empfehlung bei GMSMapView nicht automatisch angewendet.
So wechselst du automatisch zwischen dem normalen Modus und dem Modus für wenig Licht:
- Anfänglichen Beleuchtungsmodus beim Start festlegen: Wenn Sie die Karte einrichten, lesen Sie die Eigenschaft
suggestedLightingModeausGMSNavigatorund weisen Sie diesen WertmapView.lightingModezu. 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 sichergestellt, dass die Karte sofort im Modus für schwaches Licht gerendert wird, wenn der Nutzer die Navigation nachts startet. - Während der Navigation auf Änderungen des Beleuchtungsmodus achten: Übernehmen Sie das
GMSNavigatorListener-Protokoll und implementieren Sie dienavigator(_:didChangeSuggestedLightingMode:)-Methode, ummapView.lightingModezu aktualisieren, wenn sich der vorgeschlagene Modus ändert.
Im folgenden Beispiel wird gezeigt, wie der anfängliche Beleuchtungsmodus festgelegt und aktualisiert wird, 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 Verwendung von GMSNavigatorListener finden Sie im Leitfaden Konformität mit den erforderlichen Protokollen deklarieren unter „Auf Navigationsereignisse warten“.
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 schlechte Lichtverhältnisse erzwingen, indem Sie mapView.lightingMode direkt festlegen und die navigator(_:didChangeSuggestedLightingMode:)-Listener-Aktualisierung weglassen.
Das folgende Beispiel zeigt, wie Sie die Karte in den Modus für schwaches Licht oder in den normalen Modus zwingen:
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 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 anpassen“ unter Headerfarben für den Modus für schwaches Licht.