El SDK de Navigation para iOS no sigue automáticamente los modos claro y oscuro del sistema iOS.
En cambio, un `GMSMapView` habilitado para la navegación
GMSMapView
admite esquemas de colores normales y de poca luz a través de su
lightingMode
propiedad y la
GMSNavigationLightingMode
enumeración:
- Modo normal (
.normal): Usa un esquema de colores adecuado para la visualización durante el día. - Modo de poca luz (
.lowLight): Usa un esquema de colores adecuado para la visualización nocturna.
Habilita el cambio automático de modo de iluminación
El SDK de Navigation para iOS calcula el modo de iluminación recomendado según la hora del
día y la ubicación del dispositivo, y lo expone a través de la
suggestedLightingMode
propiedad de
GMSNavigator.
Sin embargo,
GMSMapView
no aplica esta recomendación automáticamente.
Para cambiar entre los modos normal y de poca luz automáticamente, completa los siguientes pasos en tu controlador de vista:
- Establece el modo de iluminación inicial al inicio: Cuando configures el mapa, lee
la
suggestedLightingModepropiedad deGMSNavigatory asigna ese valor amapView.lightingMode. Dado que el objeto de escucha solo se activa cuando cambia el modo de iluminación sugerido (por ejemplo, al amanecer o al atardecer), establecer el valor inicial garantiza que el mapa se renderice en el modo de poca luz de inmediato si el usuario inicia la navegación por la noche. - Detecta los cambios en el modo de iluminación durante la navegación: Adopta el
GMSNavigatorListenerprotocolo y, luego, implementa el métodonavigator(_:didChangeSuggestedLightingMode:)para actualizarmapView.lightingModecada vez que cambie el modo sugerido.
En el siguiente ejemplo, se muestra cómo establecer el modo de iluminación inicial y actualizarlo cuando cambia el modo de iluminación sugerido:
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;
}
Para obtener más información sobre la adopción de
GMSNavigatorListener,
consulta Cómo declarar la conformidad con los protocolos requeridos
en la guía Detecta eventos de navegación.
Fuerza el modo normal o de poca luz
Si no quieres que el mapa cambie de modo automáticamente, puedes forzar el modo normal
o de poca luz configurando
mapView.lightingMode
directamente y omitiendo la
navigator(_:didChangeSuggestedLightingMode:)
actualización del objeto de escucha.
En el siguiente ejemplo, se muestra cómo forzar el mapa al modo normal o de poca luz:
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;
Personaliza los colores de la IU de poca luz
También puedes personalizar los colores de fondo primario y secundario del encabezado de navegación cuando el mapa está en modo de poca luz. Para obtener más información sobre la personalización de estos colores, consulta Colores del encabezado del modo de poca luzen la guía Modifica la IU de navegación.