Блог API Яндекс.Карт

Пример: расчет стоимости доставки до и после МКАДа

22 марта 2013, 13:58

Сделали пример того, как разбивать маршрут на сегменты и рассчитывать стоимость доставки, например, до МКАДа и после.

Расчет доставки

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

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

2. Конечная точка может быть установлена кликом по карте либо найдена через SeachControl. 

3. Путь по МКАДу учитывается как путь за МКАДом. 

4. Маршрут красим в разные цвета, внутри МКАД один, снаружи другой.

5. Начальную и конечную точки маршрута можно передвигать, маршрут при этом перестраивается.


Посмотреть пример в новом окне.

Пользуйтесь и присылайте свои примеры в комментариях, в клубе или на нашей страничке в Фейсбуке.

42 комментария
Подписаться на комментарии к посту

Ссылку поправьте, не туда ведет.

И еще. Не лчше ли расчитывать от искомой точки а не от "офиса"? в этом случае исключается подсчет расстояния по МКАД.

Поправили. Спасибо.

Вы можете передвинуть начальную точку.

Катерина, вы не так меня полняли.

Этот сервис для ИМ хорош для расчета расстояния за МКАД. Но счиатть участок движения по МКАД - надувательство покупателя. Потому и говорю, что удобнее делать обратный расчет, от адреса покупател, до точки встречи с МКАД. В этом случае, не получится что  1-5 км движения по МКАД курьера покупатель оплачивает за свой счет. А делается это простым изменением: точки старта и конца расчета маршрута меняются местами, т.е. считаем не от офиса к покупателю, а от покупателя к офису. :)

Аааа :-) Ну это же только пример. Его не стоит использовать как есть У каждого свои нюансы реализации. Можно же легко поменять в коде.

это все-таки доставка, а не самовывоз )))

 

и ничего так не получится. Он всё-равно будет считать от клиента, МКАД как Московская обл. Многоугольники нужно новые перерисовать в файлах json :-(

tekunova,
можете связаться со мной, обсудить вашу разработку? необходимм в интернет магазин.
tekunova,
Здравствуйте! Я не разработчик, но очень хотелось бы на своем сайте алгоритм как в этой теме, только фиксированную стоимость внутри МКАД и по МКАД чтоб не считал как область, подскажите пожалуйста какой код использовать
Заранее благодарен 

А если кейс такой, что магазин считает доставку только от МКАДа? Т.е. точку A нужно определить автоматически, как точку пересечения кольца с той трассой, по которой будет быстрее добраться от МКАДа до точки В. Это возможно?

Ленка, привет!!!

Давно тебя не видел... ))

Возможно все.

В самом простом случае (с минимальными переделками) можно строить маршрут из центра до нужной точки, а визуализировать и расчитывать стоимость по сегменту, который за МКАДом и дальше (красный)

Только начал изучать возможности карт. Сервис конечно супер по возможностям. Огромное спасибо. Но многие вещи мне не понятны. Например, вы пишите, что данный пример просто подправить. Но я не вижу ссылки на этот пример :( В песочнице как-то всё нагляднее. Или я просто не туда смотрю?

PS: извините за совершенно чайниковский вопрос :(

Вот ссылка на пример http://dimik.github.com/ymaps/examples/delivery-calculator/. Посмотрите его код. Там есть комментарии.

такому чайнику как я тяжело разобраться :) Выложите, пожалуйста, этот пример в песочницу :)) Функция - супер. Я даже понял как убрать МКАД из просчета, надо просто увеличить тот многоугольник, который задаёт границу мск. Вынести его за мкад, сохранить так же и будет рисоваться только маршрут за мкад.

Всё, что используется в этом примере можно посмотреть прямо на гитхабе

Добрый день!

Подскажите, пожалуйста, можно ли карту перенести на версию 2.1?

Замена строки не помогает, перестает работать расчет расстояния: 

Добрый день! По переходу на новую версию API есть отдельное руководство.

Добрый день! Спасибо за ответ, нашли данное руководство сомостоятельно)) 

Здравствуйте, мне очень интересен ваш проект, пишу что-то подобное. интересует как вы расчитываете и какой алгоритм вычисления точки вьезда на мкад. Ведь если составить массив всех съездов со мкад, получится много запросов к серверу, пока программа переберет все координаты и найдет нужный съезд.

Был бывам благодарен за разъяснение алгоритма. спабо

Весь код примера можно посмотреть на гитхаб.

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

По количеству тарифных планов доставки создается соответствующее количество полигонов, описывающих конкретную область.

МоскваМосковская область 

Класс расчета тарифа инстанцируется с параметрами:

- урл до геометрии этого полигона своей зоны, которую он скачивает его через AJAX

- стоимость км. пути в своей тарифной зоне


Получая на вход всю полилинию маршрута, экземпляр класса сам определяет сколько км было пройдено в своей тарифной зоне и отдает результат

Большое спасибо.

>  создается соответствующее количество полигонов

Каким образом? Руками, или есть автоматический способ через API по названию, скажем, города получить полигон для него?

Работает ли алгоритм для невыпуклых полигонов?

dimik,
Здравствуйте! Я не разработчик, но очень хотелось бы на своем сайте алгоритм как в этой теме, только фиксированную стоимость внутри МКАД и по МКАД чтоб не считал как область, подскажите пожалуйста какой код использовать
Заранее благодарен 

Подскажите пожалуйста как изменить код если по москве нужно использовать фиксированный тариф? И если нужно использовать градации цены доставки от суммы заказа?

Вся логика расчета стоимости находится в файле delivery-tarif.js

См. Метод calculate

Доброго времени суток. А как бы правильнее дополнить код в примере следующим функционалом:

1. Требуется указать начальную и конечную точку и вывести поля за пределы самой карты;

2. Добавить промежуточные пункты ("с заездом в:");

3. Позволить редактирование маршрута по средствам перетягивания маркера;

4. Вывести данные о стоимости за пределы карты;

Буду рада если ткнете меня в букварь API, либо в похожее решение с примером кода. Заранее спасибо.

3, 4 в этом примере есть.

1. Можно вызывать построение маршрута при сабмите формы на странице вместо поискового контрола карты.

2. Можно расширить интерфейс классов и принимать список промежуточных точек, маршрутизатор АПИ это поддерживает.

 

Готового примера у нас нет. Но при наличии навыков программирования не сложно доделать этот

Дмитрий Шеин
19 декабря 2013, 18:57

подскажите, а как сделать видимой облать МКАД када и за пределами МКАД

переделал на СПб  http://autospas.su/delivery-calculator/  не работает, не могу разобраться почему =(

Такой замароченый код... Подскажите пожалуйста как мне получить в input type="text" итог доставки рублей???

 Тут можно вместо шаблона вставлять данные куда нужно

у меня не хватает опыта к итоговому расчету стоимости прибавить еще свои расчеты. в= (total.value+=result.value)+с*а. как?

а этот файл я читал, когда корректировал стоимость доставки по Москве, у меня она всегда value: 3000 прописан в function init(), файла index

вообще, конечно, для меня это высший пилотвж, то как там выводят результаты в таблицу - понял насколько крут js и что мне еще его осваивать и осваивать). На дельфи я так только сделать смог бы, а здесь вообще ноги все попереломал...)

свой расчет еле-еле удалось прикрутить в indeх, теперь вот осталось мой расчет сложить с итогом по стоимости доставки... вообще не думал, что проблема будет, прикручивал уже,

 document.formText.sumOut6.value="Дорога="+distance*40*(sum2+sum1)+" руб.";

а здесь вот никак... 

если бы не Вы "бабушка-бэтмен" вообще бы с места не сдвинулся!!!

всё получилось, видимо переутомился вчера) спаибо за подсказку[:]|||||||||[:]

Никто не подскажет как из delivery-calculator.js вывести итог стоимости в input text???

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

 нашел {avoidTrafficJams: true}

там есть баг когда доставка с одного места за мкадом до другого места за мкадом но через город картинка

Я "начинало"), подскажите как сделать маркер растягивающим под контент. Допустим я хочу написать не точка "А" и "Б", а "Склад".
А еще вопросик) Где что поменять, чтобы точка, маркер был виден сразу. а не после клика по карте.
http://dimik.github.io/ymaps/examples/delivery-calculator/
подскажите пожалуйста, как передать вместо адреса, координаты? если конечно возможно
Привет!
За Мкад https://screencast.com/t/Ekziz5RYn получается дешевле, чем в пределах: 
https://screencast.com/t/wZXgBydhc
Можно ли подобно примеру ввести отдельные тарифы для некоторых дорог? Например по системе ПЛАТОН.