Клуб API Карт

Объекты в видимой области карты

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

На карте отображается много точек (около 1000), мне нужно узнавать какие из них сейчас видны на текущей видимой области карты - как это можно сделать? Перебором и сравниваем координат?

map.getBounds - узнаю координаты текущей области, а дальше перебором? Как я понимаю, скорость этого перебора будет не самая быстрая, учитывая что при любои сдвиге карты сравнения будет начинаться заново. 

Есть ли какой-либо оптимальный способ?

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

Вы можете для каждого объекта рассчитать, в какой тайл он попадает. Затем при сдвиге карты смотреть, какие тайлы попадают в видимую область и быстро отображать нужные объекты без полного перебора.

Максим Чеченёв
28 января 2016, 02:05

А как рассчитать тайлы?

Мне их не нужно скрывать, мне нужно зная видимые объекты - отобразить в блоке информацию про них. Менюшку сбоку, в общем, с видимыми объектами.

аа, тогда задача другая, да, перебор наверное лучше подойдет

А что в случае изменения зума? или при инициализации для всех возможных вариатов зума расчитывать? Тогда инициализация будет долгая. Но можно и на сервере хранить эти данные.

+  тайлы могут выходить за область видимости.

Думаю оптимальный вариант всётаки будет перебор.

 

можно строить по видимой области геометрию типа Rectangle

и проверять ее методом contains

Можно посмотреть эти примеры в блоге

http://ymapsapi.ya.ru/replies.xml?item_no=744

http://ymapsapi.ya.ru/replies.xml?item_no=1049