アプリがユーザーに提供するルートを計画したい場合があります。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", }mapView.navigator.setDestinationsを使用して、Navigation SDK にルートトークンを渡します。ルートトークンの作成時に使用したのと同じ宛先ウェイポイントを指定します。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 で指定したのと同じ経由地関連のオプションを使用する必要があります。