iOS 用 Navigation SDK では、経由地(ナビゲーション ポイント)を指定する方法が強化され、特に複数の入り口や特定のナビゲーション
ポイントがある目的地の場合に、より正確なルート案内と優れた到着体験を提供できます。navigationPointToken
を使用して正確な場所にルーティングできます。これは、場所と追加のルート コンテキストをエンコードする文字列です。緯度と経度の座標をプレイス
ID と組み合わせて、コンテキストを追加することもできます。
背景
v10.10 より前は、場所の座標またはプレイス ID のいずれかを使用して Waypoint を定義できました。 緯度と経度のみにルーティングする方法は効果的な場合もありますが、特に大規模な会場、公園、複数の入り口がある建物の場合、最適な降車地点や乗車地点にならないことがあります。その結果、最も近い道路セグメントに自動整列されることがありますが、それが最も便利で正しいアクセス ポイントとは限りません。
経由地のオプションが強化されたことで、より多くのコンテキストを提供できるようになり、この問題が解決されました。
ナビゲーション ポイント トークンを使用する
入り口、荷積み場、指定された乗車エリアなどの特定のアクセス ポイントに最も正確にルーティングするには、navigationPointToken を使用します。
このトークンは、Geocoding API の Destinations メソッドを呼び出すことで取得できます。これは、場所に関連付けられた特定のルーティング可能なナビゲーション ポイントを表します。
ナビゲーション ポイント トークンを指定する手順は次のとおりです。
Geocoding API レスポンスの Destinations メソッドから
navigationPointTokenを取得します。GMSNavigationWaypointを作成するときに、そのnavigationPointTokenを指定します。
注: ナビゲーション ポイント トークンを、場所とプレイス ID と同時に指定することはできません。
Swift
// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3.."
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
GMSNavigationWaypoint *waypointTwo = [[GMSNavigationWaypoint alloc] initWithNavigationPointToek:@"sampleNavigationPointToken"
ナビゲーション ポイント トークンとルート トークンを使用する
ナビゲーション ポイント トークンは Geocoding API から取得し、ルート トークンは Routes API から取得して、ナビゲーション ポイント トークンとルート トークンの両方を Navigation SDK に渡すことができます。これは、配車サービスや配達など、Routes API を使用して料金を計算し、ナビゲーション ポイント トークンの精度が必要な場合に便利です。
ルート トークンは、Navigation SDK によって選択されるルートを、料金設定に使用されたルートに偏らせます。これにより、移動に長いルートや短いルートが使用されるリスクが軽減され、料金の変動を防ぐことができます。
ナビゲーション ポイント トークンを使用して場所を指定する 方法と ルート トークンを作成する 方法について詳しくは、Routes API のドキュメントをご覧ください。ルート トークンを使用してルートを計画する方法については、 ルートを計画するをご覧ください。
次の図は、配車サービスや配達アプリでナビゲーション ポイント トークンとルート トークンを組み合わせて使用する方法を示しています。
プレイス ID と場所を組み合わせる
v10.10 以降では、経由地を作成するときにプレイス ID と場所の座標の両方を指定できます。 この方法は、正確なポイント(場所)を指定しながら、場所全体のコンテキスト(プレイス ID)を提供する場合に便利です。これにより、Navigation SDK は、目的地の建物をハイライト表示したり、プレイス ID に関連する周辺のスポットを表示したりすることで、より充実した到着体験を提供できます。
Swift
// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),
placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];
考慮事項:
placeID と location の両方を指定する場合:
- ルートは主に指定された
locationをターゲットとします。 placeIdは、到着体験を向上させるためのコンテキストとして使用されます。- 代替: 指定された
placeIdが、指定されたlocationから遠すぎる機能に対応していると SDK が判断した場合、placeIdは無視されます。この場合、ルーティングはlocationのみに進み、場所固有の到着体験の強化は利用できません。
有効な経由地構成の概要
| 仕様 | location |
placeID |
navigationPointToken |
転送の動作 | 目的地のハイライト表示 |
|---|---|---|---|---|---|
| 場所の座標のみ | set | absent | absent | 定義された座標に最も近い道路セグメントにルーティングします | 目的地を高い信頼度で推測できる場合に表示されます |
| プレイス ID のみ | absent | set | absent | プレイス ID のデフォルトのナビゲーション ポイントにルーティングします | プレイス ID から |
| ナビゲーション ポイント トークンのみ | absent | absent | set | トークンで表される正確なナビゲーション ポイントにルーティングします | Geocoding API リクエストの元の Destinations メソッドで定義された目的地から |
| 場所の座標とプレイス ID を組み合わせる | se | set | absent | 定義された座標に最も近い道路セグメントにルーティングします | プレイス ID から。ただし、プレイス ID が緯度と経度の座標から遠すぎる場合は表示されません |