アプリでユーザーに提供するルートを計画したい場合があります。Routes API、Routes Preferred API、Route Optimization API のルートトークンを使用すると、計画したルートに対して次の 2 つを指定できます。
ルートのポリライン
ルートの目標
たとえば、次のようなルーティングの目標を設定できます。
配送時間を最小限に抑える: 食品を配送する企業は、 食品の配送にかかる時間を最小限に抑えたい場合があります。
移動時間または燃料消費量を最小限に抑える: 物流企業は、ドライバーの効率を改善し、燃料費を削減したい場合があります。
目的地までの時間を最小限に抑える: サービス派遣業務では、オペレーターがジョブ リクエストに対応するまでの時間を 最小限に抑えたい場合があります。
コストを削減し、安全性を向上させる: 配車サービスでは、乗客の費用を抑え、安全上の理由から特定のエリアを避けるルートを見つけたい場合があります。
ルートトークンを使用してルートを計画する方法について詳しくは、Routes API で ルートトークンをリクエストすると Route Optimization API でポリラインとルート トークンを移行するをご覧ください。
ルート目標にルートトークンを使用する理由
Routes API、Routes Preferred API、Route Optimization API のルートトークンを使用すると、提供されるルートをより細かく制御できます。
Navigation SDK で可能な限り使用するルートを事前に計画 します。
Navigation SDK で使用する最適ルートを選択 します。Routes API でルートを生成するときにルートトークンをリクエストすると、生成されたルートごとにルートトークンが取得されます。Navigation SDK に渡すときに、使用するルートのトークンを選択できます。
到着予定時刻と 距離の推定値を含め、事前に料金を見積もります。実際の費用と時間は異なる場合がありますが、この見積もりにより、予想されるルート費用と実際のルート費用の差が縮小されます。
エコルートや 最短ルートなど、**より高度なルート目標を指定** します。
ルートトークンの仕組み
Routes API、Routes Preferred API、Route Optimization API を使用して、ルート目標に基づいてルートを計画できます。これらの API から返されたルートトークンを Navigation SDK に渡して、車両のルート設定方法をガイドできます。
ルートトークンをリクエストして使用すると、次のようになります。
Routes API、Routes Preferred API、Route Optimization API は、ルートのポリラインとルートの目標を含む暗号化されたルートトークンを返します。
ルートトークンを Navigation SDK に渡します。
Navigation SDK はルートを取得します。条件が変更されてルートが使用できない場合は、最適なルートを取得します。
ルートを走行中に、交通状況やその他の道路状況が変化した場合、または車両が計画ルートから逸脱した場合、変更されたルートはトークンのルート目標に基づいて最適ルートに一致させようとします。
このプロセスにより、実際のルートが計画ルートに最大限近づきます。
計画ルートが正確にたどられない理由
計画ルートとルート目標は、従うべきガイドラインと考えることができます。これらは規定ではありません。計画ルートの作成後に道路状況、出発地、その他のパラメータが変更された場合、計画ルートとガイド付きナビゲーションで提供されるルートが異なることがあります。この違いにより、距離や到着予定時刻など、重要な移動の質に関する計画と実際の目標が一致しない可能性があります。
ルートトークンを使用してルートを計画する
ルートを計画するには、次の手順でルートトークンを作成して Navigation SDK に渡します。
ステップ 1: Routes API、Routes Preferred API、Route Optimization API を使用してルートトークンを作成する
次のいずれかの方法でルートトークンをリクエスト します。
Routes API:
computeRoutes。Routes API でルートトークンをリクエストする方法について詳しくは、 ルートを計算すると ルート トークンをリクエストするをご覧ください。Routes Preferred API:
computeCustomRoutes。Routes Preferred API でルートトークンをリクエストする方法について詳しくは、ルートを計画するをご覧ください。Route Optimization API:
optimizeToursまたはbatchOptimizeTours。Route Optimization API でルート トークンをリクエストする方法について詳しくは、ポリラインとルート トークンを移行するをご覧ください。
ルートトークンを使用するための要件を満たすように、Routes API または Routes Preferred API のリクエストを設定 します。
travel_modeをDRIVEまたはTWO_WHEELERに設定します。routing_preferenceをTRAFFIC_AWAREまたはTRAFFIC_AWARE_OPTIMALに設定します。Via地点(経由地)は使用しないでください。
ステップ 2: ルートトークンを Navigation SDK に渡す
ルートトークンを保存する: Navigation SDK で、ルートトークンを保存する文字列 を設定します。次に例を示します。
let routeToken = "route token returned by Routes API"返されたルートトークンの例:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }ルートトークンを Navigation SDK に渡すには、
mapView.navigator.setDestinationsを使用します。 ルートトークンの作成時に使用したのと同じ目的地の地点(経由地)を指定します。mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})Navigator.setDestinationsメソッドは、リクエストのステータスを返します。ユーザーの現在地から指定された目的地までのルートが見つかった場合は、RouteStatus.OKを返します。
複数の目的地があるシナリオ
地点(経由地)は最大 25 個まで構成できます。
setDestinations メソッドは、複数の目的地がある移動をサポートしていません。
continueToNextDestinationWithCompletion()
を使用して、地点(経由地)を移動の次の区間に進めます。
例
次のコード例は、計画ルートを取得する方法を示しています。
Swift
let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";
[mapView.navigator setDestinations:@[waypoint1, waypoint2]
routeToken:routeToken
callback:^(GMSRouteStatus routeStatus){...}];
ルートトークンと Navigation SDK の連携方法
Navigation SDK で生成されたルートとルートトークンの計画ルートの連携方法は次のとおりです。
以前に設定された目的地をオーバーライド します。
車両の出発地を使用 します。
不要なため、ルーティング関連の次のオプションを無視 します。
avoidsHighwaysavoidsTollsavoidsFerrieslicensePlateRestriction
次のオプションに従います:
地点(経由地)関連のオプション(道路の側面の優先度など)。
ルートの目標 。Navigation SDK で返されたルートを調整する必要がある場合は、ルートトークンのリクエスト時に指定したルート目標を使用します。このため、Routes API で指定したのと同じ地点(経由地)関連のオプションを使用する必要があります。