よくある質問

商品情報

ネットワーク

データ

UI のカスタマイズ

ルーティング

シミュレータ

Workflows

商品情報

アプリに、各ドライバが同意する必要がある Navigation SDK 利用規約の通知を表示するダイアログ ボックスを実装する必要があります。このダイアログ ボックスは、ドライバーが利用規約に同意する機会を提供します。用語のテキスト ファイルは Navigation SDK に付属しています。
Android では、NavigationApi.showTermsAndConditionsDialog メソッドを使用して、キーワードを含むダイアログ ボックスを表示します。
iOS の場合は、GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName を呼び出します。
モバイル版 Google Maps Platform でサポートされている言語はすべて、Navigation SDK でも自動的に使用可能になります。デバイスにデフォルトのシステム言語があり、アプリはその設定を変更できません。ただし、アプリは 70 を超える言語にアクセスできます。

はい。Android では、いったん起動すると LocationListener はバックグラウンドで実行され続けます。アプリは道路のスナップを続けて位置を維持し、

iOS で、位置と方角の位置情報の更新をバックグラウンドで引き続き受け取るには、道路スナップを実装し、allowsBackgroundLocationUpdatesYES に設定します。

はい。ルートが作成または変更されると、RouteChangeListener によってポリラインが提供されます。

いいえ。Navigation SDK を使用する場合、Google Maps Mobile をデバイスにインストールする必要はありません。
いいえ。現時点では、Navigation SDK にこの機能はありません。
はい。トラフィックの方向はデフォルトで使用可能で、表示されます。

ネットワーク

Navigation SDK は接続不良をどのように処理しますか?
Navigation SDK は、各経路のルートを事前にキャッシュに保存します。事前にキャッシュに保存された情報には、15 ~ 20 分間のルート情報と、ドライバーがルートから逸脱した場合の代替ルートが含まれます。Navigation SDK は、デバイスの GPS とセンサーを使用して位置を推定します。
オフライン モードはありますか?
いいえ。現時点で Navigation SDK はオフライン モードを提供していません。ただし、SDK はジャーニーに関する事前キャッシュされた情報を提供します。

データ

ルートを開始する前に、ルート内のすべての停車地や目的地を取得できますか?

はい。Android でルートの経路を取得するには、Navigator.getRouteSegments() を呼び出します。

iOS の場合は、GMSNavigator.routeLegs(read) を呼び出します。

ルートの始点でターンバイターンのルート案内を利用できますか?
はい。Navigation SDK は、ルート セグメントのリストを提供します。また、運転手はヘッダーの経路カードをスワイプして、それぞれの運転を確認できます。
到着予定時間はアプリのユーザーにどのように通知されますか?

Android でアプリのユーザーに到着予定時刻を知らせる手順は次のとおりです。

  1. Navigator.getTimeAndDistanceList() を使用してすべての地点の時間と距離を取得します。
  2. 現在のドライバの到着予定時刻と同様に、この情報をクライアント アプリケーションに転送します。

iOS でアプリのユーザーに到着予定時刻を知らせる手順は次のとおりです。

  1. Navigator.getRouteSegments() を使用してジャーニーの区間を取得します。
  2. 乗車区間ごとに GMSNavigator.timeToNextDestination を呼び出します。
  3. ドライバの ETA について現在行っているように、時刻情報をクライアント アプリケーションに転送します。
ナビゲーションがフォアグラウンドにない場合、RoadSnappedLocationProvider を使用してドライバーの現在のスナップ位置を取得できますか?

はい。Android では、RoadSnappedLocationProvider はデフォルトでバックグラウンドで実行されます。

iOS でナビゲーションをバックグラウンドで実行し続けるには、GMSRoadSnappedLocationProviderDelegate のデリゲートを実装し、プロパティ allowsBackgroundLocationUpdatesTRUE に設定します。

Navigation SDK はジオフェンスをサポートしていますか?

いいえ。ナビゲーションのコンテキストでは、remainingTimeOrdistanceChangeListener は単純なジオフェンスよりも優れています。ジオフェンスでは道路の形状が考慮されておらず、ドライバーがナビゲーションしている地点の中心にジオフェンスが表示されない場合があります。

この機能は、remainingTimeOrdistanceChangeListener を使用して近似できます。

  1. しきい値を設定して、コールバックの頻度を決定します。
  2. 目的地までの残りの距離を確認します。

たとえば、しきい値を 100 m に設定した場合、目的地までの距離が 100 m 変化したときにコールバックを受け取ります。距離が離れるにつれ、このしきい値を小さい値に更新して、コールバックを頻繁に受信できます。残りの距離を調べて、乗車場所から降車する場所まで十分に近くにあるかどうかを判断します。

iOS では、デリゲート GMSNavigatorDelegate.didUpdateRemainingDistance を実装して通知間の距離を管理します。

ナビゲーション アプリがバックグラウンドで動作しているときに、通知を無効にできますか?

はい。Android では、Navigator.setHeadsUpNotificationEnabled を使用して通知を制御します。このメソッドにはブール値の引数があります。FALSE は通知を無効にし、TRUE は通知を有効にします。

iOS では、GMSRoadSnappedLocationProviderDelegate.allowsBackgroundLocationUpdates を NO に設定して、道路に邪魔された場所のバックグラウンド通知を無効にします。

その他の位置情報通知のバックグラウンド処理を無効にするには、GMSNavigator.sendsBackgroundNotifications(NO) を呼び出します。

トランザクション レコーダーは、一意の ID で乗車と降車をトラッキングします。Google は、この ID を請求目的で記録します。詳細については、ご使用のプラットフォームの実装テスト手順をご覧ください。

請求トランザクションのコーディングの側面については、 請求対象トランザクションをご覧ください。

UI のカスタマイズ

最適な経路を色分けできますか?
いいえ。現時点では、経路オプションの色分けはサポートされていません。
Navigation SDK は最終目的地への到着予定時刻を表示できますか?

はい。Android では、以下のメソッドを使用します。

  1. Navigator.getTimeAndDistanceList() を使用してすべての地点の時間と距離を取得します。
  2. NavigationFragment.setEtaCardEnabled(false) を使用して、現在の地点の到着予定時刻を非表示にします。
  3. 最終的な目的地到着予定時刻をレンダリングします。

iOS では、次を使用します。

  1. GMSNavigator.routeLegs(read) を呼び出します。
  2. 最後の区間で GMSNavigator.timeToNextDestination を呼び出します。
  3. 現在の地点の到着予定時刻を非表示にするには、MSMapView.settings.navigationFooterEnabled=NO を FALSE にします。
  4. 最終的な目的地到着予定時刻をレンダリングします。
到着予定時刻を非表示にするにはどうすればよいですか?

ETA カードは次の方法で無効にできます。

  • Android では、navigationView.setEtaCardEnabled(false) を使用します。
  • iOS では、GMSMapView.settings.navigationFooterEnabled=NO を使用します。
ヘッダーカードとフッターカードでどのような UI をカスタマイズできますか?

Android では、StylingOptions を使用して背景色のスタイルを設定します。ヘッダーとフッターの表示と非表示を切り替えるには、NavigationFragmentsetHeaderEnabled メンバー関数と setFooterEnabled メンバー関数を使用します。

iOS では、GMSMapView.settings.navigationHeaderPrimaryBackgroundColor を使用して背景色のスタイルを設定します。ヘッダーとフッターの表示と非表示を切り替えるには、GMSUISettingsnavigationFooterEnabled プロパティと navigationHeaderEnabled プロパティを使用します。

ルーティング

特定のルートをドライバーに提供したり、代替ルートを削除したりできますか?
いいえ。デフォルトでは複数のルートが提供され、最速ルートが優先されます。リクエストに「高速道路と有料道路を使わない」などの設定を追加することで、デフォルト ルートを変更できます。地点を追加すると、ルートにも影響します。
アプリのユーザーに、デフォルトのデスティネーションと異なるデスティネーションのラベルを表示できますか?

はい。Android では、Marker を作成し、目的地のカスタム タイトルと緯度/経度を指定します。Navigation SDK により、NavigationMap にカスタム タイトルと座標が表示されます。

iOS では、デスティネーションの GMSMarker を作成して表示します。

Navigation SDK を使用して、定義した経路からの逸脱を追跡できますか?

はい。Android では、Navigator.setRouteChangedListener を使用して、ルートが変更されたとき、または新しいルートが推奨されたときに通知を受け取ることができます。

  1. Navigator.setRouteChangedListener メソッドを使用して、ルート上のデバイスの位置を確認するリスナーを登録します。
  2. コールバック イベント ハンドラ onRouteChanged にコードを追加します。
    • 到着予定時刻と距離情報を更新したメッセージをアプリのユーザーに送信します。
    • デバイスの位置情報を追跡します。
    • (省略可)ドライバーが所定のルートから外れたときにアプリで処理する必要があるその他の機能を追加します。

iOS では、GMSNavigator とそのデリゲートを使用して、ルートが変更されたとき、または新しいルートが推奨されたときに通知を受け取ることができます。

  1. 地図のビュー コントローラで、GMSNavigatorDelegate プロトコルと GMSRoadSnappedLocationProviderDelegate プロトコルを実装します。
  2. GMSNavigatorDelegate.navigatorDidChangeRoute を実装します。
  3. GMSNavigatorrouteLegs プロパティと currentRouteLeg プロパティを使用して、新しいルートにアクセスします。
ドライバーはルートを完了せずにナビゲーションを終了できますか?

はい。Android では、Navigator.stopGuidance() メソッドを呼び出してナビゲーションを停止します。

iOS の場合は、GMSNavigator.clearDestinations を呼び出します。

シミュレータ

シミュレータはルートの変更に対応していますか?

はい。Android では、simulateLocationsAlongNewRoute を呼び出して、ルート変更を含む移動をシミュレートします。simulateLocationsAlongExistingRoute メソッドは、既存のルートに対する変更を無視します。

iOS で GMSLocationSimulator.simulateAlongNewRouteToDestinations を使用して、経路の変更を含む行程をシミュレートします。ルートの変更が予想されない場合は、GMSLocationSimulator.simulateLocationsAlongExistingRoute または GMSLocationSimulator.simulateAlongNewRouteToDestinations を使用します。

Workflows

ナビゲーション フラグメントを含むアクティビティを閉じた後、通知を閉じるにはどうすればよいですか?

ナビゲーション通知は、アクティビティが閉じられても、ナビゲーション中は引き続き表示されます。車両が目的地に到着すると、ナビゲーションが停止し、通知が消えます。

通知のクリックを処理するには、Navigator.startGuidance(intent resumeIntent) を使用します。resume intent は、アプリユーザーが通知をクリックすると呼び出されます。通常、Navigator.startguidance(getIntent()) はメイン アクティビティから呼び出されます。メイン アクティビティは、アプリのユーザーが通知をクリックするとアクティビティを呼び出します。