Клуб API Карт

массив меток

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

Создаю массив меток. В обработчике клика на карту добавляю новую метку в массив и создаю для неё обработчик события OpenBalloon (для примера, на самом деле какое событие, неважно).

Почему в этом коде обработчик для меток работает?

var placemark = new Array();
var i = 0;
var mark = YMaps.Events.observe(map, map.Events.Click, function (mEvent)
            {
                placemark[i] = new YMaps.Placemark(mEvent.getGeoPoint(), {style:"default#greenPoint"});
                var pm = placemark[i];
                YMaps.Events.observe(pm, pm.Events.BalloonOpen, function(){pm.setIconContent("test"+i)});
                map.addOverlay(placemark[i]);
                i++;
            }, map);


А в этом нет?

var placemark = new Array();
var i = 0;
var mark = YMaps.Events.observe(map, map.Events.Click, function (mEvent)
            {
                placemark[i] = new YMaps.Placemark(mEvent.getGeoPoint(), {style:"default#greenPoint"});
                YMaps.Events.observe(placemark[i], яlacemark[i].Events.BalloonOpen, function(){placemark[i].setIconContent("test"+i)});
                map.addOverlay(placemark[i]);
                i++;
            }, map);

3 комментария
Sergey Konstantinov
28 января 2016, 08:52
Потому что значение i после выполнения цикла равно 100. И во втором случае всегда производится в обработчике событий обращение к placemark[100];
Руберг Дмитрий
28 января 2016, 08:52
Или, если это на разных страницах расположено, проблема может быть в яlacemark[i] первая буква, не знаю возможно это очепятка при посте была )
Ага, спасибо, в итоге я через Group сделала.