Zoptymalizuj punkty na trasie

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ą. ComputeRoutesWdroż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.

Żą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.