大型車両向けのターンバイターン方式ナビを提供する

このガイドの対象読者: トラックなどの大型車両のドライバー向けの運転室ナビゲーション エクスペリエンスのビルドを担当するモバイル デベロッパーは、このガイドをお読みください。

このガイドの内容: このガイドでは、Routes API または Route Optimization API によって生成されたトラック専用のルートを取得し、Navigation SDK を使用してターンバイターン方式ナビ セッションを駆動する方法について説明します。

学習内容

次の操作を行う方法について学習します。

  • routeToken を使用して、バックエンドのルート プランニングとアプリ内ナビゲーション エクスペリエンスを接続します。
  • 事前に計画されたトラック ルートを使用するように Navigation SDK を構成します。
  • トラック固有の制限事項が UI でどのように表示されるかを確認します

前提条件

始める前に、次の要件を満たしている必要があります。

プロジェクトの設定

Google Cloud プロジェクトで大型車両のルート設定がプロビジョニングされている必要があります。Routes API と Navigation SDK に別々のプロジェクトを使用している場合は、両方を適切にプロビジョニングする必要があります。

ルートトークンを生成する

まず、トラックのルートと到着予定時刻を生成するの手順に沿ってルートを生成する必要があります。このプロセスの出力である routeToken は、このガイドの手順を完了するために必要です。

最小要件

アプリでは、必要な最小限の Navigation SDK バージョンを使用する必要があります。

  • Android: 5.2.0 以降
  • iOS: 5.4.0 以降

また、Navigation SDK の使用に関するすべての要件が適用されます。

制限事項

始める前に、次の制限事項と要件を把握しておく必要があります。

  • 利用可能な地域: 大型車両のルート選択は、米国本土の 48 州でのみご利用いただけます。
  • 大型車両のルーティングはプレビュー段階のサービスです。ドライバーは、この API から返されるルートのみに頼って安全や合法性を判断してはなりません。ルートが車両に適しているとは限らず、ルートに従うと、低い橋や大型車両の通行が禁止されている道路などの危険にさらされる可能性があります。
  • ベスト エフォート型のルート。場合によっては、API で移動制限に完全に準拠したルートが見つからないことがあります。代わりに、制限区域を通過する可能性のある「ベスト エフォート」ルートを返します。Routes API レスポンスでは、routeRestrictionsPartiallyIgnored フィールドでこれらのルートが明確に示されます。このような場合は、他のソースデータを使用して、ルートを慎重に計画してください。フラグ付きのルートを計画やナビゲーションの信頼できる唯一の情報源として使用しないでください。
  • サポートされていない機能: このサービスにさらに多くの機能を追加する作業を進めていますが、大型車両のルーティングでは次の機能はサポートされていません。
    • トラックの通行料金
    • 制限速度
    • 放射性危険物のルーティング
  • 使用量の上限: すべてのリクエストには、標準の秒間クエリ数(QPS)の上限が適用されます。

トラック専用の UI を表示する

Navigation SDK は、地図上に ルート コールアウトと呼ばれる視覚的な警告を自動的に表示し、トラックの通行規制が近づいていることをドライバーに知らせます。吹き出しは、計画されたルートの一部である制限に対してのみ表示され、近くの他の道路には表示されません。

SDK には、次の制限に関するコールアウトが含まれています。

制限事項 コールアウト アイコンとテキスト ディスプレイの条件
身長 黄色の高さ制限アイコン
黄色 = 警告、車両の高さが許容される最大高さに近づいています
赤色の高さ制限アイコン
赤色 = 車両の高さが許容される最大高さを超えています
車両の高さが制限に近づくと、黄色の吹き出しが表示されます。
高さ制限の警告が表示されている地図
ルートが準拠しておらず、高さ制限に違反している場合は、赤色の吹き出しが表示されます。
高さ制限違反の地図
重み 重量制限アイコン 車両の重量が道路の制限を超えると、赤い吹き出しが表示されます。
重量制限アイコンを含む地図
トラック通行禁止 トラック通行禁止のアイコン トラックの通行規制がある道路区間を走行すると、赤いコールアウトが表示されます。
トラック禁止アイコンが表示された地図
危険物 危険物のアイコン 道路区間で車両の危険物積載が禁止されている場合、赤い吹き出しが表示されます。
危険物アイコンを含むマップ

ルートトークンのワークフロー

routeToken は、Routes API によって生成されたルートの暗号化された安全なスナップショットです。これには、ルートの作成に使用された車両プロファイルなど、ルートの詳細がすべて含まれます。トークンを使用すると、ナビゲーション セッションがバックエンドで計画したルートと一致します。

ドライバーがナビゲーションを開始すると、ナビゲーション SDK によって提示されるルートは、交通状況や道路状況に応じて変更されることがあります。場合によっては、ルートトークンで指定されたルートから外れることがあります。

このような場合や、ドライバーが予定のルートから外れた場合でも、ルートトークンを使用することで、新たに再計算されたルートが、元の Routes API リクエストで構成された車両属性を尊重することが保証されます。

ワークフローは次の手順で行われます。

  1. バックエンドが Routes API にトラックのルートをリクエストします。
  2. Routes API は routeToken を返します。
  3. バックエンドがこのトークンをモバイル アプリケーションに送信します。
  4. モバイルアプリは routeTokenNavigation SDK に渡し、乗車を開始します。
  5. Navigation SDK は、ターンバイターン エクスペリエンスのあらゆる側面を処理します。これには、ドライバーがルートから外れた場合のルート変更(元の車両制限を維持)が含まれます。

実装: トラック専用のルートを開始する

トラックのルートでナビゲーション セッションを開始するには、ルートトークンを Navigator に渡します。

ステップ 1: ルートトークンを取得する

アプリケーションはバックエンド サーバーから routeToken 文字列を受け取ります。

次のコードはトークンの例です。

CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g

ステップ 2: トークンを Navigator に渡す

旅行の目的地を設定するときに、routeToken を Navigator に提供します。Navigation SDK は、このトークンを旅行のすべてのルート計算に使用します。

Navigation SDK には TravelMode 構成があり、TravelMode.DRIVING に設定する必要があります。これは、Routes API の travelMode 構成とは異なります。Routes API の travelMode 構成は TRUCK に設定する必要があります。Routes API の travelMode 構成は routeToken でエンコードされ、Navigation SDK にトラック固有のエクスペリエンスとルートを表示するよう指示します。

Android

CustomRoutesOptions.builder() を使用してトークンを設定し、navigator.setDestinations() に渡します。

// Obtain the routeToken string from your backend
val routeToken = "route token returned by Routes API"

val customRoutesOptions = CustomRoutesOptions.builder()
    .setRouteToken(routeToken)
    .setTravelMode(TravelMode.DRIVING)
    .build()

// Specify the same destination used to create the route token
ArrayList <Waypoint> destinations = Lists.newArrayList();
val destination = Waypoint.builder()
    .setLatLng(10.0, 20.0)
    .setTitle("title")
    .setVehicleStopover(true)
    .build()
destinations.add(destination);

navigator.setDestinations(destinations, customRoutesOptions)

iOS

mapView.navigator setDestinations メソッドを使用して、ルート トークンを Navigation SDK に渡します。このとき、ルート トークンの作成時に使用したのと同じ目的地の経由地を指定します。

// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"

mapView.navigator?.setDestinations([destination], routeToken: routeToken, callback: {...})

次のステップ