ルートの地点を最適化する

ウェイポイントの最適化は、ComputeRoutes を拡張するルート優先機能です。ユーザーの経路における中間地点の順序を最適化し、 可能な限り効率的な経路で移動できるようにすることが目的です。ウェイポイント最適化の ComputeRoutes 実装は、次の移動手段をサポートしています。

  • 電動二輪車
  • サイクリング
  • 徒歩

地点の最適化を使用する理由

多くのウェイポイントを目的地まで案内するアプリを作成する場合 選択する際は、旅行者がルート内を通るウェイポイントを 決定できますこれにより、旅行者は最短時間ですべてのウェイポイントに到着できます。

仕組み

デフォルトでは、ComputeRoutes はウェイポイントを元に指定された順序でルートを計算します。ComputeRoutes を取得すると、中間ウェイポイントをより効率的な順序に並べ替えてルートを最適化できます。リクエスト本文の optimizeWaypointOrder フィールドを true に設定すると、最適化された経由地を含むルートが返されます。

: 地点の最適化の計算は、主に移動時間に基づいて行われます。 距離などの要素も考慮されます ターンの数などです

ウェイポイントの順序を変更する

ウェイポイントの順序が入れ替わったルートを取得するには、リクエストの本文でブール値フィールド optimizeWaypointOrdertrue に設定して ComputeRoutes にします。また、フィールド マスクに optimizedIntermediateWaypointIndex フィールドを含めます。レスポンスの本文には、optimizedIntermediateWaypointIndex フィールドに最適化されたウェイポイントの順序が含まれます。

: optimizedIntermediateWaypointIndex フィールドは 0 から始まり、 使用できます。

リクエスト例

次のリクエストの例では、スタンフォード近郊のルートを提供します あります。ルートのウェイポイントがリクエストで順番に指定されている。リクエストには、出発地と目的地、2 つの中間ウェイポイントが含まれています。

POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.418956,
        "longitude": -122.160815
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.4176423,
          "longitude":-122.1102246
        }
      }
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.407689,
          "longitude": -122.1360597
        }
      }
    }
  ],
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.4032137,
        "longitude": -122.0349119
      }
    }
  },
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": true,
  "routingPreference": "TRAFFIC_AWARE"}

レスポンスの例

並べ替えられた中間ウェイポイント インデックスは、レスポンス本文の routes オブジェクト内の optimizedIntermediateWaypointIndex フィールドで確認できます。エンコードされた ポリライン は以下と同じです: Directions APIComputeRoutes

routes {
  distance_meters: 17647
  duration {
    seconds: 1866
  }
  polyline {
    encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
  }
  optimizedIntermediateWaypointIndex: 1
  optimizedIntermediateWaypointIndex: 0
}

この例では、地点を最適化すると、元の順序が逆になります。

最適化された経由地を含むリクエストは、単純なルーティング リクエストよりも処理に時間がかかります。そのため、X-Server-Timeout リクエスト ヘッダーの値を 10 秒以上に設定して、メソッド呼び出しのタイムアウトを長くすることをおすすめします。タイムアウト エラーが引き続き発生する場合は、別の秒数を もう一度お試しください。

使用制限

地点の最適化を使用するには、次の使用制限に沿う必要があります。 条件:

  • ルートの中間ウェイポイントの使用上限を指定できます。

    • 緯度と経度の座標のみを使用するウェイポイントは最大 98 個。
    • プレイス ID を使用してウェイポイントを指定する場合は、最大 25 個のウェイポイント。
  • すべての地点は立ち寄り場所のタイプにする必要があります。ウェイポイントのタイプを via にすることはできません。

  • フィールド マスクに routes.optimizedIntermediateWaypointIndex を追加する必要があります。

  • リクエストに 25 個以上の中間ウェイポイントが含まれている場合は、次の条件も満たす必要があります。

    • すべてのウェイポイント間の累積直線距離は、 1,000 km 未満です。この距離には、原点と あります。

    • 移動手段は「ドライブ」である必要があります。