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 ativado para navegação GMSMapView oferece suporte a esquemas de cores normais e com pouca luz pela propriedade lightingMode e pelo tipo enumerado 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 suggestedLightingMode propriedade de GMSNavigator. No entanto, 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 claro inicial na inicialização: ao configurar o mapa, leia a suggestedLightingMode propriedade 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), a definição do valor inicial garante que o mapa seja renderizado no modo pouca luz imediatamente se o usuário iniciar a navegação à noite.
  2. Detecte mudanças no modo de iluminação durante a navegação: adote o GMSNavigatorListener protocolo e implemente o navigator(_:didChangeSuggestedLightingMode:) método 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 como adotar 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 pouca luz definindo mapView.lightingMode diretamente e omitindo a navigator(_:didChangeSuggestedLightingMode:) atualização do listener.

O exemplo a seguir mostra como forçar o mapa para o modo pouca luz ou normal:

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 no modo pouca luz

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