デフォルトでは、API は中間ウェイポイントをルート上の経由地として扱います。ただし、中間ウェイポイントを、車両が停止せずに通過するパススルー via ウェイポイントとして構成することはできます。
通過ウェイポイントを使用して、特定のルートを形成または調整します。ルートを個別の乗車地点または降車地点に分割するのではなく、通過地点を使用すると、ルーティング エンジンは目的地までの特定の場所を通過します。たとえば、優先道路区間を通過したり、既知の危険を回避したりします。
出発地、1 つ以上の中間地点、目的地を含むルートには、出発地と目的地を直接結ぶルート区間が 1 つだけ含まれます。
中間ウェイポイントを通過ウェイポイントとして構成するには、REST Waypoint リソースまたは gRPC Waypoint メッセージのいずれかで、ウェイポイントの via プロパティを true に設定します。
Routes API では、住所、プレイス ID、緯度と経度の座標を指定できますが、緯度と経度、または latLng の座標を指定すると、通過ウェイポイントのルートを最も正確に調整できます。
via プロパティは、地図上の経由地をドラッグしてルートを作成する場合に最も効果的です。このアプローチでは、最終的なルートがリアルタイムでどのように表示されるかを確認し、アクセス可能な場所に経由地を設定できます。
例: パススルーの経由地を設定する
次の例は、完全な computeRoutes POST リクエストで中間経由地の "via": true を設定する方法を示しています。
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "intermediates": [ { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true } ], "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
通過地点に住所または場所 ID を使用する
正確なパススルー ルーティングには緯度と経度の座標を使用することをおすすめしますが、住所文字列またはプレイス ID を使用して中間経由地を指定することもできます。
パススルー経由地に住所またはプレイス ID を使用すると、API は位置を補間して、最も近いナビゲーション可能な道路にスナップします。この道路スナップ処理により、正確な座標と比較して、ルートのバリエーションや不正確さが生じることがあります。
住所文字列または Plus Code を使用して経由地を指定すると、API はその場所をジオコーディングし、レスポンスの geocodingResults.intermediates 配列で一致するプレイス ID を返します。
intermediates 配列の各要素で、intermediateWaypointRequestIndex プロパティを使用して、リクエストの中間経由地がレスポンスのプレイス ID に対応するかどうかを判断します。
例: パススルー経由地の Place ID をリクエストする
次の例は、3 つの通過中間経由地を含むリクエストを示しています。各経由地で "via": true が指定されています。
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "intermediates": [ { "address": "450 Serra Mall, Stanford, CA 94305, USA", "via": true }, { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true }, { "address": "1836 El Camino Real, Redwood City, CA 94063", "via": true } ], "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
レスポンスには、リクエストのインデックス 0 とインデックス 2 で住所で指定した出発地、目的地、2 つの中間経由地の場所 ID を含む geocodingResults 配列が含まれます。API は、緯度と経度の座標を使用して指定したため、geocodingResults のインデックス 1 の中間経由地を省略します。
{ "routes": [ { "distanceMeters": 54200, "duration": "2400s", "legs": [ { "distanceMeters": 54200, "duration": "2400s", "startLocation": { "latLng": { "latitude": 37.4220, "longitude": -122.0841 } }, "endLocation": { "latLng": { "latitude": 37.7786, "longitude": -122.3893 } } } ] } ], "geocodingResults": { "origin": { "geocoderStatus": {}, "type": [ "premise" ], "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g" }, "destination": { "geocoderStatus": {}, "type": [ "premise" ], "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY" }, "intermediates": [ { "geocoderStatus": {}, "intermediateWaypointRequestIndex": 0, "type": [ "street_address" ], "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y" }, { "geocoderStatus": {}, "intermediateWaypointRequestIndex": 2, "type": [ "premise" ], "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0" } ] } }