配置正常模式和弱光模式

Navigation SDK for iOS 不会自动遵循 iOS 系统浅色和深色模式。 相反,启用导航功能的 GMSMapView 通过其 lightingMode 属性和 GMSNavigationLightingMode 枚举支持正常和弱光配色方案:

  • 正常模式 (.normal): 使用适合白天观看的配色方案。
  • 弱光模式 (.lowLight): 使用适合夜间观看的配色方案。

启用自动照明模式切换功能

Navigation SDK for iOS 会根据一天中的时间和设备的位置计算建议的照明模式,并通过 suggestedLightingMode 的 GMSNavigator 属性公开该模式。不过, GMSMapView 不会自动应用此建议。

如需在正常模式和弱光模式之间自动切换,请在视图控制器中完成以下步骤:

  1. 在启动时设置初始照明模式:设置地图时,从GMSNavigator读取 suggestedLightingMode 属性,并将该值分配给 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;

自定义弱光界面颜色

您还可以在地图处于弱光模式时自定义导航标题栏的主背景色和辅助背景色。如需详细了解如何自定义这些颜色,请参阅弱光模式标题栏颜色在修改导航界面指南中。