Клуб API Карт

Как получить список всех оверлеев на карте

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

Всем привет,


на карту добавляются оверлеи -


placemark = new YMaps.Placemark(new YMaps.GeoPoint(x, y));

.... записываем чего-то в балун placemark'a....

map.addOverlay(placemark);


И так сто раз. Как потом получить список/массив всех этих оверлеев на карте map ?

12 комментариев
Рекомендую начать учить javascript.
Ой, у нас оказывается есть тролли :). Встречное предложение начать учить санскрит. Не встречал еще ни одного тролля со знанием санскрита, отсюда делаю вывод - санскрит помогает.
я просто заметил, что вы постоянно задаёте вопросы... это наводит на мысли просто...
 
map.innerAddOverlay = map.addOverlay;
map.addOverlay = function(overlay){
 this.overlaylist.push(overlay);
 this.innerAddOverlay(overlay);
}


вот таким грязным хаком мы всегда будем знать кто на карту добавился.
Осталось только стереть тех кто убавился
Переопределять стандартные методы не надо. Задачу топикстартера можно решить с помощью группы.
Есно дело данный трюк лучше делать либо через наследование или через обертку.
Но...
С помощью доброго слова и револьвера можно добиться больше чем просто добрым словом.
В нашем случае используем кувалду и напильник.
Добавьте все необходимые объекты в группу, а саму группу - на карту.
var group = new YMaps.GeoObjectCollection();
map.addOverlay(group);

// Добавляем объекты
group.add(new YMaps.Placemark(new YMaps.GeoPoint(x, y));
...
После этого можно воспользоваться методом группы length(), который позволит узнать количество объектов:
alert(group.length());
Спасибо ! Риторический вопрос к разработчикам API, почему набор всех добавленных на карту оверлеев не доступен как группа по умолчанию.....
Я, когда немного подучил джаваскрипт, стал понимать как что работает :) Например у объектов бывают атрибуты, а у map в частости: __overlays Хотя мне кажется, что двойное подчеркивание это намек на privat и могут быть подводные камни.
Методы и переменные с подчеркиванием означают приватность. Их использовать мы не рекомендуем.
Разработчик сам добавляет объекты на карту, поэтому он может всегда подсчитать их количество. Мы рассуждали так)

Мы подумаем над вашим пожеланием.
Дмитрий Х.
28 января 2016, 07:44

Присоединяюсь к ТС. Было бы очень неплохо дать разработчику доступ к коллекции оверлеев.