Расчёт маршрута (API Яндекс.Карт)

Доделал сервис расчёта маршрутов для сайта «МК-Лидер» (с помощью API Яндекс.Карт). Задача была непростая: внутри МКАД одни расценки, за МКАД — другие. Например, для сквозного маршрута через МКАД из Зеленограда до Красногорска нужно рассчитать 5 участков:

1) выезд от базы до Зеленограда,
2) Зеленоград — МКАД,
3) кусочек по МКАДу,
4) МКАД — Красногорск,
5) возврат из Красногорска на базу.

Кроме путей по Москве (внутри МКАД) есть маршруты сквозные, из Москвы в Московскую область (или наоборот), а также только по МО:

Маршрут через МКАДМаршрут из Москвы в МОМаршрут по МО

Процесс расчёта: взгляд со стороны клиента

Сначала выбирается нужный тип автомобиля:

На чём поедем?На чём поедем?

Затем количество грузчиков:

Сколько нужно помощников?Сколько нужно помощников?

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

При этом сумма поменяется в реальном времениПри этом сумма поменяется в реальном времени

Теперь задаются начальная и конечная точки маршрута. API Яндекс.Карт «понимает» введённые адреса практически в любой человеческой форме.

Вводим адреса начального и конечного пунктовВводим адреса начального и конечного пунктов

Можно поставить галочку «только Москва», но это чисто косметическая опция:

Маршрут пролегает внутри МосквыМаршрут пролегает внутри Москвы

Вообще указание города необязательно, если название улицы (или любого другого объекта) уникально.

Маршрут рассчитан, что дальше?

Путь построен, километры, часы и цена рассчитаныПуть построен, километры, часы и цена рассчитаны

Если нужны подробности, почему такая большая (или маленькая) цена, пожалуйста:

Из чего складывается ценаИз чего складывается цена

Следующим пунктом можно оформить быструю заявку:

 Имя и телефон! :) Имя и телефон! :)

В конце клиент видит полностью свой рассчитанный заказ и благодарность за заявку:

Заявка принятаЗаявка принята

Кстати, для быстрой заявки необязательно рассчитывать маршрут. Можно просто оформить эту заявку из соответствующего пункта меню:

Ускоренное оформление быстрой заявки :)Ускоренное оформление быстрой заявки :)

Процесс расчёта: технические детали

Расскажу только о ключевых моментах.

API Яндекс.Карт позволяет:

  • — разбить маршрут на отрезки (разбивка идёт на перекрёстках, пересечениях с другими объектами и т.д.);
  • — найти длину отрезка или группы отрезков (или всего маршрута);
  • — задать многоугольник (в данном случае — МКАД) и определить, находится ли заданная точка внутри него. Это позволяет засечь момент пересечения МКАД, а также определить тип маршрута (за МКАД, внутри МКАД или сквозной).

Заметка была полезной? Поделитесь в соцсетях:

Ваш комментарий

comments powered by HyperComments

Следующая заметка

Иван ТитовИван Титов
Фрилансер, музыкант, физтех по жизни, семьянин, философ.
© 2011