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

デフォルトでは、Routes API は Compute Routes メソッドは、複数の停車地を通るルート(経由地のウェイポイント)を計算します。 指定順に配置できます。

Routes API では、指定されたルートを再配置して、 経由するようになります地点の最適化による移動の最適化 距離や曲がり角などの要素も考慮されます 最も効率的なルートを決定します

地点を最適化するため

  1. ルート上のどの地点も viatrue に設定していないことを確認します。 例: {"address": "Clare,SA", "via": true}。詳細については、このモジュールの 中間ウェイポイントについては、 中間地点を指定します

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

  3. optimize_waypoint_ordertrue に設定します。例:

    "optimizeWaypointOrder": "true",
    
  4. フィールドに routes.optimizedIntermediateWaypointIndex フィールドを指定する mask:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

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

Routes API がルート内のウェイポイントの順序を最適化する仕組みは次のとおりです。

  1. 指定した順序に基づいて、ウェイポイントを自動的にインデックスに登録します 0 から始まります。

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

  3. routes オブジェクト内で最適化されたウェイポイントの順序を返します。 routes.optimizedIntermediateWaypointIndex の下にある waypoint_order フィールド。

このリクエストは、南オーストラリア州アデレードからのルートの最適化を要求しています。 南オーストラリアの主要ワイン各地域に送られ その後アデレードに戻ってきました

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
            ]