よくある質問

プロダクトの詳細

問題

ネットワーク

データ

UI のカスタマイズ

ルーティング

シミュレータ

Workflows

モビリティ サービス

プロダクトの詳細

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

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

iOS で、位置と方位の現在地の更新情報をバックグラウンドで継続して受信するには、道路スナップを実装し、allowsBackgroundLocationUpdates を YES に設定します。

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

いいえ。Navigation SDK では、デバイスに Google マップ モバイルをインストールする必要はありません。
いいえ。現在のところ、Navigation SDK にこの機能はありません。
はい。トラフィックの方向はデフォルトで表示されます。

問題

Xcode 12 で、アプリがシミュレータ用に正しくビルドされません。どうすればよいですか?

この問題を解決するには、Xcode プロジェクトのビルド設定を開き、「iOS Simulator」ビルドについてのみ Excluded Architectures に arm64 を追加します。

詳細については、次の StackOverflow スレッドをご覧ください。

GMSMapView が読み込まれません。

GMSMapView が読み込まれない場合:

  • Cloud コンソールで NavSDK が有効になっていることを確認します。
  • Nav SDK がインストールされているものの、プロジェクトで Nav SDK API を使用していない場合は、バイナリから削除してください。

ネットワーク

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. ドライバーの到着予定時刻と同様に、時刻情報をクライアント アプリケーションに転送します。
ナビゲーションがフォアグラウンドにない場合、RoadSnappedLocationProvider を使用してドライバの現在のスナップされた位置情報を取得できますか?

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

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

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

いいえ。ナビゲーションのコンテキストでは、remainingTimeOrdistanceChangeListener はジオフェンスよりも優れています。ジオフェンスは道路の形状を考慮していない可能性があり、ドライバーがナビゲーションしている正確な地点を中心としていない可能性があります。

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

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

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

iOS では、リスナー GMSNavigatorListener.didUpdateRemainingDistance を実装して通知間の距離を管理します。

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

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

iOS では、GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates を NO に設定して、道路にスナップされた位置情報のバックグラウンド通知を無効にします。

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

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. 最終目的地の到着予定時刻をレンダリングします。
到着予定時刻の更新を非表示にするにはどうすればよいですか?

到着予定時刻カードは、次の方法で無効にできます。

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

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

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

ルーティング

ドライバーに特定のルートを指定したり、代替ルートを削除したりできますか?
いいえ。デフォルトでは、複数のルートが提供され、最速のルートが優先されます。 リクエストに「高速道路と有料道路を避ける」などの設定を追加することで、デフォルトのルートに影響を与えることができます。経由地を追加すると、ルートにも影響します。
アプリユーザーに、デフォルトの目的地とは異なるラベルを表示できますか?

はい。Android では、デスティネーションのカスタム タイトルと緯度/経度を含む Marker を作成します。Navigation SDK は、NavigationMap にカスタム タイトルと座標を表示します。

iOS では、目的地の GMSMarker を作成して表示します。

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

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

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

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

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

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

iOS では、GMSNavigator.clearDestinations を呼び出します。

Navigation SDK は、トラックや大型車両のルート検索とナビゲーションをサポートしていますか?

はい。大型車両向けルート検索(LVR)を使用すると、Routes API または Route Optimization API によって生成されたトラック固有のルートトークンを Navigation SDK に渡すことができます。この SDK は、ルートの吹き出し(高さ、重量、危険物、トラックの制限)を含むターンバイターンのナビゲーションを提供し、動的なルート変更中に車両の物理的プロファイルを維持します。詳しくは、大型車両のルートをナビゲートするをご覧ください。

シミュレータ

シミュレータはルートの変更をサポートしていますか?

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

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

Workflows

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

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

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

モビリティ サービス

モビリティ サービスのお客様が Navigation SDK を使用する場合、どのような違いがありますか?

Google Maps Platform モビリティ サービスは、運輸および物流ビジネスの企業ニーズをサポートする API と SDK のコレクションを提供します。モビリティ サービスのお客様の場合、Navigation SDK は通常、ルートの最適化、配車、タスク トラッカー、フリート分析などの関連サービスと組み合わせて使用されます。また、Navigation SDK の課金方法は、Mobility Services のお客様とは異なります。詳細については、モビリティ サービスのドキュメントをご覧ください。

モビリティ製品は、一部のお客様のみご利用いただけます。詳しくは、営業担当者にお問い合わせください。

モビリティ サービスのお客様かどうかを確認するにはどうすればよいですか?
モビリティ サービスのお客様として Navigation SDK を実装しているかどうかわからない場合は、コードで ReportBillableEvent 呼び出しを探してください。ReportBillableEvent メソッドを呼び出すのは、モビリティ サービスのお客様のみです。

モビリティ サービスのお客様に対する Navigation SDK の課金方法
モビリティ サービスをご利用のお客様の場合、Navigation SDK の請求と料金は、Google Maps Platform とのサービス契約によって異なります。モビリティ サービスの実装が正しく請求されていることを確認する方法については、請求の検証をご覧ください。モビリティ サービスの請求の詳細については、営業担当者にお問い合わせください。

どの Navigation SDK API はモビリティ サービスのお客様のみが使用すべきですか?

Navigation SDK には、モビリティ サービスのお客様のみが使用することを想定した API がいくつかあります。これらの API を使用すると、Google から取引ごとに請求されます。Mobility Services のお客様でない場合、次のメソッドは no-ops です。

モビリティ サービスのユーザーは、モビリティ サービス以外の Navigation SDK の実装も使用できますか?

はい。モビリティ サービスのお客様は、モビリティ サービスとモビリティ サービス以外の両方の Navigation SDK の実装を使用できます。ただし、アプリで一度に使用できる実装タイプは 1 つのみです。また、モビリティ サービスの実装で使用するものとは別に、新しい Google Cloud プロジェクト、請求先アカウント、API キーを作成する必要があります。詳細については、Navigation SDK のセットアップの概要をご覧ください。

Navigation SDK の Mobility Services 以外の実装の使用(アプリをある実装タイプから別の実装タイプに移行するなど)について詳しくは、Google アカウント担当者にお問い合わせください。

注: モビリティ サービスのユーザーではなく、モビリティ サービスの API と SDK のコレクションについて詳しく知りたい場合は、Google Maps Platform の営業担当者にお問い合わせください。