Клуб API Карт

objectState.isShown не точно определяет границу

enfoscoder
6 апреля 2017, 14:56

Приветствую.

При boundschange пробегаюсь по объектам в поле видимости objectState.isShown.

Все работает, но если метка или кластер на карте одна, то счетчик все равно считает что рядом стоящие метки тоже в поле зрения.
Прошу помочь, как сделать что бы метки определялись более точно, в пределах видимой области. Спасибо.

https://jsfiddle.net/RDmitriev/Ljcm1rx9/

2 комментария
Накопал. Итак видимость на карте у объектов рассчитывается нормально с помощью viewportMargin: 0
А вот clusterViewportMargin: 0 не срабатывает, и кластеры все еще на достаточно далекой дистанции считаются в поле видимости.
Обновлено 6 апреля 2017, 22:29
Дело в том, что метод isShown изначально делался не для определения попадания метки в видимую область карты. Это флаг, показывающий, добавлен объект на карту или нет.
Объекты и кластера добавляются на карту с небольшим запасом, чтобы небольшие сдвиги карты не вызывали сложных перерасчетов.
Чтобы проверять, попала ли метка в видимую область карты, нужно использовать другие методы.
Например можно брать пиксельные границы карты и пиксельные координаты метки и просто проверять, попадает метка в полигон или нет