Настройка обычного режима и режима низкой освещенности

Navigation SDK для iOS не переключается автоматически между светлой и тёмной темами iOS. Вместо этого GMSMapView с поддержкой навигации поддерживает обычную и темную цветовые схемы через свойство lightingMode и перечисление GMSNavigationLightingMode:

  • Обычный режим (.normal). Используется цветовая схема, подходящая для дневного света.
  • Режим низкой освещенности (.lowLight). Используется цветовая схема, подходящая для ночного просмотра.

Включить автоматическое переключение режима освещения

Navigation SDK для iOS рассчитывает рекомендуемый режим освещения на основе времени суток и местоположения устройства и предоставляет его через свойство suggestedLightingMode класса GMSNavigator. Однако GMSMapView не применяет эту рекомендацию автоматически.

Чтобы автоматически переключаться между обычным режимом и режимом низкой освещенности, выполните следующие действия в контроллере представления:

  1. Задайте начальный режим освещения при запуске. При настройке карты прочитайте свойство suggestedLightingMode из GMSNavigator и присвойте это значение mapView.lightingMode. Поскольку прослушиватель срабатывает только при изменении рекомендуемого режима освещения (например, на рассвете или закате), установка начального значения гарантирует, что карта сразу же отобразится в режиме низкой освещенности, если пользователь начнет навигацию ночью.
  2. Отслеживание изменений режима освещения во время навигации. Примените протокол GMSNavigatorListener и реализуйте метод navigator(_:didChangeSuggestedLightingMode:), чтобы обновлять mapView.lightingMode при изменении рекомендуемого режима.

В следующем примере показано, как задать начальный режим освещения и обновить его при изменении рекомендуемого режима освещения:

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;
}

Дополнительную информацию о применении GMSNavigatorListener можно найти в разделе Объявление соответствия обязательным протоколам руководства по прослушиванию событий навигации.

Принудительно включить обычный режим или режим низкой освещенности

Если вы не хотите, чтобы карта переключалась автоматически, вы можете принудительно включить обычный режим или режим низкой освещенности, задав значение mapView.lightingMode напрямую и опустив обновление прослушивателя navigator(_:didChangeSuggestedLightingMode:).

В следующем примере показано, как принудительно включить на карте режим низкой освещенности или обычный режим.

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;

Настроить цвета интерфейса для низкой освещенности

Вы также можете настроить основной и дополнительный цвета фона заголовка навигации, когда карта находится в режиме низкой освещенности. Подробнее о том, как настроить цвета заголовка в режиме низкой освещенности…