Клуб API Карт

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

Пост в архиве.
softshape2
22 марта 2010, 12:59

Всем привет,


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


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 и могут быть подводные камни.
Методы и переменные с подчеркиванием означают приватность. Их использовать мы не рекомендуем.
Разработчик сам добавляет объекты на карту, поэтому он может всегда подсчитать их количество. Мы рассуждали так)

Мы подумаем над вашим пожеланием.
khlystov.dmitry
3 июня 2010, 02:39

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