Клуб API Карт

[ API 2.1 ] Изменение иконок всех меток на карте по условию.

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

Добрый день. Задача следующая: На карте множество меток, по клику на одну метку, метка меняет иконку, по клику другой метки также изменяется иконка, только иконка первой метки по которой кликали становится по умолчанию. При этом на карте есть метки которые не должны менять иконку вообще. В версии API 2.0 я это делал так:

 

...

clusterer.each(function (geoObject) {

                            if(geoObjects.properties.get('favorite'))

                                {

                                    geoObjects.options.set("iconImageHref",  '../img/1.png');

                                    geoObjects.options.set("iconImageSize",  [37,32]);

                                } 

                                    else

                                        geoObjects.options.set("iconImageHref",  '../img/2.png');

                        });

...

 

   В API 2.1 такой вариант не проходит, хром пишет: Uncaught TypeError: undefined is not a function. Попробовал разные варианты, ничего не вышло. В документации тоже не нашел где бы описывалось как перебрать все метки на карте с условием.  Подскажите как мне пройти по всем меткам на карте? Спасибо.

4 комментария

Массив меток, добавленных в кластеризатор, в 2.1 можно получить через метод

clusterer.getGeoObjects

Я пробовал использовать этот метод, но у меня не получилось перебрать все кластера и все метки в них. Не подскажите на примере, как правильно использовать метод для обхода по меткам?

Я не совсем понимаю, в чем проблема - обычный цикл for подойдет

var geoObjects = clusterer.getGeoObjects();

for (var i = 0, l = geoObjects.length; i < l ; i++) {

    geoObject[i]...

}

У Вас опечатка в: geoObjectS[i]...  но тем не менее, я всё понял где заблуждался. В двух соснах заблудился. Спасибо большое всё работает!