Клуб API Карт

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

a2510
28 июня 2011, 15:24

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

Не пойму в чем проблема, с 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

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

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

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

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

 

 

 

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

 

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

 

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

 

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

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

 

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

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

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

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