Configurar os modos normal e pouca luz

O SDK Navigation para iOS não segue automaticamente os modos claro e escuro do sistema iOS. Em vez disso, um GMSMapView compatível com navegação oferece suporte a esquemas de cores normais e com pouca luz usando a propriedade lightingMode e a enumeração GMSNavigationLightingMode:

  • Modo normal (.normal): usa um esquema de cores adequado para visualização à luz do dia.
  • Modo pouca luz (.lowLight): usa um esquema de cores adequado para visualização noturna.

Ativar a troca automática do modo de iluminação

O SDK Navigation para iOS calcula o modo de iluminação recomendado com base na hora do dia e na localização do dispositivo e o expõe pela propriedade suggestedLightingMode de GMSNavigator. No entanto, o GMSMapView não aplica essa recomendação automaticamente.

Para alternar entre os modos normal e pouca luz automaticamente, siga estas etapas no controlador de visualização:

  1. Defina o modo de iluminação inicial na inicialização: ao configurar o mapa, leia a propriedade suggestedLightingMode de GMSNavigator e atribua esse valor a mapView.lightingMode. Como o listener só é acionado quando o modo de iluminação sugerido muda (como ao nascer ou pôr do sol), definir o valor inicial garante que o mapa seja renderizado no modo de pouca luz imediatamente se o usuário iniciar a navegação à noite.
  2. Detectar mudanças no modo de iluminação durante a navegação: adote o protocolo GMSNavigatorListener e implemente o método navigator(_:didChangeSuggestedLightingMode:) para atualizar mapView.lightingMode sempre que o modo sugerido mudar.

O exemplo a seguir mostra como definir o modo de iluminação inicial e atualizá-lo quando o modo de iluminação sugerido muda:

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 mais informações sobre a adoção de GMSNavigatorListener, consulte Declarar conformidade com os protocolos necessários no guia "Detectar eventos de navegação".

Forçar o modo normal ou pouca luz

Se você não quiser que o mapa mude de modo automaticamente, force o modo normal ou com pouca luz definindo mapView.lightingMode diretamente e omitindo a atualização do listener navigator(_:didChangeSuggestedLightingMode:).

O exemplo a seguir mostra como forçar o mapa a entrar no modo normal ou de pouca 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;

Personalizar as cores da interface em pouca luz

Também é possível personalizar as cores de plano de fundo primária e secundária do cabeçalho de navegação quando o mapa está no modo de pouca luz. Para mais informações sobre como personalizar essas cores, consulte Cores do cabeçalho do modo de pouca luz no guia "Modificar a interface de navegação".