Navigation SDK for iOS には、ウェイポイント(ナビゲーション ポイント)を指定する高度な方法が用意されています。これにより、より正確なルート案内と、より優れた到着エクスペリエンスを提供できます。特に、複数の入り口や特定のナビゲーション ポイントがある目的地で効果的です。navigationPointToken を使用して、正確な位置情報にルートを設定できます。これは、位置情報と追加のルート コンテキストをエンコードする文字列です。緯度と経度の座標をプレイス ID と組み合わせて、コンテキストを追加することもできます。
背景
v10.10 より前は、位置座標またはプレイス ID を使用して Waypoint を定義できました。緯度と経度のみをルート設定に使用すると、特に大規模な会場、公園、複数の入り口がある建物などでは、降車場所や乗車場所が最適でない場合があります。結果は最も近い道路セグメントにスナップされる可能性がありますが、これは最も便利または正しいアクセス ポイントではない可能性があります。
拡張されたウェイポイント オプションでは、より多くのコンテキストを提供することで、この問題に対処できます。
ナビゲーション ポイント トークンを使用する
入口、搬入口、指定された乗車エリアなどの特定のアクセス ポイントへの最も正確なルート案内を行うには、navigationPointToken を使用します。
このトークンは、Geocoding API の Destinations メソッドを呼び出すことで取得されます。これは、場所に関連付けられた、ルート設定可能な特定のナビゲーション ポイントを表します。
ナビゲーション ポイント トークンを指定するには:
Geocoding API の Destinations メソッドのレスポンスから
navigationPointTokenを取得します。GMSNavigationWaypointの作成時に、そのnavigationPointTokenを指定します。
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] initWithNavigationPointToken:@"sampleNavigationPointToken"
title:@"Sydney Opera House"];
ナビゲーション ポイント トークンとルートトークンを使用する
Geocoding API を介してナビゲーション ポイント トークンを取得し、Routes API からルートトークンを取得して、ナビゲーション ポイント トークンとルートトークンの両方を Navigation SDK に渡すことができます。これは、ライドシェアや配達などのシナリオで、Routes API を使用して移動料金を計算し、ナビゲーション ポイント トークンの精度が必要な場合に便利です。
Navigation SDK は、ルートトークンを使用して、料金の計算に使用したルートと同じルートでナビゲーションを開始します。これにより、乗車に長いルートや短いルートが使用されるリスクが軽減され、「価格ショック」が発生する可能性があります。
ナビゲーション ポイント トークンを使用して場所を指定する方法とルートトークンを作成する方法について詳しくは、Routes API の 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 | 欠損 | 欠損 | 定義された座標に最も近い道路セグメントにルーティングします | 目的地を高い信頼度で推測できる場合に表示されます。 |
| プレイス ID のみ | 欠損 | set | 欠損 | プレイス ID のデフォルトのナビゲーション ポイントへのルート | 出発地のプレイス ID |
| ナビゲーション ポイント トークンのみ | 欠損 | 欠損 | set | トークンで表される正確なナビゲーション ポイントへのルート | 元の Geocoding API の destinations メソッドのリクエストで定義された目的地から |
| 位置座標とプレイス ID の組み合わせ | se | set | 欠損 | 定義された座標に最も近い道路セグメントにルーティングします | プレイス ID から(ただし、プレイス ID が緯度/経度座標から離れすぎている場合は表示されません) |