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

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

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

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

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

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

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

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

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

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


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

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

41 комментарий
Андрей Грэй
28 января 2016, 06:17

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

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

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

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

Андрей Грэй
28 января 2016, 06:17

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

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

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

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

 

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

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

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

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

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

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

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

Магазин DONT_RU
28 января 2016, 06:17

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

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

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

Магазин DONT_RU
28 января 2016, 06:17

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

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

Добрый день!

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

См. Метод calculate

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

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

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

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

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

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

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

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

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

 

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

Дмитрий Шеин
28 января 2016, 06:17

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

переделал на СПб  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
Можно ли подобно примеру ввести отдельные тарифы для некоторых дорог? Например по системе ПЛАТОН.