Optymalizuj kolejność przystanków na trasie

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Domyślnie metoda interfejsu Routes APICompute Routesoblicza trasę przez wiele przystanków, zwanych punktami pośrednimi, w kolejności, w jakiej je podasz.

Interfejs Routes API może zoptymalizować podaną trasę, zmieniając kolejność przystanków na bardziej efektywną. Optymalizacja punktów pośrednich optymalizuje czas podróży, ale bierze też pod uwagę inne czynniki, takie jak odległość i liczba zakrętów, aby określić, która trasa jest najbardziej efektywna.

Optymalizacja punktów pośrednich

  1. Upewnij się, że żaden z punktów na trasie nie ma ustawionej wartości via na true, np. {"address": "Clare,SA", "via": true}. Więcej informacji o pośrednich punktach trasy znajdziesz w artykule Określanie pośrednich punktów trasy.

  2. Sprawdź, czy nagłówek routing_preference nie jest ustawiony 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")

Optymalizacja kolejności punktów

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

  1. Automatycznie indeksuje punkty pośrednie na podstawie kolejności, w jakiej podajesz je w żądaniu, zaczynając od 0.

  2. Optymalizuje kolejność punktów pośrednich, używając numerów indeksów przypisanych do nich w żądaniu.

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

Przykład

To żądanie dotyczy optymalizacji trasy z Adelaide w Australii Południowej do każdego z głównych regionów winiarskich w Australii Południowej, a następnie powrotu do Adelaide.

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": "Coonawarra,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,geocodingResults.intermediates.intermediateWaypointRequestIndex' \
'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": "Coonawarrav,SA"},
3    {"address": "McLaren+Vale,SA"}

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

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