Маршрут

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

На этой странице

Маршрут по координатам

POST /v1/route требует право route. Передайте начальную и конечную точки; промежуточные остановки задаются в via.

json
{
  "start": {"latitude":55.75,"longitude":37.61},
  "end": {"latitude":55.76,"longitude":37.62},
  "via": [],
  "profile": "car"
}

Замените координаты в примере на свои начальную и конечную точки. Порядок остановок сохраняется: автоматическая оптимизация порядка посещения не выполняется. Расчётное время не учитывает пробки.

Вызов из SDK

Создайте клиент с apiBaseUrl: 'https://mmapps.ru' и браузерным ключом. Используйте координаты, выбранные пользователем:

javascript
const operationKey = crypto.randomUUID();
const result = await geo.routes.calculate({
  start: selectedStart,
  end: selectedEnd,
  via: orderedStops,
  profile: 'car',
}, { operationKey });

Сохраняйте operationKey для повтора того же запроса. При изменении точек или порядка остановок создайте новый ключ операции.

Маршрут по адресам

POST /v1/route/geocode и geo.routes.geocode() принимают для каждой точки один из вариантов: {q: 'адрес'}, {ref: selectedRef} или {point: selectedPoint}.

  1. Отправьте адреса в start, end и при необходимости via.
  2. Покажите кандидатов из waypoints и попросите пользователя подтвердить каждый адрес. Даже единственный кандидат из текстового поиска требует выбора.
  3. Замените текст выбранными ref или point и отправьте запрос с новым ключом операции.

Пока требуется выбор, ответ содержит outcome: 'needs_confirmation', а route равен null. Устаревший ref требует повторного поиска и выбора. Права: route:geocode, а также geocode для текста, resolve для ссылок и route для расчёта.

Отображение результата

Исходные координаты сохраняются в input_points, точки привязки к дороге — отдельно в snapped_points. Не перемещайте выбранные пользователем маркеры автоматически.

При outcome: 'no_route' дорожный путь не найден, geometry равна null. Сообщите об этом пользователю. Прямую линию между точками нельзя выдавать за рассчитанный маршрут.

Готовую геометрию можно отобразить средствами SDK без нового расчёта. Проверяйте ошибки запроса по OpenAPI. ROUTING_UNAVAILABLE означает, что расчёт сейчас недоступен.

Стоимость

Расчёт — одна операция route. В запросе по адресам каждый выполненный текстовый поиск учитывается отдельно как geocode. Подтверждённые координаты и ссылки не создают нового списания за геокодинг. До подтверждения всех адресов маршрут не рассчитывается и не оплачивается.

Тарифы, повторные запросы и учёт расходов.