iOS 向け Navigation SDK では、経由地を指定する方法が強化され、特に複数の入り口や特定のアクセス ポイントがある目的地で、より正確なルート案内とより快適な到着体験を提供できるようになりました。navigationPointToken を使用するか、位置座標とプレイス ID を組み合わせてコンテキストを追加することで、正確な位置にルートを設定できます。
該当する場合は、目的地ハイライト表示機能が引き続き実行されます。
背景
v10.10 より前は、位置座標またはプレイス ID のいずれかを使用して Waypoint を定義できました。緯度と経度のみにルートを設定することは、効果的な場合もありますが、特に大規模な会場、公園、複数の入り口がある建物の場合、最適な乗降場所にならないことがあります。その結果、最も近い道路セグメントにスナップされることがありますが、それが最も便利で正しいアクセス ポイントとは限りません。
強化された経由地オプションでは、より多くのコンテキストを提供できるようになり、この問題に対処しています。
ナビゲーション ポイント トークンを使用する
入り口、発送センター、指定された受け取り場所などの特定のアクセス ポイントへの最も正確なルート案内には、navigationPointToken を使用できます。
このトークンは、Geocoding API の Destinations メソッドを呼び出すことで取得できます。これは、場所に関連付けられた特定のルーティング可能なナビゲーション ポイントを表します。
ナビゲーション ポイント トークンを指定するには:
Geocoding API の Destinations メソッドのレスポンスから
navigationPointTokenを取得します。GMSNavigationWaypointの作成時にnavigationPointTokenを指定します。
注: ナビゲーション ポイント トークンと、位置情報および PlaceID を同時に指定することはできません。
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"
場所 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 | 欠損 | 欠損 | 定義された座標に最も近い道路区分にルーティングします | 目的地を高い信頼度で推測できる場合に表示されます |
| Place ID のみ | 欠損 | set | 欠損 | プレイス ID のデフォルトのナビゲーション ポイントへのルート | 出発地のプレイス ID |
| ナビゲーション ポイント トークンのみ | 欠損 | 欠損 | set | トークンで表される正確なナビゲーション ポイントへのルート | 元の Geocoding API の destinations メソッドリクエストで定義された目的地 |
| 位置座標とプレイス ID の組み合わせ | se | set | 欠損 | 定義された座標に最も近い道路区分にルーティングします | 場所 ID から(ただし、場所 ID が緯度/経度の座標から離れすぎている場合は表示されません) |