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, 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śloną lokalizację 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 etap, 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 dostosowania trasy w przypadku punktów pośrednich.
Właściwość via jest najbardziej skuteczna, gdy tworzysz trasy w odpowiedzi na przeciąganie punktów na mapie. Dzięki temu możesz w czasie rzeczywistym zobaczyć, jak wygląda ostateczna trasa, i umieszczać punkty na trasie w miejscach dostępnych dla osób z niepełnosprawnością.
Przykład: ustawianie punktu pośredniego, przez który ma przebiegać trasa
Ten przykład pokazuje, jak ustawić wartość "via": true w punkcie pośrednim w pełnym żądaniu POST computeRoutes:
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
Zalecamy używanie współrzędnych geograficznych, aby uzyskać precyzyjne przekazywanie informacji o trasie, ale możesz też określić pośrednie punkty trasy za pomocą ciągu znaków adresu lub identyfikatora miejsca.
Jeśli 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 dopasowywania do dróg 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 kodu plus, 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 na trasie w żądaniu odpowiada identyfikatorowi miejsca w odpowiedzi.
Przykład: żądanie identyfikatorów miejsc dla punktów pośrednich, przez które chcesz przejechać
Ten 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 określonych przez adres w indeksie żądania 0 i 2. Interfejs API pomija pośredni punkt trasy o indeksie 1 z 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" } ] } }