Оптимизируйте порядок остановок на маршруте

Разработчики из Европейской экономической зоны (ЕЭЗ)

По умолчанию метод Compute Routes вычисляет маршрут через несколько остановок, называемых промежуточными точками, в том порядке, в котором вы их указываете.

Вы можете использовать API маршрутов для оптимизации предоставленного маршрута, переставляя остановки в более эффективном порядке. Оптимизация по точкам маршрута оптимизирует время в пути, но также учитывает другие факторы, такие как расстояние и количество поворотов, при определении наиболее эффективного маршрута.

Для оптимизации путевых точек

  1. Убедитесь, что ни у одной из промежуточных точек маршрута параметр via не установлен в true , например: {"address": "Clare,SA", "via": true} . Дополнительную информацию о промежуточных точках см. в разделе «Указание промежуточных точек ».

  2. Убедитесь, что routing_preference не установлен в значение TRAFFIC_AWARE_OPTIMAL .

  3. Установите optimize_waypoint_order в true . Например:

    "optimizeWaypointOrder": "true",
  4. Укажите поле routes.optimizedIntermediateWaypointIndex в маске поля:

    ОТДЫХ

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    РПК

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

Разберитесь, как оптимизируется порядок путевых точек.

Вот как API маршрутов оптимизирует порядок путевых точек в маршруте:

  1. Автоматически индексирует путевые точки в соответствии с порядком, указанным в запросе, начиная с 0.

  2. Оптимизирует порядок путевых точек, используя индексные номера, присвоенные путевым точкам в запросе.

  3. Возвращает оптимизированный порядок путевых точек в объекте routes , в поле waypoint_order , в параметре routes.optimizedIntermediateWaypointIndex .

Пример

В данном запросе предлагается оптимизировать маршрут из Аделаиды, Южная Австралия, в каждый из основных винодельческих регионов Южной Австралии, а затем вернуться в Аделаиду.

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'

API маршрутов индексирует промежуточные точки маршрута, указанные в запросе, начиная с 0. Например:

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

Используя порядковые номера четырех путевых точек, указанных в запросе, сервис возвращает оптимизированный порядок:

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