Клуб API Карт

placemark.Events.Click срабатывает только последний маркер - почему?

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

Здравствуйте коллеги!

Не пойму в чем проблема, с jQuery хорошо знаком, а вот здесь пока непонятно - есть три маркера, балун показывает каждый свой. Когда ставлю функцию на клик по маркеру, отрабатывает только последний элемент - почему? Пересмотрел ваши темы - не нашел ответа.

Код такой (все лишнее убрано):

 var placemark = new YMaps.Placemark(new YMaps.GeoPoint(30.349564,59.837201)
placemark.name = "dot111111111";
map.addOverlay(placemark);
var placemark = new YMaps.Placemark(new YMaps.GeoPoint(30.297017,59.839154)
placemark.name = "dot222222";
map.addOverlay(placemark);
var placemark = new YMaps.Placemark(new YMaps.GeoPoint(30.328603,59.873694)
placemark.name = "dot33333";
map.addOverlay(placemark);
YMaps.Events.observe(placemark, placemark.Events.Click, function () {
placemark.setBalloonContent("555555555");
}

5 комментариев

причем тут jQuery?

вы каждый раз перезаписываете переменную placemark

из-за этого в конце-концов она хранит ссылку на последнюю метку

Андрей Васильев
28 января 2016, 05:57

jQuery тут конечно ни при чем - это было "лирическое вступление".

Что переменная перезаписывается понятно, однако непонятно почему при этом каждый маркер показывает свой баллун? 

И не понятно - как сделать, чтобы на клике каждого маркера отрабатывался placemark.Events.Click ?

 

 

 

Что переменная перезаписывается понятно, однако непонятно почему при этом каждый маркер показывает свой баллун? 

 

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

 

И не понятно - как сделать, чтобы на клике каждого маркера отрабатывался placemark.Events.Click ?

 

на каждый маркер отдельно повесить обработчик клика

Или если их много сделать это с помощью интерфейса группы

 

Андрей Васильев
28 января 2016, 05:57

Воспользовался вашим советом - пример здесь http://krasivo.spb.ru/yandexmap_test.html

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

нет не правильно

прочитайте про замыкания в javascript