По умолчанию метод Compute Routes API маршрутов рассчитывает маршрут с несколькими остановками, которые называются путевыми точками с остановкой, в том порядке, в котором вы их указали.
Вы можете попросить Routes API оптимизировать маршрут, поменяв очередность остановок. Оптимизация путевых точек позволяет сократить время в пути, но при этом учитывает и другие факторы, например расстояние и количество поворотов, чтобы выбрать наиболее эффективный маршрут.
Как оптимизировать маршрутные точки
Убедитесь, что ни для одной из путевых точек в маршруте не задано значение
trueдля параметраvia, например:{"address": "Clare,SA", "via": true}. Подробнее о промежуточных путевых точках…Убедитесь, что свойство
routing_preferenceне имеет значениеTRAFFIC_AWARE_OPTIMAL.Задайте для параметра
optimize_waypoint_orderзначениеtrue. Пример:"optimizeWaypointOrder": "true",
Укажите поле
routes.optimizedIntermediateWaypointIndexв маске поля:REST
-H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex
RPC
const (fieldMask = "routes.optimizedIntermediateWaypointIndex")
Как оптимизируется порядок путевых точек
Вот как Routes API оптимизирует порядок путевых точек в маршруте:
Автоматически индексирует путевые точки на основе порядка, в котором вы указываете их в запросе, начиная с 0.
Оптимизирует порядок путевых точек, используя присвоенные им в запросе индексы.
Возвращает оптимизированный порядок путевых точек в объекте
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'
Routes 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 ]