Клуб API Карт

Пропадают метки в Clusterer

watakot
13 сентября 2016, 09:50

Доброго времени суток!
Использую Clusterer в качестве менеджера объектов, куда загружаю экземпляры GeoObject. При этом периодически мне требуется переместить некоторые метки, для этого применяю geometry.setCoordinates. Но после перемещения, при увеличении мастаба карты, перемещенная метка - пропадает, при этом на более удаленных мастабах она остается. При использовании стандартного менеджера geoObjects проблема не наблюдается, в связи с чем делаю вывод, что это связано с кластеризацией и выхода новых координат за пределы назначенного изначально кластера...

Пробовал искать, но нашел только старые посты для версии 1.1...

Подскажите, пожалуйста, как преодолеть описанную проблему? Может есть метод для перерасчета кластеров? Или может я как-то не так перемещаю?

11 комментариев
Удаляете метку из кластеризатора
Меняете метке координаты
Добавляете метку в кластеризатор
dimik,
спасибо!
dimik,
еще вчера код прекрасно работал:
var b = obj.balloon.isOpen();
mapclusterer.remove(obj);
obj.geometry.setCoordinates([lat, lon]);
mapclusterer.add(obj);
if (b) {
   obj.balloon.open();
}
а сегодня если открытый балун был перемещен, то после закрытия - метка не появляется... подскажите, пожалуйста, как это побороть?
watakot,
методы open и close асинхронные, возвращают Promise.
Нужно двигать метку в обработчике then, метода close.
dimik,
даже если выполнять, как:

var b = obj.balloon.isOpen();
obj.balloon.close();

mapclusterer.remove(obj);
obj.geometry.setCoordinates([lat, lon]);
mapclusterer.add(obj);
if (b) {
   obj.balloon.open();
}
dimik,
решил через:
 .balloon._showIcon();
но что-то мне подсказывает, что нехорошо так... может есть решение получше?
watakot,
Педальные поля не надо использовать, они не будут работать в сжатой продакшн-версии
dimik,
через Promise проблема решилась, но хотелось бы убрать дергание "иконка-балун"... а есть ли доступные аналоги " .balloon._showIcon();", чтобы в event - balloonclose положить? Или дергание- неизбежность?
watakot,
Не очень понял, что за дерганье.
Попробуйте выключить опцию hideIconOnBalloonOpen
dimik,
к сожалению такое решение не подходит, я его уже пробовал. Речь идет о том, что с использованием Promise стало заметно, как балун закрывается и открывается... Может есть варианты по выполнению методов balloon.close и balloon.open как синхронных?
watakot,
попробуйте вместо open/close сделать через balloon.setPosition