Domyślnie interfejs API traktuje punkty pośrednie jako przystanki na trasie.
Możesz jednak skonfigurować punkt pośredni jako punkt via, przez który pojazd przejeżdża bez zatrzymywania się.
Używaj punktów pośrednich, przez które chcesz przejechać, aby kształtować lub dostosowywać konkretną trasę. Zamiast dzielić trasę na osobne przystanki odbioru lub wysiadania, punkt pośredni wymusza na silniku routingu przejazd przez określone miejsce w drodze do miejsca docelowego, np. aby przejechać preferowanym odcinkiem drogi lub uniknąć znanego zagrożenia.
Trasa zawierająca miejsce początkowe, co najmniej 1 punkt pośredni i miejsce docelowe zawiera tylko 1 odcinek trasy, który łączy miejsce początkowe bezpośrednio z miejscem docelowym.
Aby skonfigurować punkt pośredni jako punkt, przez który ma przebiegać trasa, ustaw właściwość via punktu na true w zasobie Waypoint REST lub w wiadomości Waypoint gRPC.
Interfejs Routes API akceptuje adresy, identyfikatory miejsc oraz współrzędne szerokości i długości geograficznej, ale współrzędne szerokości i długości geograficznej lub latLng zapewniają najbardziej precyzyjne korekty trasy w przypadku punktów pośrednich.
Właściwość via jest najbardziej przydatna, gdy tworzysz trasy w odpowiedzi na przeciąganie punktów na mapie. Dzięki temu możesz zobaczyć, jak ostateczna trasa wygląda w czasie rzeczywistym, i umieścić punkty orientacyjne w dostępnych miejscach.
Przykład: ustawianie punktu pośredniego, przez który ma przebiegać trasa
Ten przykład pokazuje, jak ustawić parametr "via": true w punkcie pośrednim w pełnym żądaniu computeRoutes POST:
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'
Używanie adresów lub identyfikatorów miejsc w przypadku punktów pośrednich
Chociaż do precyzyjnego wyznaczania trasy przelotowej zalecamy używanie współrzędnych szerokości i długości geograficznej, możesz też określić punkty pośrednie za pomocą ciągu adresu lub identyfikatora miejsca.
Gdy używasz adresu lub identyfikatora miejsca jako punktu pośredniego, interfejs API interpoluje i przyciąga lokalizację do najbliższej drogi, po której można się poruszać. Ten proces przyciągania do drogi może czasami powodować różnice w trasie lub niedokładności w porównaniu z dokładnymi współrzędnymi.
Jeśli określisz punkt pośredni za pomocą ciągu adresu lub Plus Code, interfejs API geokoduje lokalizację i zwraca pasujący identyfikator miejsca w tablicy geocodingResults.intermediates w odpowiedzi.
W przypadku każdego elementu w tablicy intermediates użyj właściwości intermediateWaypointRequestIndex, aby określić, który pośredni punkt pośredni w żądaniu odpowiada identyfikatorowi miejsca w odpowiedzi.
Przykład: żądanie identyfikatorów miejsc dla punktów pośrednich
Poniższy przykład pokazuje żądanie z 3 pośrednimi punktami przelotowymi, z których każdy określa "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'
Odpowiedź zawiera tablicę geocodingResults z identyfikatorami miejsc dla miejsca początkowego, docelowego i 2 punktów pośrednich, które zostały określone przez adres w indeksie żądania 0 i 2. Interfejs API pomija pośredni punkt orientacyjny o indeksie 1 w geocodingResults, ponieważ został on określony za pomocą współrzędnych geograficznych:
{ "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" } ] } }