При включении маршрутов с меньшим расстоянием функция Compute Routes может возвращать маршруты для автомобилей, оптимизированные для более короткого расстояния.
Если вы запросите маршрут с меньшим расстоянием, сервис вернет:
- Маршрут по умолчанию, оптимизированный в первую очередь по расчетному времени прибытия.
- Более короткий маршрут, оптимизированный для минимизации расстояния на протяжении всей поездки.
Что это такое и зачем это нужно
В маршруте с меньшим расстоянием приоритет отдается расстоянию, а не комфорту вождения или скорости. Например, он может предпочесть местные дороги шоссе, выбрать грунтовые дороги или проехать через парковки. При этом не будут предложены маневры, которые Google Картам известны как незаконные.
Запросите маршрут с меньшим расстоянием
Запрос должен соответствовать следующим критериям:
- Задайте для параметра
travelModeзначениеDRIVE,BICYCLEилиTWO_WHEELER. - Задайте для параметра
requestedReferenceRoutesзначениеSHORTER_DISTANCE. - Установите маску поля ответа, чтобы возвращать свойства ответа, связанные с более коротким маршрутом:
routes.routeLabels– определяет тип маршрута:DEFAULT_ROUTE,SHORTER_DISTANCEилиDEFAULT_ROUTE_ALTERNATE.routes.routeToken– токен маршрута, который можно передать в Navigation SDK, чтобы получить собственный маршрут.
- Не включайте промежуточные путевые точки
Via. - Не добавляйте параметр
optimizeWaypointOrder. - Необязательно. Настройте маску поля ответа, чтобы возвращать следующие свойства, связанные с маршрутом по умолчанию и более коротким маршрутом:
routes.distanceMeters– возвращает расстояние маршрута.routes.duration– возвращает продолжительность маршрута.
Справочную информацию можно найти в разделах ReferenceRoute и RouteLabel.
Пример запроса: маршрут с меньшим расстоянием
В следующем коде показан запрос маршрута с меньшим расстоянием. В этом примере вы используете маску поля ответа, чтобы вернуть поля, связанные с маршрутом по умолчанию и более коротким маршрутом, с помощью следующих масок полей:
routes.distanceMetersroutes.duration
curl -X POST -H 'content-type: application/json' -d '{ "origin": { "location": { "latLng": { "latitude": 41.76904801292959, "longitude": -72.67374935684933 } } }, "destination": { "location": { "latLng": { "latitude": 41.823042361105024, "longitude": -71.40933143059424 } } }, "travelMode":"DRIVE", "routingPreference":"TRAFFIC_AWARE", "requestedReferenceRoutes": ["SHORTER_DISTANCE"], }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY \ -H 'X-Goog-FieldMask: routes.distanceMeters,routes.duration,routes.routeLabels,routes.routeToken' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Пример ответа с более коротким маршрутом
{
"routes": [
{
"distanceMeters": 138943,
"duration": "5373s",
"routeToken": "CrsCCs4BMssBGq8BCkECFg9eN0MowaEI3Y4KqMEhzOTe-Qi3947kBsb8koUBkvX0oAKJ_b1S4uPoUvzzAYfXA92t_RXyw98Up6qKAaRaABIsNBjodKMdkMYAPMLMIajCwj-zsIxpgyBxOLYjdBBeKgkO3tFDDrj4YgZB5bMaFQAATME12CCCA9MEF-kO2wL_____DyoLHgAOAHN3DggAQQEyBAUBAQM9VDgqPkV88FI_SNO81oLq4JnjYyIXcklWWFo2cjhDZmltdk9NUDQ3aU1nUU0QBRpPCk0KGAoNCgIIAREAAAAAAIBmQBF56SYxqDm4QBISCAAQAxAGEBMQEhgCQgQaAggFIhsKF3JJVlhaLWFOQnZpbXZPTVA0N2lNZ1FNcAEoASIVAACBmRY1BjeCiUQewJGTrQ3DuHRp",
"routeLabels": [
"DEFAULT_ROUTE"
]
},
{
"distanceMeters": 112610,
"duration": "7165s",
"routeToken": "CqgCCrsBMrgBGpwBCjYCFg1SN0MowaEI3Y4KjfqjF6Ls9BXc-QGiqCOpu7FDtfCXxSG2zLOGI_r4uQGc-we_nQ7MLAASLDQY6HSjHZDGg26EAFrPI5Q3NxvGA4ELazy3sLYqno_9eAFD2KxlCqAGQeWzGg4AAMQDGwyiAqwwKQggJCoLHgBsCQ8Acm0XWWcyAgQGPVQ4Kj5FfPBSP0jikPWC95WdhIwBIhdySVZYWjZHR0RiTzV2T01QOUpiQXlBTRAFGk8KTQoYCg0KAggCEQAAAAAAAFlAEU5iEFh5af1AEhIIABADEAYQExASGAJCBBoCCAUiGwoXcklWWFo3S09Cck81dk9NUDlKYkF5QU1wASgCIhUAAIGZFlj_CmMgGE6KGZcsE-tEywM",
"routeLabels": [
"SHORTER_DISTANCE"
]
}
]
}
Пример запроса: "Маршрут с минимальным расходом топлива и наименьшим расстоянием"
В приведенном ниже коде показан запрос на маршрут с минимальным расстоянием и маршрут с минимальным расходом топлива.
`
curl -X POST -d '{ "origin": { "location": { "latLng": { "latitude": 41.76904801292959, "longitude": -72.67374935684933 } } }, "destination": { "location": { "latLng": { "latitude": 41.823042361105024, "longitude": -71.40933143059424 } } }, "travelMode":"DRIVE", "routingPreference":"TRAFFIC_AWARE_OPTIMAL", "requestedReferenceRoutes": ["SHORTER_DISTANCE", "FUEL_EFFICIENT"] }'
-H 'Content-Type: application/json'
-H 'X-Goog-Api-Key: YOUR_API_KEY'
-H 'X-Goog-FieldMask: routes.distanceMeters,routes.duration,routes.routeLabels,routes.routeToken'
'https://routes.googleapis.com/directions/v2:computeRoutes'
Пример ответа: более короткий маршрут и маршрут с минимальным расходом топлива.
В этом случае самый короткий маршрут и маршрут с минимальным расходом топлива совпадают, поэтому возвращается именно он, а значок routeLabel добавляется для обоих типов маршрутов.
{ "routes": [ { "distanceMeters": 138943, "duration": "5375s", "routeToken": "Cr8CCs4BMssBGq8BCkECFg9eN0MowaEI3Y4KqMEhzOTe-Qi3947kBsb8koUBkvX0oAKJ_b1S4uPoUvzzAYfXA92t_RXyw98Up6qKAaRaABIsNBjodKMdkMYAPMLMIajCwj-zsIxpgyBxOLYjdBBeKgkO3tFDDrj4YgZB5bMaFQAATME12CCCA9MEF-kO2wL_____DyoLHgAOAHN3DggAQQEyBAUBAQM9VDgqPkV88FI_SNO81oLq4JnjYyIXS1laWFo4T19JcWVCM2ZFUDFMbms4UXcQBRpTClEKGAoNCgIIAREAAAAAAIBmQBFOYhBYGTy4QBIWCAAQAxAGEBMQEhgCQgQaAggFSgIIASIbChdLWVpYWjlpV0g2ZUIzZkVQMUxuazhRd3ABKAEiFQAAgZkW4Df4cspNNJZWlMZuUUxLPQ", "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 112610, "duration": "7156s", "routeToken": "CqwCCrsBMrgBGpwBCjYCFg1SN0MowaEI3Y4KjfqjF6Ls9BXc-QGiqCOpu7FDtfCXxSG2zLOGI_r4uQGc-we_nQ7MLAASLDQY6HSjHZDGg26EAFrPI5Q3NxvGA4ELazy3sLYqno_9eAFD2KxlCqAGQeWzGg4AAMQDGwyiAqwwKQggJCoLHgBsCQ8Acm0XWWcyAgQGPVQ4Kj5FfPBSP0jikPWC95WdhIwBIhdLWVpYWi1UNklfT055OVlQczhhcWlRSRAFGlMKUQoYCg0KAggCEQAAAAAAAFlAEU5iEFh5af1AEhYIABADEAYQExASGAJCBBoCCAVKAggBIhsKF0tZWlhaNERXSF9PTnk5WVBzOGFxaVFJcAEoAiIVAACBmRaESp2EJS5nmwiEF8KH15_f", "routeLabels": [ "FUEL_EFFICIENT", "SHORTER_DISTANCE" ] } ] }
Поддерживаемые регионы
Маршруты на короткие расстояния поддерживаются во всех регионах.
Оплата
Платформа Google Карт не взимает дополнительную плату за использование экспериментальных функций. Плата за использование API будет взиматься в зависимости от других заданных вами параметров.
Подробнее об оплате за использование Routes API…