Клуб API Карт

Как отследить изменение WayPoint'а

papuska
25 октября 2017, 23:20

Подскажите, что-то не пойму, вот есть маршрут и у него 2 точки: начальная и конечная. Как отследить, что именно эта точка была изменена (была сдвинута) мышкой? Примера "редактирования" МУЛЬТИмаршрута нет..

7 комментариев
Дмитрий Ращупкин
25 октября 2017, 23:44
Привязать событие к точке
myPlacemark.geometry.events.add('change', function ()
{
console.log(myPlacemark.geometry.getCoordinates().toString());
});
Очень странно, но при перетаскивании одного вейпоинта срабатывает и перетаскивание второго:
https://jsfiddle.net/LL0aaL87/8/
papuska,
Это логично,
вы подписываетесь на "change" внутри "requestsuccess", который потом срабатывает еще и при перетаскивании вэйпоинта, и подписывает вас на "change" еще раз

dimik,
а если их вынести за пределы requestsuccess то выдает ошибку...
https://jsfiddle.net/LL0aaL87/9/
papuska,
Вообще лучше всегда использовать делегирование событий –  один слушатель на коллекцию
https://jsfiddle.net/LL0aaL87/11/
dimik,
Спаибо, замучал вопросами наверное. А вот еще один. При перетаскивании вейпоинта он постоянно срабатывает, пока перетаскиваешь. Я думал повесить таймаут. Но потом попробовал вместо geometrychange поставить dragend и вроде получилось. Но в документации для вейпоинта в событиях нету dragend? Можно ли так использовать?
papuska,
лучше слушать на редакторе
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.Editor-docpage/#event-waypointdragend