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

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

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

照明モードの自動切り替えを有効にする

Navigation SDK for 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;

ローライト モードの UI の色をカスタマイズする

地図がローライト モードの場合、ナビゲーション ヘッダーのプライマリとセカンダリの背景色をカスタマイズすることもできます。これらの色のカスタマイズについて詳しくは、ナビゲーション UI を変更するガイドのローライト モードのヘッダー の色 をご覧ください。