ルート上の停車地の順序を最適化する

Routes API の Compute Routes メソッドは、デフォルトでは複数の停車地(停車地点の地点と呼ばれます)を通るルートを、指定された順序で計算します。

Routes API では、停車地を効率的な順序で並べ替えることで、指定されたルートを最適化できます。地点の最適化では、移動時間を最適化しますが、最も効率的なルートを決定する際は距離や曲がり角などの要素も考慮されます。

地点を最適化するため

  1. 経路上のどの地点にも viatrue に設定されていないことを確認します(例: {"address": "Clare,SA", "via": true})。中間地点の詳細については、中間地点を指定するをご覧ください。

  2. routing_preferenceTRAFFIC_AWARE_OPTIMAL に設定されていないことを確認します。

  3. [optimize_waypoint_order] を [true] に設定します。例:

    "optimizeWaypointOrder": "true",
    
  4. フィールド マスクで routes.optimizedIntermediateWaypointIndex フィールドを指定します。

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    リモート プロシージャ コール(RPC)

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

地点の順序を最適化する方法を理解する

Routes API でルート内の地点の順序を最適化する方法を以下に示します。

  1. リクエストで指定した順序に基づいて、地点に対して 0 から自動的にインデックスを作成します。

  2. リクエスト内の地点に割り当てられたインデックス番号を使用して、地点の順序を最適化します。

  3. routes オブジェクトの waypoint_order フィールドの routes.optimizedIntermediateWaypointIndex にある、最適化された地点の順序を返します。

このリクエストは、南オーストラリアのアデレードから南オーストラリアの各主要ワイン産地を結んでから、アデレードに戻るルートの最適化を求めています。

curl -X POST -H 'content-type: application/json' -d ' {
  "origin": {
    "address": "Adelaide,SA"
  },
  "destination": {
    "address": "Adelaide,SA"
  },
  "intermediates": [
    {"address": "Barossa+Valley,SA"},
    {"address": "Clare,SA"},
    {"address": "Connawarra,SA"},
    {"address": "McLaren+Vale,SA"}
  ],
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": "true"
  }' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Routes API は、リクエストで指定された中間地点を 0 からインデックスに登録します。例:

0    {"address": "Barossa+Valley,SA"},
1    {"address": "Clare,SA"},
2    {"address": "Connawarra,SA"},
3    {"address": "McLaren+Vale,SA"}

サービスは、リクエストで提供された 4 つの地点のインデックス番号を使用して、最適化された順序を返します。

"optimizedIntermediateWaypointIndex": [
                3,
                2,
                0,
                1
            ]