Клуб API Карт

Как определить добавлен оверлей на карту или нет?

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

Я не смог найти в описании API метода, который бы возвращал состояние оверлей на карте (добавлен или нет, другими словами виден или нет).

Конкретно мне надо знать какая метка уже есть на карте (имеено добавлена на карту) и необрабатывать её. Так как массовое добавление меток на карту (более 100) приводит к "подвисанию" браузера на 1-2 секунды, пока метки добавляются в DOM карты.

5 комментариев

Определить добавлена ли метка на карту можно с помощью метода getMap() у метки. Если метки не добавлена на карту, то будет возвращено null, в противном случае - указатель на карту.


 


var placemark = new YMaps.Placemark(map.getCenter());
console.log(placemark.getMap());    // null

map.addOverlay(placemark);
console.log(placemark.getMap());    // Object

map.removeOverlay(placemark);
console.log(placemark.getMap());    // null

 

Спасибо. Сразу не догадался. Вообще у Яндекс.Карт API не всегда интуитивно понятен..

А не могли бы сказать в каких случаях вы еще испытывали затруднения из-за нелогичности и непонятности API?

Я первый раз работаю с картами, но проект достаточно серьёзно использует API карт. Мне пришлось достаточно много решений сделанных для Google Maps API v2 адаптировать для Яндекс.Карт. В итоге для меня API Google показалось более понятным и логичным (по крайней мере интерфейс). В основном это касается получение статуса объекта на карте и доступ к низкоуровнему доступу к представлению объекта в HTML. Сам интерфейс объектов не предоставляет понятного доступа к свойствам.


Мой изначальный вопрос был как раз по этому поводу. Я ожидал изначально метода типа Placemark.isAdded или Placemark.isVisible (ну и ли что-то подобное), а ни как не через доступ к карте. Может стоит добавить методы помощники?

Спасибо за ваше мнение. Мы подумаем.