Optymalizacja punktów kontrolnych to funkcja Preferowane trasy, która rozszerza ComputeRoutes
.
Optymalizuje kolejność pośrednich punktów na trasie podróży,
zapewniając, że podróżują najefektywniejszą możliwą trasą. ComputeRoutes
Wdrożenie optymalizacji punktów pośrednich obsługuje te tryby podróży:
- Samochód
- Motocyklowe
- Kolarstwo
- Spacer
Dlaczego warto korzystać z optymalizacji punktów pośrednich?
Podczas tworzenia aplikacji, która prowadzi użytkowników przez kilka punktów pośrednich na drodze do celu, ważne jest, aby podróżujący przemierzał te punkty w optymalnej kolejności. 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ę przez punkty drogi w kolejności, w jakiej zostały one pierwotnie podane. Możesz uzyskać ComputeRoutes
na optymalizację
na trasie, zmieniając kolejność pośrednich punktów pośrednich na bardziej efektywne.
Jeśli w polu optimizeWaypointOrder
w ciele żądania ustawisz wartość true
, otrzymasz trasę z zoptymalizowanymi punktami pośrednimi.
Uwaga: obliczenie optymalizacji punktów drogi opiera się głównie na czasie przejazdu, ale funkcja uwzględnia też inne czynniki, takie jak odległość i liczba zakrętó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 pośrednie trasy zostały podane w kolejności w żądaniu. Żądanie zawiera punkt początkowy i miejsce docelowe z 2 punktami pośrednimi.
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ź
Ponowo posortowane indeksy punktów pośrednich znajdziesz w polach optimizedIntermediateWaypointIndex
w obiekcie routes w ciele 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
Żądanie z zoptymalizowanymi punktami drogi zajmuje więcej czasu na przetworzenie niż zwykłe żądanie wyznaczenia trasy. 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 użytkowania
Aby korzystać z optymalizacji punktów pośrednich, musisz przestrzegać tych ograniczeń wykorzystania warunki:
Możesz określić limit wykorzystania dla pośrednich punktów kontrolnych na trasie:
- Maksymalnie 98 punktów na trasie za pomocą współrzędnych geograficznych.
- Do 25 punktów pośrednich, jeśli określisz je za pomocą identyfikatorów miejsc.
Wszystkie punkty na trasie muszą być typu przystanek. Żaden z punktów kontrolnych nie może być typu via.
Do pola maski musisz dodać
routes.optimizedIntermediateWaypointIndex
.Jeśli Twoja prośba zawiera co najmniej 25 punktów pośrednich, musi też spełniać te warunki:
Łączna odległość w linii prostej między wszystkimi punktami kontrolnymi musi wynosić mniej niż 1000 km. Ta odległość obejmuje zarówno miejsce wylotu, jak i miejsce docelowe.
Tryb podróży musi być ustawiony na Drive.