根據預設,API 會將中途路線控點視為路線上的停靠點。不過,您可以將中繼途中的航點設為直通航點,讓車輛通過而不停靠。via
使用途經點來調整特定路線。與其將路線分成不同的上車或下車地點,不如使用中途路線控點,強制路線引擎在前往目的地的途中經過特定地點,例如行經偏好的路段或避開已知危險。
如果路線包含起點、一或多個中途路線控點和目的地,則只會包含一個路線路段,直接連接起點和目的地。
如要將中途路線控點設為直通路線控點,請在 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。
範例:要求傳遞途中的途經點地點 ID
以下範例顯示含有三個直通中途航點的要求,每個航點都指定 "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'
回應包含 geocodingResults 陣列,其中含有起點、目的地,以及您在要求索引 0 和索引 2 中以地址指定的兩個中途路線控點的地點 ID。由於您使用經緯度座標指定索引 1 的中途停靠點,因此 API 會從 geocodingResults 中省略該停靠點:
{ "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" } ] } }