Zoptymalizuj punkty na trasie

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.

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.