Клуб API Карт

Получение индекса обработчика клика по полигону

sherlock2009mac
22 марта 2012, 23:11

Программно создаю несколько обработчиков клика по полигону с индексом v:

for (v=0; v<ch-1; v++)

{
 polygon[v] = new YMaps.Polygon( eval(areas[v])
                                ,{
        style: "polygon#Example",
                hasHint: 0,
                hasBalloon: 0
            }) ;
map.addOverlay(polygon[v]) ;

var myEventListener=new Array() ;
    myEventListener[v]= YMaps.Events.observe(polygon[v], polygon[v].Events.Click, function (polygon, mEvent) {
    var coord= mEvent.getGeoPoint() ;
    document.getElementById('info').innerHTML=coord;

// КАК ТЕПЕРЬ ТУТ ПОЛУЧИТЬ ИНДЕКС НАЖАТОГО ПОЛИГОНА, т.е. определить, какое из событий myEventListener сработало?

//    Addit(v) ;
        }, this) ;
};
};

То есть, для каждого полигона есть свой обработчик. Как теперь в функции, обрабатывающей сам клик, получить индекс этого полигона? Если подставить туда v, то получаю все время последнее число в массиве, не зависимо от того, какой полигон был нажат.

3 комментария
Подписаться на комментарии к посту

Честно говоря, не понимаю, как это применить к моему случаю.

И почему показывает все время v=6, если 6 полигонов на карте.

Жму на разные полигоны, а номер не определяется.

Если же присвоить при создании полигона свойство id: v,

то вообще не определяется оно потом

даже не знаю что сказать...

Ваш "случай" ни чем не отличается от того что по ссылке

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

в scope функции-обрабочика клика попадает последнее значение переменной "v" на момент выхода из цикла, т.е. 6