Почему невидимый объект после на карте имеет значение isShown == true?
Подскажите, пожалуйста. Я создаю карту с данными настройками и заполняю объектами через objectManager (далее код упрощён для читабельности):
new ymaps.ObjectManager({
clusterize: true,
viewportMargin: 0,
gridSize: 64,
});
...
new ymaps.Map('outpost-map', {
center: ['61.698653', '99.505405'],
zoom: 10,
controls: ['zoomControl'],
margin: 0,
})
...
При событии карты boundschange я хочу проверить, показан ли объект на карте, если нет, то добавить его id в новый список. В список попадают много объектов, которые НЕ отображены зрительно на карте:
objectManager.objects.each(function (object) {
objectManager.getObjectState(object.id);
if (objectState.isShown) {
my_list.push(object.id);
}
});
Все слои имеют ширины\высоту как у div'a карты, кроме canvas внутри ymaps-2-1-77-ground-pane, и, как следствие ymaps-2-1-77-placemark-overlay имеет позицию где-то за пределами div'a, но на canvas.
Как это исправить, чтобы все размеры подложек соответствовали родительскому div?
Ответы (1 шт):
Судя по всему margin: 0, viewportMargin: 0 надо было присвоить объектам, а не карте\менеджеру.
В массив 'features': []:
...
geometry: {
type: 'Point',
coordinates: [item.point_lat, item.point_lon],
viewportMargin: 0,
margin: 0,
},
...
Из блоков new ymaps.Map и new ymaps.ObjectManager можно удалить margin: 0, viewportMargin: 0