ナビゲーション ポイントへのルート

iOS 用 Navigation SDK では、経由地(ナビゲーション ポイント)を指定する方法が強化され、特に複数の入り口や特定のナビゲーション ポイントがある目的地の場合に、より正確なルート案内と優れた到着体験を提供できます。navigationPointToken を使用して正確な場所にルーティングできます。これは、場所と追加のルート コンテキストをエンコードする文字列です。緯度と経度の座標をプレイス ID と組み合わせて、コンテキストを追加することもできます。

背景

v10.10 より前は、場所の座標またはプレイス ID のいずれかを使用して Waypoint を定義できました。 緯度と経度のみにルーティングする方法は効果的な場合もありますが、特に大規模な会場、公園、複数の入り口がある建物の場合、最適な降車地点や乗車地点にならないことがあります。その結果、最も近い道路セグメントに自動整列されることがありますが、それが最も便利で正しいアクセス ポイントとは限りません。

経由地のオプションが強化されたことで、より多くのコンテキストを提供できるようになり、この問題が解決されました。

ナビゲーション ポイント トークンを使用する

入り口、荷積み場、指定された乗車エリアなどの特定のアクセス ポイントに最も正確にルーティングするには、navigationPointToken を使用します。

このトークンは、Geocoding API の Destinations メソッドを呼び出すことで取得できます。これは、場所に関連付けられた特定のルーティング可能なナビゲーション ポイントを表します。

ナビゲーション ポイント トークンを指定する手順は次のとおりです。

  1. Geocoding API レスポンスの Destinations メソッドから navigationPointToken を取得します。

  2. 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"];

考慮事項:

placeIDlocation の両方を指定する場合:

  • ルートは主に指定された 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 が緯度と経度の座標から遠すぎる場合は表示されません