Построение маршрута

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

/directions  точка вызова сервиса построения маршрутов с возможностью расчёта нескольких альтернативных маршрутов за один запрос и поддержкой пробок.

Запрос

Запрос передается в формате json в HTTP body. Json запроса состоит из обязательных и не обязательных полей. В url запроса должны быть заданы обязательные параметры.

Простой пример json запроса: 

{
   "locations":[
      {
         "lat":43.133200,
         "lon":131.911300
      },
      {
         "lat":50.266000,
         "lon":127.535600
      }
   ],
   "costing":"auto",
   "costing_options":{
      "auto":{
         "use_border_crossing":0
      }
   },
   "directions_options":{
      "units":"kilometers"
   },
   "id":"my_route"
}

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

Обязательные url-параметры запроса

Имя параметра
Формат
Описание
Пример
api_key hex-string Доступ к сервисам
fa749bace6d8a3b1....

Обязательные json-поля в HTTP body запроса

Имя поля
Формат
Описание
Пример
locations list

Список точек для построения маршрута в массиве JSON. Маршрут между точками строится в порядке, который задан в запросе.

Каждая точка задается параметрами, описание которых приведено ниже

"locations":
[
    {
     "lat":55.796932,
     "lon":37.537849,
     "heading":150
    },
    {
     "lat":55.865625,
     "lon":37.462290,
     "type":"via"
    },
    {
     "lat":55.962139,
     "lon":37.406377
    }
]
lat float Широта точки маршрута в градусах. Используется 6 знаков после запятой
"lat":55.796932

lon float Долгота точки маршрута в градусах. Используется 6 знаков после запятой
"lon":37.537849

Дополнительные json-поля в HTTP body запроса

Имя поля
Формат
Описание
Пример
type string

Тип точки маршрута. Является опциональным полем запроса и влияет на два параметра: возможность разворота в данной точке и создание отдельной ветки ведения в списке legs:

  • break (по умолчанию)  развороты разрешены, для этой точки будет создана отдельная ветка ведения в списке legs
  • through  развороты запрещены, для этой точки не будет создана отдельная ветка ведения в списке legs
  • via  развороты разрешены, для этой точки не будет создана отдельная ветка ведения в списке legs
  • break_through — развороты запрещены, для этой точки будет создана отдельная ветка ведения в списке legs
Типы для первой и последней точек маршрута игнорируются и всегда считаются равным break

"type":"break"
"type":"via"
heading float

Предпочтительное направление движения при старте (является опциональным параметром запроса). 

Направление указывается в градусах с севера по часовой стрелке, где север  0°, восток  90°, юг  180°, запад  270°

"heading":150
costing string

Тип транспорта для построения маршрута:

  • auto (по умолчанию)  автомобильный;
  • truck  грузовой;
  • pedestrian  пешеходный;
  • bicycle — велосипедный;
  • taxi — такси и другой транспорт, допущенный к использованию полос общественного транспорта.
"costing":"pedestrian"
costing_options dict

Список параметров расчёта маршрута. Для различных типов транспорта используются различные опции и ограничения.

При использовании параметров расчёта маршрута необходимо указать тип транспорта, для которого будут браться параметры:

  • auto (по умолчанию)  автомобильный;
  • truck  грузовой;
  • pedestrian  пешеходный;
  • bicycle  велосипедный;
  • taxi — такси и другой транспорт, допущенный к использованию полос общественного транспорта.
"costing_options":
{
    "auto":
    {
        "use_border_crossing":0,
        "use_tolls":0
    }
}
units string

Единица измерения расстояния в ответе:

  • kilometers (по умолчанию)  километры;
  • miles  мили.
"units":"miles"
language string

Язык ответа:

  • ru-RU (по умолчанию)  русский;
  • en-US  английский.
"language":"en—US"
id string Идентификатор запроса, который возвращается вместе с ответом, что позволяет точно установить соответствие запроса и ответа.
"id":"route_to_airport"
directions_type
  • none
  • maneuvers
  • instructions

Включить описание маневров.

Возможные значения:

  • none (по умолчанию)  исключить описание манёвров из ответа;
  • maneuvers  включить описание манёвров в ответ.
  • instructions  добавить в описание маневров инструкции на соответствующем языке

"directions_type": "instructions"
avoid_locations list Набор местоположений, которые необходимо избегать при построении маршрута. Задаётся в виде массива точек с указанием широты и долготы
"avoid_locations":
[
    {
     "lat":55.871899,
     "lon":37.457765
    },
    {
     "lat":55.884556,
     "lon":37.441633
    },
    {
     "lat":55.923995,
     "lon":37.395115
    }
]
date_time list

Дата и время в точке отправления или назначения для определения более точных результатов построения маршрута.

Определяется двумя параметрами:

  • type  тип даты и времени:
    • 0 (по умолчанию) — текущая дата и время в точке отправления, значение value игнорируется;
    • 1 — дата и время отправления;
    • 2 — дата и время прибытия.
  • value — значение требуемых даты и времени указываются в формате ISO 8601 (ГГГГ-ММ-ДДTчч:мм) в местном часовом поясе отправления или прибытия в зависимости от параметра type.
"date_time":
{
     "type":2,
     "value":"2020—12—33T21:00"
}
alternates integer

Максимальное количество альтернативных маршрутов в дополнение к основному (возвращается при их наличии).

Определяется значением от 0 до 4, где:

  • 0 (по умолчанию) — будет построен один маршрут, без расчёта альтернативных;
  • 4 — будет рассчитано пять маршрутов;

— дробные значения не допускаются.

"alternates":3
alternates_multi_points boolean

Атрибут для возможного включения построения альтернативных маршрутов при наличии в запросе промежуточных точке. По умолчанию — false.

"alternates_multi_points":true
completeness string

Атрибут для возможного расширения ответа.

Возможные значения:

  • minimal (по умолчанию) — возврат минимальной информации (только маневры, без ребер);
  • enriched — возврат информации обо всех ребрах, входящих в маршрут.

"completeness":"enriched"

Costing options

Auto

Имя поля
Формат
Описание
Пример
use_unpaved float

Значение, указывающее на готовность использовать грунтовые дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать грунтовые дороги;
  • 1 — использовать грунтовые дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_unpaved":0.5
use_highways float

Значение, указывающее на готовность использовать автомагистрали при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать автомагистрали;
  • 1 (по умолчанию) — использовать автомагистрали;

— допускаются дробные значения.

"use_highways":0
use_tolls float

Значение, указывающее на готовность использовать платные дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать платные дороги;
  • 1 — использовать платные дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_tolls":0
use_ferry float

Значение, указывающее на готовность использовать паромные переправы при построении маршрута.

Определяется значением от 0 до 1, где:

  • — не использовать паромные переправы;
  • 1 — использовать паромные переправы;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_ferry":0.1
use_border_crossing float

Значение, указывающее на готовность использовать дороги пересекающие границы других государств при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать использовать дороги пересекающие границы других государств;
  • 1 (по умолчанию) — использовать использовать дороги пересекающие границы других государств;

— допускаются дробные значения.

"use_border_crossing":0
traffic boolean

Учитывать пробки и дорожные события при построении маршрута.

Возможные значения:

  • false (по умолчанию) — не учитывать пробки и дорожные события;
  • true — учитывать пробки и дорожные события.
"traffic":true

Truck

Имя поля
Формат
Описание
Пример
weight float

Указание массы автомобиля в тоннах, для построения маршрута с учётом допустимых весовых нагрузок на дорожную сеть.

Значение по умолчанию: 21.77 тонн.

Номер дорожного знака по ГОСТ: 3.11.

"weight":10

height

float

Высота грузовика в метрах.

Значение по умолчанию: 4.11 м.

Номер дорожного знака по ГОСТ: 3.13.

"height":4.0

width

float

Ширина грузовика в метрах.

Значение по умолчанию: 9.07 м.

Номер дорожного знака по ГОСТ: 3.14.

"width":11.1

length

float

Длина грузовика в метрах.

Значение по умолчанию: 21.64 м.

Номер дорожного знака по ГОСТ: 3.15.

"length":19.4

axle_load

float

Нагрузка на ось в тоннах.

Значение по умолчанию: 9.07 тонн.

Номер дорожного знака по ГОСТ: 3.12.

"axle_load":10.3

hazmat

boolean

Флаг, определяющий везет ли грузовик опасные материалы.

Значение по умолчанию: false.

Номер дорожного знака по ГОСТ: 3.32.

"hazmat":true
use_unpaved float

Значение, указывающее на готовность использовать грунтовые дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать грунтовые дороги;
  • 1 — использовать грунтовые дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_unpaved":0.5
use_highways float

Значение, указывающее на готовность использовать автомагистрали при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать автомагистрали;
  • 1 (по умолчанию) — использовать автомагистрали;

— допускаются дробные значения.

"use_highways":0
use_tolls float

Значение, указывающее на готовность использовать платные дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать платные дороги;
  • 1 — использовать платные дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_tolls":0
use_ferry float

Значение, указывающее на готовность использовать паромные переправы при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать паромные переправы;
  • 1 — использовать паромные переправы;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_ferry":0.1
use_border_crossing float

Значение, указывающее на готовность использовать дороги пересекающие границы других государств при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать использовать дороги пересекающие границы других государств;
  • 1 (по умолчанию) — использовать использовать дороги пересекающие границы других государств;

— допускаются дробные значения.

"use_border_crossing":0
traffic boolean

Учитывать пробки и дорожные события при построении маршрута.

Возможные значения:

  • false (по умолчанию) — не учитывать пробки и дорожные события;
  • true — учитывать пробки и дорожные события.
"traffic":true

Pedestrian

Имя поля
Формат
Описание
Пример
walking_speed float

Средняя скорость движения пешком. Указывается в километрах в час.

Значение по умолчанию: 5.1 км/ч

"walking_speed":3
use_ferry float

Значение, указывающее на готовность использовать паромные переправы при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать паромные переправы;
  • 1 — использовать паромные переправы;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_ferry":0.1
use_unpaved float

Значение, указывающее на готовность использовать грунтовые дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать грунтовые дороги;
  • 1 — использовать грунтовые дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_unpaved":0.5
use_roads float

Значение, указывающее на готовность использовать автомобильные дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать автомобильные дороги;
  • 1 — использовать автомобильные дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_road":0
use_border_crossing float

Значение, указывающее на готовность использовать дороги пересекающие границы других государств при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать использовать дороги пересекающие границы других государств;
  • 1 (по умолчанию) — использовать использовать дороги пересекающие границы других государств;

— допускаются дробные значения.

"use_border_crossing":0
use_hills float

Значение, указывающее на готовность следовать по маршруту с перепадами высот. Участвует в выборе подходящего маршрута и расчете ETA.

Определяется значением от 0 до 1, где:

  • 0 — максимально избегать перепадов рельефа местности, даже если это приведет к построению более длинного маршрута;
  • 1 — не избегать перепадов рельефа местности.

Допускаются дробные значения.

Значение по умолчанию: 0.5.

Важно помнить, что не во всех случаях удается построить альтернативный маршрут с учетом use_hills (например, если на вершину холма ведет единственная дорога). 

"use_hills":0.25
step_penalty float

Значение, обозначающее пенальти в секундах, прибавляемое к каждому подъему или спуску по лестницам/ступеням. Чем выше значение, тем сильнее избегаются лестницы.

"step_penalty":120.0

Bicycle

Имя поля
Формат
Описание
Пример
cycling_speed float

Средняя скорость движения на велосипеде. Указывается в километрах в час.

Значение по умолчанию: 20 км/ч

"cycling_speed":30
use_ferry float

Значение, указывающее на готовность использовать паромные переправы при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать паромные переправы;
  • 1 — использовать паромные переправы;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_ferry":0.1
use_unpaved float

Значение, указывающее на готовность использовать грунтовые дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать грунтовые дороги;
  • 1 — использовать грунтовые дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_unpaved":0.5
use_roads float

Значение, указывающее на готовность использовать автомобильные дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать автомобильные дороги;
  • 1 — использовать автомобильные дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_road":0
use_border_crossing float

Значение, указывающее на готовность использовать дороги пересекающие границы других государств при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать использовать дороги пересекающие границы других государств;
  • 1 (по умолчанию) — использовать использовать дороги пересекающие границы других государств;

— допускаются дробные значения.

"use_border_crossing":0
use_hills float

Значение, указывающее на готовность следовать по маршруту с перепадами высот. Участвует в выборе подходящего маршрута и расчете ETA.

Определяется значением от 0 до 1, где:

  • 0 — максимально избегать перепадов рельефа местности, даже если это приведет к построению более длинного маршрута;
  • 1 — не избегать перепадов рельефа местности.

Допускаются дробные значения.

Значение по умолчанию: 0.5.

Важно помнить, что не во всех случаях удается построить альтернативный маршрут с учетом use_hills (например, если на вершину холма ведет единственная дорога). 

"use_hills":0.25

Taxi

Имя поля
Формат
Описание
Пример
use_unpaved float

Значение, указывающее на готовность использовать грунтовые дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать грунтовые дороги;
  • 1 — использовать грунтовые дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_unpaved":0.5
use_highways float

Значение, указывающее на готовность использовать автомагистрали при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать автомагистрали;
  • 1 (по умолчанию) — использовать автомагистрали;

— допускаются дробные значения.

"use_highways":0
use_tolls float

Значение, указывающее на готовность использовать платные дороги при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать платные дороги;
  • 1 — использовать платные дороги;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_tolls":0
use_ferry float

Значение, указывающее на готовность использовать паромные переправы при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать паромные переправы;
  • 1 — использовать паромные переправы;

— допускаются дробные значения.

Значение по умолчанию: 0.5

"use_ferry":0.1
use_border_crossing float

Значение, указывающее на готовность использовать дороги пересекающие границы других государств при построении маршрута.

Определяется значением от 0 до 1, где:

  • 0 — не использовать использовать дороги пересекающие границы других государств;
  • (по умолчанию) — использовать использовать дороги пересекающие границы других государств;

— допускаются дробные значения.

"use_border_crossing":0

Ответ

Базовая информация

Имя поля
Формат
Описание
Пример
trips list Корневой список возвращаемых маршрутов. Включает несколько элементов при запросе альтернативных маршрутов. Состоит из объектов trip, описанных ниже
trip dict Словарь с полным описанием маршрута
status number Код ошибки
"status": 0
status_message string Описание ошибки
"status_message": "Found 2 route(s) between points"
units string

Единица измерения расстояния в ответе:

  • kilometers — километры;
  • miles — мили.
"units": "kilometers"
language string

Язык ответа:

  • ru-RU — русский;
  • en-US — английский.
"language": "ru—RU"
locations list

Список точек маршрута в соответствии с запросом с дополнительной информацией об этих точках.

"locations": [
            {
                "original_index": 0,
                "type": "break",
                "lat": 55.796932,
                "lon": 37.537849,
                "heading": 150
            },
            {
                "original_index": 1,
                "lon": 37.462292,
                "lat": 55.865623,
                "type": "via"
            },
            {
                "original_index": 2,
                "lon": 37.406376,
                "lat": 55.962139,
                "type": "break"
            }
        ]
original_index integer Указание порядкового номера точки маршрута
"original_index": 0
type string

Тип точки маршрута:

  • break — развороты разрешены, для этой точки будет создана отдельная ветка ведения в списке legs
  • through — развороты запрещены, для этой точки не будет создана отдельная ветка ведения в списке legs
  • via — развороты разрешены, для этой точки не будет создана отдельная ветка ведения в списке legs
  • break_through — развороты запрещены, для этой точки будет создана отдельная ветка ведения в списке legs
"type": "break"
lat float Широта точки маршрута в градусах. Используется 6 знаков после запятой
"lat": 55.796932
lon float Долгота точки маршрута в градусах. Используется 6 знаков после запятой
"lon": 37.537849
heading float

Направление движения при старте.

Направление указывается в градусах с севера по часовой стрелке, где север — 0°, восток — 90°, юг — 180°, запад — 270°.

"heading": 150
id string Идентификатор запроса, который возвращается вместе с ответом, что позволяет точно установить соответствие запроса и ответа.
"id":"route_to_airport"

Общая информация

Имя поля
Формат
Описание
Пример
summary dict Общая информация о маршруте
"summary": {
            "ll_boxes": [{
                "max_lon": 37.546925,
                "max_lat": 55.962685,
                "min_lat": 55.793781,
                "min_lon": 37.406376
            }],
            "time": 2168.574,
            "length": 29.121,
        }
ll_boxes list Набор баундинг-боксов, описывающих область, занимаемую маршрутом. В общем случае здесь один элемент. При пересечении маршрута через антимеридиан возвращается два бокса (по разные стороны от меридиана).
"ll_boxes": [{
            "max_lon": 37.546925,
            "max_lat": 55.962685,
            "min_lat": 55.793781,
            "min_lon": 37.406376
        }]
max_lon float Максимальная долгота границы области просмотра, включающей в себя маршрут. Используется 6 знаков после запятой
"max_lon": 37.546925
max_lat float Максимальная широта границы области просмотра, включающей в себя маршрут. Используется 6 знаков после запятой
"max_lat": 55.962685
time float

Расчётное время, требуемое на движение по маршруту.

Расчётное время указывается в секундах.

"time": 2168.574
length float Общая длина маршрута, указывается в выбранных единицах измерения.
"length": 29.121
min_lat float Минимальная широта границы области просмотра, включающей в себя маршрут. Используется 6 знаков после запятой
"min_lat": 55.793781
min_lon float Минимальная долгота границы области просмотра, включающей в себя маршрут. Используется 6 знаков после запятой
"min_lon": 37.406376

Маршрут и манёвры

Имя поля
Формат
Описание
Пример
legs dict

Объект legs описывает маршрут и манёвры заключённые между парой точек маршрута, имеющих свойство «type»:«break»

Для n точек маршрута типа break ответ содержит n-1 элемент описания маршрута (для запроса без альтернатив). Для запроса с альтернативами каждая пара break-точек может содержать количество legs меньше или равное числу альтернатив.

Каждый объект описания маршрута содержит:

  • словарь summary аналогичный общему, но относящийся только к его части между двумя точками маршрута типа break;
  • строку shape;
  • список maneuvers.
"legs": [
            {
                "shape": "...",
                "summary": {
                            ...
                },
                "maneuvers": [
                    {
                        ...
                    },
                    ...
                    {
                        ...
                    }
                     
                ]
            }
        ]
shape string Кодированный формат полилинии для хранения серии координат широты и долготы в виде одной строки (смотрите также: Декодирование ломаной маршрута)
edges list Список ребер, входящих во все маневры (возвращается при наличии «completeness»:«enriched» во входном запросе).
"edges": [
    {
    "id": 12345,
    },
    ...
    {
    ...
    }
]
id int Уникальный идентификатор ребра (атрибут ребра)
"id": 3459922
length float Длина ребра (атрибут ребра), по умолчанию в км, единицы измерения указаны в поле «units»
"length": 0.314
use string

Тип (атрибут ребра):

  • road
  • ramp
  • turn_channel
  • track
  • driveway
  • alley
  • parking_aisle
  • emergency_access
  • drive_through
  • culdesac
  • living_street
  • service_road
  • cycleway (велосипедная дорожка)
  • mountain_bike
  • sidewalk
  • footway
  • steps (лестницы, ступеньки)
  • path
  • pedestrian
  • bridleway
  • rest_area
  • service_area
  • other
  • rail—ferry
  • ferry
  • rail
  • bus
  • egress_connection
  • platform_connection
  • transit_connection
"use": "cycleway"
road_class string

Класс дороги (атрибут ребра):

  • motorway
  • trunk
  • primary
  • secondary
  • tertiary
  • unclassified
  • residential
  • service_other
"road_class": "secondary"
surface string

Тип покрытия по возрастанию грубости (атрибут ребра):

  • paved_smooth
  • paved
  • paved_rough
  • compacted
  • dirt
  • gravel
  • path
  • impassable
"surface": "gravel"
toll boolean

Признак вхождения в участок платной дороги (атрибут ребра). Присутствует только для типов транспорта auto, motorcycle, truck, taxi

"toll": true
speed_limit int

Максимально возможная скорость в км/ч (атрибут ребра)

"speed_limit": 60
iso_code string

ISO-код страны (атрибут ребра). Указывается в том случае, когда ребро пограничное для маршрута, пересекающего границу. Формат ISO 3166-1 alpha-2 (двухбуквенный)

"iso_code": "RU"
maneuvers list Список манёвров на маршруте с указание точек манёвров на полилинии, а также длины, длительности манёвра и подсказок к манёврам на выбранном языке
"maneuvers": [
    {
    "travel_type": "car",
    "travel_mode": "drive",
    "verbal_pre_transition_instruction": "Проедьте 9,5 километров по М—11.",
    "verbal_transition_alert_instruction": "Продолжайте по М—11.",
    "length": 9.490,
    "toll": true,
    "instruction": "Продолжайте по М—11.",
    "end_shape_index": 459,
    "type": 8,
    "time": 421.573,
    "street_names": ["М—11"],
    "begin_shape_index": 344
    },
    ...
    {
    ...
    }
]
travel_mode string

Режим маршрутизации:

  • drive — используется для типов транспорта «costing»=«auto» и «costing»=«truck»
  • pedestrian
  • bicycle
"travel_mode": "drive"
travel_type string

Тип маршрутизации.

  • car —  используется для «travel_mode»=«drive» и «costing»=«auto»
  • tractor_trailer —  используется для «travel_mode»=«drive» и «costing»=«truck»
  • foot —  используется для «travel_mode»=«pedestrian»

Для велосипедной навигации возможны значения: 

  • hybrid, road, cross, mountain.
"travel_type": "car"
verbal_pre_transition_instruction string

Текст, который можно использовать в качестве устного сообщения для подготовки к манёвру.

"verbal_pre_transition_instruction": "Проедьте 9,5 километров по М—11."
verbal_transition_alert_instruction string

Текст, который можно использовать в качестве устного сообщения о манёвре, непосредственно перед самим манёвром.

"verbal_transition_alert_instruction": "Заедьте на кольцо и съезжайте на втором съезде."
verbal_multi_cue boolean Переменная имеет значение «true» в случаях, когда текст устного сообщения о подготовке к манёвру «verbal_pre_transition_instruction» содержит указание о нескольких последовательных, близко расположенных манёврах
"verbal_multi_cue": true
verbal_post_transition_instruction string

Текст, который можно использовать в качестве устного сообщения непосредственно сразу после завершения манёвра

"verbal_post_transition_instruction": "Продолжайте двигаться 100 метров."
verbal_succinct_transition_instruction string

Текст, кратко характеризующий маневр

instruction string Текст, который рекомендуется использовать для отображения текстовой подсказки о манёвре
"instruction": "Выезжайте слева на Ленинградский проспект."
length float Общая длина манёвра в границах между «begin_shape_index» и «end_shape_index», указывается в выбранных единицах измерения
"length": 9.490
begin_shape_index integer Указатель на точку начала манёвра на полилинии
"begin_shape_index": 344
end_shape_index integer Указатель на точку окончания манёвра на полилинии
"end_shape_index": 459
begin_edge_index integer Индекс первого ребра из возвращенного массива ребер для начала маневра (возвращается при наличии «completeness»:«enriched» во входном запросе)
"begin_edge_index": 5
end_edge_index integer Индекс последнего ребра из возвращенного массива ребер для окончания маневра (возвращается при наличии «completeness»:«enriched» во входном запросе)
"end_edge_index": 9
type integer Код типа манёвра
"type": 8
time float

Расчётное время, требуемое на манёвр в границах между «begin_shape_index» и «end_shape_index».

Расчётное время указывается в секундах

"time": 421.573
cost float

Степень сложности маневра или маршрута в некоторых абстрактных единицах. Позволяет сравнивать маршруты и маневры между собой и оценивать, какой из них более «затратный» по времени, по дистанции и т.д.

street_names list Список названий улиц манёвра
"street_names": ["М—11"]
toll boolean

Переменная имеет значение «true» в случаях, когда манёвр или его часть подлежат оплате.

Например: часть манёвра пролегает по платной дороге

"toll": true
ferry boolean Переменная имеет значение «true» в случаях, когда манёвр невозможен без использования парома
"ferry": true
rough boolean Переменная имеет значение «true» в случаях, когда манёвр полностью или частично осуществляется по дорогам без покрытия
"rough": true
gate boolean Переменная имеет значение «true» в случаях, когда манёвр пересекает ворота/шлагбаумы
"gate": true
roundabout_exit_count integer Порядковый номер съезда с кругового движения
"roundabout_exit_count": 2

Значение «type» для манёвров

Значение «type»
Расшифровка
0 kNone 
1 kStart 
2 kStartRight 
3 kStartLeft 
4 kDestination 
5 kDestinationRight 
6 kDestinationLeft 
7 kBecomes 
8 kContinue 
9 kSlightRight 
10 kRight 
11 kSharpRight 
12 kUturnRight 
13 kUturnLeft 
14 kSharpLeft 
15 kLeft 
16 kSlightLeft 
17 kRampStraight 
18 kRampRight 
19 kRampLeft 
20 kExitRight 
21 kExitLeft 
22 kStayStraight 
23 kStayRight 
24 kStayLeft 
25 kMerge 
26 kRoundaboutEnter 
27 kRoundaboutExit 
28 kFerryEnter 
29 kFerryExit 
30 kTransit 
31 kTransitTransfer 
32 kTransitRemainOn 
33 kTransitConnectionStart 
34 kTransitConnectionTransfer 
35 kTransitConnectionDestination 
36 kPostTransitConnectionDestination 
37 kMergeRight
38 kMergeLeft

Маршрут не найден

Если по запросу ничего не найдено, ответ будет выглядеть следующим образом:

{"error_code":171,"error":"No suitable edges near location","status_code":400,"status":"Bad Request"}

Пример

Запрос

curl —X POST \
  —H "Content—type: application/json" \
  —H "Accept: application/json" \
  —d '{"locations":[{"lat":55.796932,"lon":37.537849,"heading":150},{"lat":55.865625,"lon":37.462290,"type":"via"},{"lat":55.962139,"lon":37.406377}],"costing":"auto","language":"ru—RU","directions_type":"instructions","id":"route_to_airport"}' \
  "https://geo.rustore.ru/api/directions?api_key=<YOUR_API_KEY>"

Ответ

{
   "trips":[
      {
         "trip":{
            "locations":[
               {
                  "type":"break",
                  "lat":55.796932,
                  "lon":37.537849,
                  "heading":150,
                  "city":"left",
                  "original_index":0
               },
               {
                  "type":"via",
                  "lat":55.865625,
                  "lon":37.46229,
                  "original_index":1
               },
               {
                  "type":"break",
                  "lat":55.962139,
                  "lon":37.406377,
                  "original_index":2
               }
            ],
            "legs":[
               {
                  "maneuvers":[
                     {
                        "type":3,
                        "instruction":"Двигайтесь на северо—восток.",
                        "verbal_succinct_transition_instruction":"Двигайтесь на северо—запад., затем Поверните направо на Ленинградский проспект.",
                        "verbal_pre_transition_instruction":"Двигайтесь на северо—запад., затем Поверните направо на Ленинградский проспект.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 50 метров.",
                        "time":8.72,
                        "length":0.048,
                        "cost":364.824,
                        "begin_shape_index":0,
                        "end_shape_index":3,
                        "verbal_multi_cue":true,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":10,
                        "instruction":"Поверните направо на Ленинградский проспект.",
                        "verbal_transition_alert_instruction":"Поверните направо на Ленинградский проспект.",
                        "verbal_succinct_transition_instruction":"Поверните направо.",
                        "verbal_pre_transition_instruction":"Поверните направо на Ленинградский проспект.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 600 метров.",
                        "street_names":[
                           "Ленинградский проспект"
                        ],
                        "time":37.931,
                        "length":0.593,
                        "cost":72.21,
                        "begin_shape_index":3,
                        "end_shape_index":12,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":13,
                        "instruction":"Развернитесь налево, чтобы остаться на Ленинградский проспект.",
                        "verbal_transition_alert_instruction":"Развернитесь налево, чтобы остаться на Ленинградский проспект.",
                        "verbal_succinct_transition_instruction":"Развернитесь налево.",
                        "verbal_pre_transition_instruction":"Развернитесь налево, чтобы остаться на Ленинградский проспект.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 10 километров.",
                        "street_names":[
                           "Ленинградский проспект"
                        ],
                        "time":535.509,
                        "length":10.369,
                        "cost":682.537,
                        "begin_shape_index":12,
                        "end_shape_index":164,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":23,
                        "instruction":"Держитесь правой стороны на развилке.",
                        "verbal_transition_alert_instruction":"Держитесь правой стороны на развилке.",
                        "verbal_pre_transition_instruction":"Держитесь правой стороны на развилке.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 400 метров.",
                        "time":34.122,
                        "length":0.378,
                        "cost":55.773,
                        "begin_shape_index":164,
                        "end_shape_index":174,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":15,
                        "instruction":"Поверните налево.",
                        "verbal_transition_alert_instruction":"Поверните налево.",
                        "verbal_succinct_transition_instruction":"Поверните налево.",
                        "verbal_pre_transition_instruction":"Поверните налево.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 400 метров.",
                        "time":45.832,
                        "length":0.435,
                        "cost":75.448,
                        "begin_shape_index":174,
                        "end_shape_index":195,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":9,
                        "instruction":"Поверните направо на Ленинградское шоссе.",
                        "verbal_transition_alert_instruction":"Поверните направо на Ленинградское шоссе.",
                        "verbal_succinct_transition_instruction":"Поверните направо., затем через 300 метров, Поверните направо.",
                        "verbal_pre_transition_instruction":"Поверните направо на Ленинградское шоссе., затем через 300 метров, Поверните направо.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 300 метров.",
                        "street_names":[
                           "Ленинградское шоссе"
                        ],
                        "time":12.615,
                        "length":0.289,
                        "cost":28.807,
                        "begin_shape_index":195,
                        "end_shape_index":199,
                        "verbal_multi_cue":true,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":9,
                        "instruction":"Поверните направо.",
                        "verbal_transition_alert_instruction":"Поверните направо.",
                        "verbal_succinct_transition_instruction":"Поверните направо., затем через 50 метров, Поверните направо.",
                        "verbal_pre_transition_instruction":"Поверните направо., затем через 50 метров, Поверните направо.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 50 метров.",
                        "time":9.245,
                        "length":0.05,
                        "cost":91.808,
                        "begin_shape_index":199,
                        "end_shape_index":201,
                        "verbal_multi_cue":true,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":9,
                        "instruction":"Поверните направо.",
                        "verbal_transition_alert_instruction":"Поверните направо.",
                        "verbal_succinct_transition_instruction":"Поверните направо.",
                        "verbal_pre_transition_instruction":"Поверните направо.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 100 метров.",
                        "time":40.258,
                        "length":0.123,
                        "cost":759.908,
                        "begin_shape_index":201,
                        "end_shape_index":213,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":10,
                        "instruction":"Поверните направо.",
                        "verbal_transition_alert_instruction":"Поверните направо.",
                        "verbal_succinct_transition_instruction":"Поверните направо.",
                        "verbal_pre_transition_instruction":"Поверните направо.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 100 метров.",
                        "time":24.898,
                        "length":0.127,
                        "cost":36.26,
                        "begin_shape_index":213,
                        "end_shape_index":217,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":15,
                        "instruction":"Поверните налево.",
                        "verbal_transition_alert_instruction":"Поверните налево.",
                        "verbal_succinct_transition_instruction":"Поверните налево., затем Поверните направо на Ленинградское шоссе.",
                        "verbal_pre_transition_instruction":"Поверните налево., затем Поверните направо на Ленинградское шоссе.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 20 метров.",
                        "time":8.515,
                        "length":0.018,
                        "cost":22.563,
                        "begin_shape_index":217,
                        "end_shape_index":218,
                        "verbal_multi_cue":true,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":10,
                        "instruction":"Поверните направо на Ленинградское шоссе/Leningrad Avenue.",
                        "verbal_transition_alert_instruction":"Поверните направо на Ленинградское шоссе.",
                        "verbal_succinct_transition_instruction":"Поверните направо., затем Выезжайте на кольцевую развязку и сверните на 3—м съезде на Беломорская улица.",
                        "verbal_pre_transition_instruction":"Поверните направо на Ленинградское шоссе, Leningrad Avenue., затем Выезжайте на кольцевую развязку и сверните на 3—м съезде на Беломорская улица.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 80 метров.",
                        "street_names":[
                           "Ленинградское шоссе",
                           "Leningrad Avenue"
                        ],
                        "time":5.75,
                        "length":0.081,
                        "cost":20.979,
                        "begin_shape_index":218,
                        "end_shape_index":220,
                        "verbal_multi_cue":true,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":26,
                        "instruction":"Выезжайте на кольцевую развязку и сверните на 3—м съезде на Беломорская улица.",
                        "verbal_transition_alert_instruction":"Выезжайте на кольцевую развязку и сверните на 3—м съезде на Беломорская улица.",
                        "verbal_succinct_transition_instruction":"Выезжайте на кольцевую развязку и сверните на 3—м съезде.",
                        "verbal_pre_transition_instruction":"Выезжайте на кольцевую развязку и сверните на 3—м съезде на Беломорская улица.",
                        "time":20.267,
                        "length":0.255,
                        "cost":19.688,
                        "begin_shape_index":220,
                        "end_shape_index":239,
                        "roundabout_exit_count":3,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":27,
                        "instruction":"Сверните с кольцевой развязки на Беломорская улица.",
                        "verbal_succinct_transition_instruction":"Сверните с кольцевой развязки.",
                        "verbal_pre_transition_instruction":"Сверните с кольцевой развязки на Беломорская улица.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 200 метров.",
                        "street_names":[
                           "Беломорская улица"
                        ],
                        "time":14.073,
                        "length":0.189,
                        "cost":24.333,
                        "begin_shape_index":239,
                        "end_shape_index":244,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":20,
                        "instruction":"Сверните на съезде на Ленинградское шоссе.",
                        "verbal_transition_alert_instruction":"Сверните на съезд на Ленинградское шоссе.",
                        "verbal_pre_transition_instruction":"Сверните на съезд на Ленинградское шоссе.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 8 километров.",
                        "street_names":[
                           "Ленинградское шоссе"
                        ],
                        "time":394.793,
                        "length":8.069,
                        "cost":500.92,
                        "begin_shape_index":244,
                        "end_shape_index":355,
                        "sign":{
                           "exit_branch_elements":[
                              {
                                 "text":"Ленинградское шоссе"
                              }
                           ]
                        },
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":23,
                        "instruction":"Держитесь правой стороны к Шереметьево—2.",
                        "verbal_transition_alert_instruction":"Держитесь правой стороны к Шереметьево—2.",
                        "verbal_pre_transition_instruction":"Держитесь правой стороны к Шереметьево—2.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 600 метров.",
                        "street_names":[
                           "46Н—13925"
                        ],
                        "time":34.818,
                        "length":0.578,
                        "cost":38.3,
                        "begin_shape_index":355,
                        "end_shape_index":372,
                        "sign":{
                            
                        },
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":24,
                        "instruction":"Держитесь прямо, чтобы свернуть на 46Н—13925/Международное шоссе.",
                        "verbal_transition_alert_instruction":"Держитесь левой стороны, чтобы свернуть на 46Н—13925.",
                        "verbal_pre_transition_instruction":"Держитесь левой стороны, чтобы свернуть на 46Н—13925, Международное шоссе.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 2.5 километров.",
                        "street_names":[
                           "46Н—13925",
                           "Международное шоссе"
                        ],
                        "time":89.576,
                        "length":2.654,
                        "cost":75.352,
                        "begin_shape_index":372,
                        "end_shape_index":384,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":24,
                        "instruction":"Держитесь левой стороны, чтобы остаться на 46Н—13925/Международное шоссе.",
                        "verbal_transition_alert_instruction":"Держитесь левой стороны, чтобы остаться на 46Н—13925.",
                        "verbal_pre_transition_instruction":"Держитесь левой стороны, чтобы остаться на 46Н—13925, Международное шоссе.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 1.5 километров.",
                        "street_names":[
                           "46Н—13925",
                           "Международное шоссе"
                        ],
                        "time":50.683,
                        "length":1.254,
                        "cost":46.611,
                        "begin_shape_index":384,
                        "end_shape_index":403,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":24,
                        "instruction":"Держитесь прямо к Шереметьево/ Терминал D.",
                        "verbal_transition_alert_instruction":"Держитесь левой стороны к Шереметьево.",
                        "verbal_pre_transition_instruction":"Держитесь левой стороны к Шереметьево,  Терминал D.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 500 метров.",
                        "time":33.139,
                        "length":0.46,
                        "cost":38.839,
                        "begin_shape_index":403,
                        "end_shape_index":413,
                        "sign":{
                            
                        },
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":23,
                        "instruction":"Держитесь правой стороны на развилке.",
                        "verbal_transition_alert_instruction":"Держитесь правой стороны на развилке.",
                        "verbal_pre_transition_instruction":"Держитесь правой стороны на развилке.",
                        "verbal_post_transition_instruction":"Продолжайте движение еще 600 метров.",
                        "time":43.991,
                        "length":0.61,
                        "cost":63.974,
                        "begin_shape_index":413,
                        "end_shape_index":439,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     },
                     {
                        "type":4,
                        "instruction":"Вы прибыли в пункт назначения.",
                        "verbal_transition_alert_instruction":"Вы прибудете в пункт назначения.",
                        "verbal_pre_transition_instruction":"Вы прибыли в пункт назначения.",
                        "time":0.0,
                        "length":0.0,
                        "cost":0.0,
                        "begin_shape_index":439,
                        "end_shape_index":439,
                        "travel_mode":"drive",
                        "travel_type":"car"
                     }
                  ],
                  "summary":{
                     "ll_boxes":[{
                        "min_lat":55.79378,
                        "min_lon":37.39366,
                        "max_lat":55.962686,
                        "max_lon":37.546925,
                     }],
                     "has_time_restrictions":false,
                     "time":1444.743,
                     "length":26.583,
                     "cost":3019.145
                  },
                  "shape":"ydqliBeqcrfA_KyO_AyA{EsHv^aeA~FkPl[g_Ad[q~@nO}d@bt@stBtM}_@`CiHvUmr@zAsF\\yEBcEKyDg@sDgAcDgKyPaBsA_Bc@iBEuBj@oBjBoDhFuOhf@mWlu@kCzH}d@`tA}f@fxAwTlo@mk@`bBuU|q@sKh[uCnIcAtCoGlTwTzu@aDlJm}@xoC{Ujq@{Off@iNza@yGpUuFxQoHv]wGz]mGj_@qFr^mHrf@o^nyBiLzr@}SdkAeO`z@{BhMgK`p@wG`i@ka@pmC{QphAec@tlDoGfe@mFt^c`@r`C_I|e@aUfuAsJjl@wGn`@qDbSgDfPsCxLsEjPmDnKmFvNmBvFQj@eIjPcGjLyFnJiEvGeE~FeEjFiFvFwFhFaEjDiEbDmZbTyCdCyHnFc`@bYmkDdlCag@x_@WRalBxxA}n@vf@qlCzoBcBhAic@b\\{eD|dCao@fd@qj@b^}b@p[snAp~@u|@dq@}jAjbAs`@j^ii@pc@kGhFmmAv`A{a@n[uq@`j@mv@|k@}a@n[e`@`Zab@x[aMxJyaAzv@{`BfnAwu@pj@arC~mBqbAdr@{fBtiAoFjDad@rYak@t^aQxKsy@vf@{e@|Xwo@l`@gnA|v@oo@f`@ak@`]iz@ng@aZbRuk@r^}cBzcAup@|`@sf@hZs^xTkiAls@m_Avj@ie@xXyRtLcQlK_h@h[yLnHcTzMkv@xc@}nAhu@mm@f_@kAt@{WdQ_[tRa@T_h@p[qNjIcBbAehAhp@wh@v[mV|Ncu@lc@oj@t]_YvPsVbO{VfOcADkHVcs@dPsRlEs\\~F}GnBoFlCmFlDiJ|Jyq@rw@xBrMjDxN`FrOdShm@jAdC`CnBfCl@~CKdOoFrHsF~HsGhIaJ~C{DhKsJtH{KhGyOhTar@z@oCbFkSlCuHnE}IjAy@jNmJzu@ke@xlAiv@tT~@rEQlAdARPxCtCvC|KrA~JvAlAzLmHf@kDmB}N@_FsAyJWmBlOuJh]ySpJ_GdGwDqByOh\\_SbLyG`Hq@`ET`Dd@xCx@pnAn\\dCfA|@x@d@Fx@Kv@u@t@qBb@{CPoDAgEUeDg@{Ci@_C_AaCc@YuAgFcAaIcEyb@}Eme@oNowAk@ePF{H~@{DlCgGnC_DtC{@bCMxCn@|GjFlDtJxFnOz@hCnCzGfJjW|BxGXpCLdC?rCK|C_@lCaBnF}B`DkAt@{WdQ_[tRa@T_h@p[qNjIcBbAehAhp@wh@v[mV|Ncu@lc@oj@t]_YvPsVbO{VfOyI~EcWhOaOjJ}`@j[aKtKk\\|]aW`]kVd_@gGhJyo@ddAsdCrwDw[jj@idApzA{|@rkAgZj_@_ApAsvAzdB}^~c@qi@pq@}pArbBy@fA_n@vx@qFdHy@dAmzA`rB_I`LoUj[GH_TnYwb@ll@yp@|_Agc@rl@_e@xo@qb@pl@y_@bi@wPlTmh@hs@_UrYsi@hs@mThZkaAxrAst@bbActBhqCaJxLssAveBczAprByw@|dA{z@ziAqc@rj@{m@t{@ucAhvAiBbCq^`f@}^fh@kYdc@yNrUsaAxdBeFjI}JzQqOfX}n@fhAyyA~jCu`BluC}o@hfAegAjeBqZ`e@kd@tr@iq@rfAgz@xrAmnCllEiTd]}b@bq@_mBtyCus@`gAsZ~OyS|K{KvFaf@pVyM|G}IzBaG~@sHFcHa@}HqAmIyCqIaEmUmNuRqJkc@oWcQgLo[yRu@e@{n@g`@k@_@_vD{_CsnDa|B}WsPahHqpEaBcAegHcpE_i@e\\g`HokEiViOmsBopA{}@_k@sn@oa@uVcM{LqFoEoByQeHwSuGw_@{JwSqCsTiB_U_A}V_@meAj@iv@v@_UTeNNmi@Mcm@h@}e@nBgi@@i|@KaQ]{Nc@{Km@uJu@kMoAef@kH}AMoL{@kD?gDLkEr@oDdBiDjCoDxDqCtEaCtFaCfI}AjIoAxKy@vMkLhsCk@nP]bOIfOV|OVrG`@vGnCfYpCx]nCd]bGfu@nFdq@nAtO"
               }
            ],
            "summary":{
                "ll_boxes":[{
                    "min_lat":55.79378,
                    "min_lon":37.39366,
                    "max_lat":55.962686,
                    "max_lon":37.546925,
                }],                 
               "has_time_restrictions":false,
               "time":1444.743,
               "length":26.583,
               "cost":3019.145
            }
         }
      }
   ],
   "ll_boxes":[{
        "min_lat":55.79378,
        "min_lon":37.39366,
        "max_lat":55.962686,
        "max_lon":37.546925,
   }],      
   "status_message":"Found 1 route(s) between points",
   "status":0,
   "units":"kilometers",
   "language":"ru—RU",
   "id":"route_to_airport"
}
Was this information helpful?