Android 向け Navigation SDK では、経由地やナビゲーション ポイントを指定する方法が強化され、特に複数の入り口がある目的地や特定のナビゲーション ポイントがある目的地で、より正確なルート案内とより優れた到着体験を提供できるようになりました。navigationPointToken を使用して正確な位置にルートを設定できます。これは、位置情報と追加のルート コンテキストをエンコードする文字列です。緯度と経度の座標をプレイス ID と組み合わせて、コンテキストを追加することもできます。
背景
v7.4 より前は、緯度と経度の座標またはプレイス ID を使用して Waypoint を定義できました。緯度と経度のみにルートを設定することは、効果的な場合もありますが、特に大規模な会場、公園、複数の入り口がある建物の場合、最適な降車場所や乗車場所にならないことがあります。その結果、最も近い道路セグメントに自動整列されることがありますが、それが最も便利で正確なナビゲーション ポイントとは限りません。
拡張された経由地オプションでは、より多くのコンテキストを提供できるようになり、この問題に対処しています。
ナビゲーション ポイント トークンを使用する
入り口、発送センター、指定された受け取り場所などの特定のナビゲーション ポイントへの最も正確なルート案内には、navigationPointToken を使用できます。このトークンは、Geocoding API の destinations メソッドを呼び出して取得します。これは、場所に関連付けられた特定のルーティング可能なナビゲーション ポイントを表します。
ナビゲーション ポイント トークンを指定するには:
- Geocoding API の Destinations メソッドのレスポンスから
navigationPointTokenを取得します。 - ビルダーの
setNavigationPointToken()メソッドを使用してWaypointを作成します。
注釈: setNavigationPointToken() を使用する場合、setLatLng() または setPlaceIdString() を同時に使用することはできません。これらのメソッドは setNavigationPointToken() と相互に排他的です。
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
ナビゲーション ポイント トークンとルート トークンを使用する
Geocoding API を介してナビゲーション ポイント トークンを取得し、Routes API からルートトークンを取得してから、ナビゲーション ポイント トークンとルートトークンの両方を Navigation SDK に渡すことができます。これは、Routes API を使用して乗車料金を計算し、ナビゲーション ポイント トークンの精度が必要なライドシェアや配達などのシナリオで役立ちます。
ルートトークンは、Navigation SDK で選択されるルートを、料金設定に使用されたルートに偏らせます。これにより、旅行に長いルートや短いルートが使用されるリスクが軽減され、「価格ショック」が発生する可能性が低くなります。
ナビゲーション ポイント トークンを使用して位置を指定する方法とルートトークンを作成する方法については、Routes API のドキュメントをご覧ください。ルートトークンを使用してルートを計画する方法については、「ルートを計画する」をご覧ください。
次の図は、乗車共有アプリや配達アプリでナビゲーション ポイント トークンとルート トークンを一緒に使用する方法を示しています。
プレイス ID と緯度、経度を組み合わせる
v7.4 以降では、Waypoint の作成時にプレイス ID と緯度経度座標の両方を指定できます。このメソッドは、場所全体のコンテキスト(プレイス ID)を提供しながら、正確なポイント(緯度/経度)を指定する場合に便利です。これにより、Navigation SDK は、目的地をハイライト表示したり、プレイス ID に関連する付近のスポットを表示したりすることで、より充実した到着体験を提供できます。
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
考慮事項
placeId と latlng の両方を指定した場合:
- このルートは、主に指定された
latlngを対象としています。 placeIdは、到着時の利便性を高めるためのコンテキストとして使用されます。- 代替: 提供された
placeIdが、指定されたlatlngからかけ離れた特徴に対応していると SDK が判断した場合、placeIdは無視されます。このシナリオでは、ルート検索はlatlngのみに進み、場所固有の到着エクスペリエンスの強化は利用できません。
有効な経由地の構成の概要
| メソッド | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
転送の動作 | 宛先のハイライト表示 |
|---|---|---|---|---|---|
| 緯度と経度の座標のみ | set | 欠損 | 欠損 | 定義された座標に最も近い道路区分にルートを設定します | 目的地を高い信頼度で推測できる場合に表示されます |
| プレイス ID のみ | 欠損 | set | 欠損 | プレイス ID のデフォルトのナビゲーション ポイントへのルート | 出発地のプレイス ID |
| ナビゲーション ポイント トークンのみ | 欠損 | 欠損 | set | トークンで表される正確なナビゲーション ポイントへのルート | 元の Geocoding API の destinations メソッドのリクエストで定義された目的地 |
| 緯度と経度の座標とプレイス ID の組み合わせ | set | set | 欠損 | 定義された座標に最も近い道路区分にルートを設定します | プレイス ID から(プレイス ID が緯度/経度の座標から離れすぎている場合は表示されません) |