Navigation SDK for iOS は、iOS システムのライトモードとダークモードに自動的に従いません。
代わりに、ナビゲーション対応の
GMSMapView
は、
lightingMode
プロパティと
GMSNavigationLightingMode
列挙型を使用して、通常モードとローライト モードのカラーパターンをサポートします。
照明モードの自動切り替えを有効にする
Navigation SDK for iOS は、時刻とデバイスの位置に基づいて推奨されるライトモードを計算し、
suggestedLightingMode
の
GMSNavigatorプロパティを通じて公開します。ただし、
GMSMapView
この推奨事項を自動的に適用しません。
通常モードとローライト モードを自動的に切り替えるには、ビュー コントローラで次の操作を行います。
- 起動時に初期照明モードを設定する: 地図を設定するときに、
suggestedLightingModeプロパティをGMSNavigatorから読み取り、その値をmapView.lightingModeに割り当てます。 リスナーは、推奨される照明モードが変更されたとき(日の出や日没など)にのみ起動するため、初期値を設定することで、ユーザーが夜間にナビゲーションを開始した場合に、地図がローライト モードで直ちにレンダリングされるようになります。 - ナビゲーション中のライトモードの変更をリッスンする:
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 を変更するガイドのローライト モードのヘッダー の色 をご覧ください。