Клуб API Карт

Список видимых геообъектов

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

Как можно получить список геообъектов (или балунов), которые в данный момент отображаются на видимой области карты? И, соответственно, список объектов, которые находятся за пределами видимой области.

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

Можно перебрать все геообъекты и проверить вхождение их пиксельной геометрии во вьюпорт карты.
См. http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/map.Container.xml#getSize
http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Map.xml#getGlobalPixelCenter

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/IGeometry.xml#getPixelGeometry 

Зачем вам это?

Динамически выводить дивы с описанием только тех объектов, которые в данный момент видны.

Есть сеть магазинов по всей России; через GeoIP определяется город посетителя и выводится список только тех магазинов, которые есть в его городе. Но при этом у него должна быть возможность уменьшить масштаб и посмотреть магазины в соседних городах или вообще по всей стране.

 

 

Если я правильно понял, у вас геообъекты только с геометрией Point. Тогда проще всего отобрать нужные перебором.

Да, Point. Но можно и балуны привязать, это непринципиально.

У Point'а есть какое-то свойство, содержащее пиксельные координаты? Или у Map есть свойство, в котором хранятся географические координаты, которые в данный момент находятся в видимой области карты? 

 

после добавления на карту нужно вызвать geoObject.geometry.getPixelGeometry().getCoordinates()

Метод возвращает пиксельные координаты поинта? А затем сравнивать их с координатами видимой области, вычисленной через Map.Container.getSize и Map.getGlobalPixelCenter ?

Да. Видимую область можно расчитать прибавив к координатам центра 1/2 размера карты. Потом проверить входят ли координаты точки в видимую область.