ルートを計画する

アプリでユーザーに提供するルートを計画する必要がある場合もあります。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 に渡して、車両のルーティング方法をガイドできます。

ルートトークンをリクエストして使用すると、次のようになります。

  1. Routes API、Routes Preferred API、または Route Optimization API は、暗号化されたルートトークンを にはルートのポリラインとルートの目的が含まれます。

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

  3. Navigation SDK はルートを取得します。状況の変化によりルートを取得できない場合は、最適なルートを取得します。

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

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

計画したルートを正確にたどれない理由

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

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

ルートトークンを作成し、そのトークンを Navigation SDK を使用するための手順:

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

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

  2. ルートトークンを使用する要件を満たすように、Routes API または Routes Preferred API リクエストを設定します。

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

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

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

    String routeToken = "route token returned by Routes API";

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

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Navigator.setDestinations メソッドを使用して ルートトークンを Navigation SDK に渡す。ルートトークンの作成時に使用した同じ目的地のウェイポイントを指定します。

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    例:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(TravelMode.DRIVING)
          .build();

Navigator.setDestinations メソッドはリクエストのステータスを返します。条件 車両の場所から指定された目的地までのルートを検索し、 RouteStatus.OK が返されます。

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

次のコード例は、 あります。

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(TravelMode.DRIVING)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

ルートトークンと Navigation SDK の相互作用

Navigation SDK によって生成されたルートと、ルートトークンの計画ルートの相互作用は次のとおりです。

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

  • 車の開始位置を使用します。

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

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

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

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

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