Optymalizuj kolejność przystanków na trasie

Domyślnie metoda Compute Routes interfejsu Routes API oblicza trasę przez wiele przystanków nazywanych punktami na trasie międzylądowania w podanej przez Ciebie kolejności.

Interfejs Routes API może optymalizować wskazaną trasę, zmieniając przystanki w bardziej efektywnej kolejności. Optymalizacja punktów pośrednich jest optymalizowana pod kątem czasu podróży, ale przy wyborze trasy uwzględnia też inne czynniki, takie jak odległość i liczba skrętów.

Optymalizacja punktów na drodze

  1. Żaden z punktów pośrednich na trasie nie może mieć ustawienia via o wartości true, np. {"address": "Clare,SA", "via": true}. Więcej informacji o pośrednich punktach pośrednich znajdziesz w artykule o określaniu pośrednich punktów na trasie.

  2. Upewnij się, że pole routing_preference nie jest ustawione na TRAFFIC_AWARE_OPTIMAL.

  3. Ustaw wartość optimize_waypoint_order na true. Na przykład:

    "optimizeWaypointOrder": "true",
    
  4. Określ pole routes.optimizedIntermediateWaypointIndex w masce pola:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

Zrozumienie sposobu optymalizacji kolejności punktów pośrednich

Oto jak interfejs Routes API optymalizuje kolejność punktów na trasie:

  1. Automatycznie indeksuje punkty na trasie na podstawie kolejności, w jakiej zostały podane w żądaniu, zaczynając od 0.

  2. Optymalizuje kolejność punktów na trasie przy użyciu numerów indeksu przypisanych do punktów pośrednich w żądaniu.

  3. Zwraca zoptymalizowaną kolejność punktów pośrednich w obiekcie routes, w polu waypoint_order, w polu routes.optimizedIntermediateWaypointIndex.

Przykład

Ten wniosek dotyczy optymalizacji trasy z Adelajdy w Australii Południowej do każdego z głównych regionów winiarskich w Australii Południowej, a następnie powrotu do Adelajdy.

curl -X POST -H 'content-type: application/json' -d ' {
  "origin": {
    "address": "Adelaide,SA"
  },
  "destination": {
    "address": "Adelaide,SA"
  },
  "intermediates": [
    {"address": "Barossa+Valley,SA"},
    {"address": "Clare,SA"},
    {"address": "Connawarra,SA"},
    {"address": "McLaren+Vale,SA"}
  ],
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": "true"
  }' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Interfejs Routes API indeksuje pośrednie punkty na trasie podane w żądaniu, zaczynając od 0. Na przykład:

0    {"address": "Barossa+Valley,SA"},
1    {"address": "Clare,SA"},
2    {"address": "Connawarra,SA"},
3    {"address": "McLaren+Vale,SA"}

Korzystając z numerów indeksu 4 punktów pośrednich podanych w żądaniu, usługa zwraca zoptymalizowaną kolejność:

"optimizedIntermediateWaypointIndex": [
                3,
                2,
                0,
                1
            ]