Клуб API Карт

расстояние и время между двумя точками

Пост в архиве.

ymaps.ready(init);   

function init() {

                                 var route = ymaps.route([{

                                                     type: 'wayPoint',

                                                     point: [$("#inner-right-block-<?=$d?>").find(".hid-<?=$j?>").val()]

                                                   }, {

                                                     type: 'viaPoint',

                                                     point: [$("#inner-right-block-<?=$d?>").find(".hid-<?=$j-1?>").val()]

                                                   }]).then(function(route) { 

                                                         расчет....

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

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

 Может кто подскажет есть ли выход из ситуации!!

 

21 комментарий

Что возвращает выражение $("#inner-right-block-=$d?>").find(".hid->").val()?

55.794809,49.103576 координаты точки

В JavaScript [55.7,41.1] и ["55.7,41.1"] это совсем не одно и тоже

https://tech.yandex.ru/maps/doc/jsapi/2.1-dev/ref/reference/route-docpage/ в документации без ковычек. У меня данная конструкция работает, данные получаются, проблема в том что после ajax обновления нет данных. Попробовал и так и так , ничего не поменлось

дело не в кавычках а в типе данных

и количестве элементов в массиве.

АПИ ожидает массив из 2-х элементов типа Number

Вы передаете ему массив из одного элемента типа String

Сюрприз — $.val всегда возвращает строку даже если в инпуте будет число

 

спасибо что отвечаете, читаю документацию 

point: Number[]|String - Массив координат точки, либо ее адрес в виде строки 

я получаю данные у меня нет проблемм с координатми, маршрут строится по точкам, отдает время растояние.

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

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

Я уже понял что вы документацию прочитали.

 

Прочитайте внимательно и то что я Вам писал.

Ваш код построения маршрута некорректен и не соответствует документации.

Именно в этом месте

 

point: [$("#inner-right-block-").find(".hid-").val()]

 

Должно быть хотя бы так:

 

point: $("#inner-right-block-").find(".hid-").val().split(",").map(Number)

        function init() {

                                          

                                 var route = ymaps.route([{

                                                     type: 'wayPoint',

                                                     point: $("#inner-right-block-$d?>").find(".hid-").val().split(",").map(Number)

                                                   }, {

                                                     type: 'wayPoint',

                                                     point:$("#inner-right-block-").find(".hid-<?=$j-1?>").val().split(",").map(Number)

                                                   }]).then(function(route) {

 

данные получаю, после ajax прежняя картина

Ссылка? 

http://gokazan1.jetstyle.ru/places/

создайте маршрут, и наполните дни событиями

Чтото я не осилил создание.

Есть готовый маршрут на котором воспроизводится?

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

У меня ошибка при перетаскивании

https://yadi.sk/i/PEGtv4KzfHGYX

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

Я не вижу вызова ymaps.route на странице

http://gokazan1.jetstyle.ru/places/

https://yadi.sk/i/xkOGvQy4fHoES

 

обновите страницу 

Да, нашел.

Что именно не работает?

при загрузке карты(страницы)  высчитывается время между объектами, но вот после перетаскивания нового объекта происходит ajax и уже тот скрипт который работал не работает, даже в тех объектах в котрых работал

А почему он должен еще раз сработать?

Это конечно плохая практика вот так загружать скрипты.

У вас каждый раз перезаписывается ссылка на функцию init, и все предыдущие уже не доступны

так без вызова  ymaps и функции init  route не работает, подскажите как сделать

У вас сложная клиентская часть. Честно говоря тот подход что вы используете (печатать javascript из php и отправлять теги скрипт ajaxом) мне видится тупиковым и не масштабируемым. Когда то я участвовал в написании подобного маршрутизатора для сайта youroute.com, только более функционального и по всему миру. Мы использовали angular на клиенте. А сервер отдавал ajaxом только JSON-данные