デフォルトでは、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 はその場所をジオコーディングし、一致するプレイス ID をレスポンスの geocodingResults.intermediates 配列で返します。
intermediates 配列の各要素について、intermediateWaypointRequestIndex プロパティを使用して、リクエスト内のどの中間ウェイポイントがレスポンス内のプレイス ID に対応するかを判断します。
例: パススルー ウェイポイントのプレイス 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" } ] } }