Optymalizacja punktów pośrednich to funkcja Preferowane trasy, która rozszerza możliwości ComputeRoutes
.
Optymalizuje kolejność pośrednich punktów na trasie podróży, zapewniając, że podróżują one najwydajniejszą możliwą trasą. Implementacja optymalizacji punktów pośrednich (ComputeRoutes
) obsługuje te środki transportu:
- Samochód
- Motocyklowe
- Kolarstwo
- Spacer
Dlaczego warto korzystać z optymalizacji punktów pośrednich?
Gdy tworzysz aplikację, która prowadzi użytkowników przez różne punkty na trasie do celu, ważne jest, aby podróżny przemierzał je w optymalnej kolejności. Dzięki temu podróżny dotrze do każdego punktu pośredniego w jak najkrótszym czasie.
Jak to działa
Domyślnie ComputeRoutes
oblicza trasę przy użyciu punktów pośrednich w kolejności, w jakiej zostały podane. Możesz uzyskać ComputeRoutes
, aby zoptymalizować trasę, zmieniając kolejność pośrednich punktów pośrednich na bardziej efektywne.
Otrzymasz trasę ze zoptymalizowanymi punktami pośrednimi, jeśli w polu optimizeWaypointOrder
w treści żądania ustawisz wartość true
.
Uwaga: obliczanie optymalizacji punktu pośredniego opiera się głównie na czasie podróży, ale funkcja uwzględnia też inne czynniki, takie jak odległość i liczba skrętów.
Pobierz ponownie uporządkowane punkty pośrednie
Aby uzyskać trasę ze zmienionymi punktami pośrednimi, ustaw pole wartości logicznej optimizeWaypointOrder
na true
w treści żądania na ComputeRoutes
. Dodaj też do maski pola pole optimizedIntermediateWaypointIndex
. Treść odpowiedzi zawiera w polach optimizedIntermediateWaypointIndex
zoptymalizowaną kolejność punktów pośrednich.
Uwaga: pole optimizedIntermediateWaypointIndex
zwraca wartości liczone od zera.
Przykładowe żądanie
Żądanie poniżej dostarcza trasę w pobliżu kampusu Uniwersytetu Stanforda. Punkty na trasie zostały przesłane po kolei w żądaniu. Żądanie zawiera punkt początkowy i miejsce docelowe oraz 2 pośrednie punkty pośrednie.
POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
"origin":{
"location":{
"latLng":{
"latitude": 37.418956,
"longitude": -122.160815
}
}
},
"intermediates": [
{
"location":{
"latLng":{
"latitude": 37.4176423,
"longitude":-122.1102246
}
}
},
{
"location":{
"latLng":{
"latitude": 37.407689,
"longitude": -122.1360597
}
}
}
],
"destination":{
"location":{
"latLng":{
"latitude": 37.4032137,
"longitude": -122.0349119
}
}
},
"travelMode": "DRIVE",
"optimizeWaypointOrder": true,
"routingPreference": "TRAFFIC_AWARE"}
Przykładowa odpowiedź
Zmienione indeksy pośrednich punktów pośrednich znajdziesz w polach optimizedIntermediateWaypointIndex
w obiekcie tras w treści odpowiedzi. Zakodowana linia łamana jest taka sama jak w Directions API i ComputeRoutes.
routes {
distance_meters: 17647
duration {
seconds: 1866
}
polyline {
encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
}
optimizedIntermediateWaypointIndex: 1
optimizedIntermediateWaypointIndex: 0
}
W tym przykładzie optymalizacja punktów pośrednich odwraca ich pierwotną kolejność.
Zalecane metody
Przetwarzanie żądania ze zoptymalizowanymi punktami pośrednimi trwa dłużej niż przetwarzanie prostego żądania routingu. Dlatego zalecamy ustawienie dłuższego czasu oczekiwania na wywołanie metody przez ustawienie wartości nagłówka żądania X-Server-Timeout
na co najmniej 10 sekund. Jeśli nadal będą pojawiać się błędy przekroczenia limitu czasu, możesz dodać kolejną sekundę i spróbować jeszcze raz.
Ograniczenia dotyczące wykorzystania
Aby korzystać z optymalizacji punktów pośrednich, musisz przestrzegać tych ograniczeń i warunków wykorzystania:
Na trasie możesz określić maksymalny limit wykorzystania dla pośrednich punktów pośrednich:
- Maksymalnie 98 punktów na trasie za pomocą współrzędnych geograficznych.
- Maksymalnie 25 punktów pośrednich, jeśli określisz punkty pośrednie za pomocą identyfikatorów miejsc.
Wszystkie punkty na trasie muszą być typu przystanek. Żaden z punktów na trasie nie może być typu przez.
Do maski pola musisz dodać atrybut
routes.optimizedIntermediateWaypointIndex
.Jeśli żądanie zawiera 25 lub więcej pośrednich punktów pośrednich, musi również spełniać następujące warunki:
Łączna odległość w linii prostej między wszystkimi punktami na trasie musi być mniejsza niż 1000 km. Obejmuje ona zarówno miejsce wylotu,jak i cel podróży.
Tryb podróży musi być ustawiony na Drive.