通常モードとローライト モードを設定する

Navigation SDK for iOS は、iOS システムのライトモードとダークモードに自動的に切り替わりません。代わりに、ナビゲーションが有効な GMSMapView は、lightingMode プロパティと GMSNavigationLightingMode 列挙型を使用して、通常と低照度のカラーパターンをサポートします。

  • 標準モード(.normal): 日中の視聴に適したカラーパターンを使用します。
  • ローライト モード(.lowLight): 夜間の視聴に適したカラーパターンを使用します。

自動ライティング モード切り替えを有効にする

Navigation SDK for iOS は、時間帯とデバイスの位置情報に基づいて推奨される照明モードを計算し、GMSNavigator の suggestedLightingMode プロパティを通じて公開します。ただし、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;

低照度 UI の色をカスタマイズする

地図が低照度モードのときに、ナビゲーション ヘッダーのメインとサブの背景色をカスタマイズすることもできます。これらの色をカスタマイズする方法については、ナビゲーション UI の変更ガイドの低照度モードのヘッダーの色をご覧ください。