Optymalizacja punktów pośrednich jest funkcją Preferowaną tras, która obejmuje również
ComputeRoutes
Optymalizuje kolejność pośrednich punktów na trasie podróży,
zapewniając, że podróżują najefektywniejszą możliwą trasą. ComputeRoutes
implementacja optymalizacji punktów pośrednich obsługuje następujące tryby podróży:
- Samochód
- Motocyklowe
- Kolarstwo
- Spacer
Dlaczego warto korzystać z optymalizacji punktów pośrednich?
Tworząc aplikację, która prowadzi użytkowników przez wiele punktów na trasie cel podróży, podróżny musi pokonywać trasy w optymalnym porządku. Dzięki temu podróżny dotrze do każdego punktu pośredniego w najkrótszym czasie.
Jak to działa
Domyślnie ComputeRoutes
oblicza trasę przy użyciu swoich punktów na trasie w kolejności
w których zostały pierwotnie umieszczone. Możesz uzyskać ComputeRoutes
na optymalizację
na trasie, zmieniając kolejność pośrednich punktów pośrednich na bardziej wydajną.
Otrzymasz trasę ze zoptymalizowanymi punktami pośrednimi, jeśli ustawisz
optimizeWaypointOrder
w treści żądania do true
.
Uwaga: obliczanie optymalizacji punktu pośredniego opiera się głównie na czasie podróży, ale przy uwzględnianiu innych czynników, takich jak odległość oraz liczbę zwojów.
Pobierz ponownie uporządkowane punkty pośrednie
Aby uzyskać trasę ze zmienionymi punktami na trasie, ustaw pole wartości logicznej
optimizeWaypointOrder
do: true
w treści Twojego żądania do
ComputeRoutes
Dodaj też pole optimizedIntermediateWaypointIndex
w masce pola. Treść odpowiedzi zawiera zoptymalizowaną kolejność punktów pośrednich w argumencie
optimizedIntermediateWaypointIndex
.
Uwaga: pole optimizedIntermediateWaypointIndex
zwraca wartość zerową.
.
Przykładowe żądanie
Poniższe przykładowe żądanie dostarcza trasę w pobliżu Uniwersytetu Jagiellońskiego Kampus uniwersytecki. Punkty na trasie zostały przesłane po kolei w użytkownika. Żądanie zawiera miejsce wylotu i miejsce docelowe, w tym dwa 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
optimizedIntermediateWaypointIndex
pól w obiekcie tras w tabeli
treść odpowiedzi. Zakodowany
linia łamana
jest taka sama jak w
Directions API oraz
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 powoduje odwrócenie ich pierwotnej wartości zamówienie.
Zalecane metody
Przetwarzanie żądania ze zoptymalizowanymi punktami pośrednimi trwa dłużej niż przetwarzanie prostego wyznaczania tras
użytkownika. W związku z tym 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
sek. Jeśli nadal będą pojawiać się błędy przekroczenia limitu czasu, możesz dodać kolejną sekundę
i spróbuj jeszcze raz.
Ograniczenia dotyczące wykorzystania
Aby korzystać z optymalizacji punktów pośrednich, musisz przestrzegać tych ograniczeń wykorzystania warunki:
Dla pośrednich punktów pośrednich na swojej trasa:
- 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 Twoich punktów pośrednich może być typu przez.
Musisz dodać do pola
routes.optimizedIntermediateWaypointIndex
maską.Jeśli żądanie obejmuje co najmniej 25 punktów pośrednich, musi również musisz spełniać następujące warunki:
Łączna odległość prostej między wszystkimi punktami na trasie musi być poniżej 1000 km. Ta odległość obejmuje zarówno punkt początkowy, jak i miejsce docelowe.
Tryb podróży musi być ustawiony na Drive.