Клуб API Карт

значение переменной [i]

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

Есть массив меток, который выводит множество меток на карте

 

     gCollection = new YMaps.GeoObjectCollection(

      bounds = new YMaps.GeoCollectionBounds(

     for (i = 0; i < json.length; i++) {

      var sch = i+1;

      var placemark=new YMaps.Placemark(new YMaps.GeoPoint(json[i].lat,json[i].lon),{style: s, hideIcon: true}

      bounds.add(new YMaps.GeoPoint(json[i].lat,json[i].lon)

      placemark.setIconContent(sch);

      placemark.description= '<div style="color:#ff03aa;font-weight:bold">'+json[i].comp+'</div>';

      placemark.description = placemark.description+'<strong>Адрес:</strong> '+json[i].addr;

      placemark.description = placemark.description+'<br><strong>Телефон:</strong> '+json[i].rrab;

      gCollection.add(placemark);

Как сделать что бы при нажатии на одну метку на карте получить значение переменной [i] ??
6 комментариев

1. создать обработчик события нажатия на метку

2. обработчик может хранить ссылку на i в замыкании

С первым пунктом вроде понятно. 

А вот с функцией замыкания непонятно. Ув. бабушка-бэтман не поможете с примером? 

Cоздал обработчик с ссылкой на i в замыкании

 



//Test Main Start
YMaps.Events.observe(placemark,placemark.Events.Click, function(placemark,mEvent) {
function addEvents2(json){
for (var i = 0; i < json.length; i++) {
json[i].onclick = function (x) {
return function() { alert(x) }
  } (i)
}
}
});


не работает... делал по примеру замыкания по ссылке бабушки-бэтмана...

пример не имеет отношения к АПИ, он просто для понимания.

вам нужно создать обработчик клика на метке

 

Заработало! Нашел ответ на форуме здесь

 

(function(i) {

        YMaps.Events.observe(placemark, placemark.Events.Click, function () {        

alert (i);

        });

})(i);

 

Спасибо всем!