ルートを計画する

アプリからユーザーに提供するルートを計画したい場合もあります。使用 Routes API(または Routes Preferred API)からのルート トークンを 計画したルートについて、次の 2 つの点を考慮する必要があります。

  • ルートのポリライン

  • ルートの目標

たとえば、次のようなルーティング目標を設定できます。

  • 配達時間を最小限に抑える: 食品を配達するビジネスは、 料理の配達にかかる時間です

  • 移動時間や燃料消費を最小限に抑える: 物流会社が、 ドライバーの効率を向上させ 燃料費を削減できます

  • 宛先までの所要時間を最小化する: サービス ディスパッチ オペレーションでは、 ジョブ リクエストにオペレーターを取得するまでにかかる時間が最小限に抑えられます。

  • コストの削減と安全性の向上: ライドシェアリング サービスをご利用のお客様は、 乗客にとって料金が安く、安全のために特定のエリアを回避するルート できます。

で確認できます。

ルートトークンを使用したルートの計画の詳細については、以下をご覧ください。 ルートトークンをリクエストする

ルートの目的にルートトークンを使用する理由

Routes または Routes Preferred API のルートトークンを使用すると、 ルートを制御できます。

  • Navigation SDK で使用するルートを事前に計画する おすすめします

  • Navigation SDK の使用に最適なルートを選択する。 Routes API でルートを生成するときにルートトークンをリクエストすると、 生成されたルートごとにルートトークンを取得できます。その後、トークンを選択して 使用するルートを Navigation SDK。

  • 到着予定時刻と距離の推定値を含め、料金を事前に見積もることができます。 実際の費用と時間は異なる場合がありますが、この見積もりにより、 予測と実際のルート費用。

  • エコ ルーティングや最短ルートなど、より高度なルート目標を指定する あります

で確認できます。

Routes API ルートトークンの仕組み

Routes API または Routes Preferred API を使用して ルート目標を使用してルートを計画しますRoutes API からは Navigation SDK に渡すことができるルートトークンを使用して、 ルートを指定します。

ここでは、Cloud Storage からルートトークンをリクエストして Routes API:

  1. Routes API は、ルートを含む暗号化されたルートトークンを返します。 ポリラインとルートの目的を設定します。

  2. ルートトークンを Navigation SDK に渡します。

  3. Navigation SDK がルートを取得するか、ルートがまだない場合 条件の変化により利用可能で、最も一致するものが あります

  4. ルートの運転中、交通情報やその他の道路状況の変化、 計画されたルートから逸脱した場合、変更されたルートが継続的に トークンに含まれるルートの目標に基づいて、最適なルートのマッチングを試みます。

これにより、実際の経路と予定している経路との距離が最大化されます。

計画したルートが正確に動作しない理由

計画したルートとルートの目標は、従うべきガイドラインと考えてください。 規範的なものではありません。予定しているルートと 道路の違いにより、ガイド付きナビで提供されるルート その他のパラメータが変更されたのに 計画したルートを作成しました。この違いが原因で、 距離や到着予定時刻などの重要なルートの計画と実際の目標 品質。

ルートトークンを使用してルートを計画する

ルートトークンを作成して、そのトークンを Navigation SDK を起動できます。手順は次のとおりです。

ステップ 1: Routes または Routes Preferred API を使用してルートトークンを作成する

  1. 次のいずれかの方法でルートトークンをリクエストします。

    • Routes API: computeRoutes。詳細については、このモジュールの Routes API でルートトークンをリクエストする方法については、以下をご覧ください。 ルートを計算する ルートトークンをリクエストする

    • Routes Preferred API: computeCustomRoutes。詳細については、このモジュールの Routes Preferred API でルートトークンをリクエストする方法については、以下をご覧ください。 ルートを計画する

  2. ルートを使用するための要件を満たすようにルート リクエストを設定する token:

    • travel_modeDRIVING に設定する
    • routing_preferenceTRAFFIC_AWARE または TRAFFIC_AWARE_OPTIMAL に設定します。
    • Via ウェイポイントを使用しない

ステップ 2: ルートトークンを Navigation SDK に渡す

  1. ルートトークンを保存する: Navigation SDK 内で文字列を設定します。 ルートトークンを格納します例:

    let routeToken = "route token returned by Routes API"

    返されるルートトークンの例:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Navigation SDK にルートトークンを渡すには、 mapView.navigator setDestinations メソッド(同じデスティネーションを指定する) ルートトークンの作成時に使用したウェイポイント:

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

で確認できます。

Navigator.setDestinations メソッドはリクエストのステータスを返します。 ユーザーの現在地から特定の目的地へのルートが見つかったら、 RouteStatus.OK が返されます。

このメソッドの詳細については、Navigator.setDestinations をご覧ください。

次のコードサンプルは、計画されたルートを取得する方法を示しています。

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 によって生成されたルートと、計画された 相互作用します。

  • 以前に設定した宛先をオーバーライドします。

  • 車両の出発地を使用します。

  • 道路や交通状況に合わせて調整します。詳しくは、 計画したルートが正確には達成されない理由

  • 次のルーティング関連オプションは不要として無視されます。

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • 準拠:

    • 地点関連のオプション: 道路脇の設定など。

    • ルートの目標。Navigation SDK を 返されたルートを調整する場合、指定されたルート ルートトークンをリクエストします。このため、同じ Pod の Routes API で指定した地点関連のオプション。