Optymalizuj kolejność przystanków na trasie

Domyślnie metoda interfejsu Routes API Compute Routes oblicza trasę z kilkoma przystankami, zwanymi punktami pośrednimi, w kolejności, w jakiej je podasz.

Interfejs Routes API może zoptymalizować podany szlak, zmieniając kolejność przystanków na bardziej efektywną. Optymalizacja punktów kontrolnych optymalizuje czas podróży, ale przy podejmowaniu decyzji o najbardziej efektywnej trasie bierze pod uwagę także inne czynniki, takie jak odległość i liczba zakrętów.

Optymalizacja punktów pośrednich

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

  2. Upewnij się, że nagłówek routing_preference nie jest ustawiony na TRAFFIC_AWARE_OPTIMAL.

  3. Ustaw optimize_waypoint_order na true. Na przykład:

    "optimizeWaypointOrder": "true",
    
  4. W polu maski wskaż pole routes.optimizedIntermediateWaypointIndex:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

Jak optymalizowany jest kolejność punktów orientacyjnych

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

  1. automatycznie indeksuje punkty pośrednie na podstawie kolejności podania ich w żądaniu, zaczynając od 0;

  2. Optymalizuje kolejność punktów kontrolnych za pomocą przypisanych do nich numerów indeksu w żądaniu.

  3. Zwraca kolejność punktów kontrolnych zoptymalizowanych w obiekcie routes w polu waypoint_order w sekcji routes.optimizedIntermediateWaypointIndex.

Przykład

W tym żądaniu prosi się o optymalizację trasy z Adelaide w Australii Południowej do każdego z głównych regionów winiarskich w tej prowincji, a potem z powrotem 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 kontrolne 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 kontrolnych podanych w żądaniu, usługa zwraca zoptymalizowany porządek:

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