Здравствуйте. Столкнулся с проблемой. На карте имеется несколько тысяч точек, добавленных при помощи objectManager. Включена кластеризация. При клике на точку выполняется AJAX-запрос данных, после чего загруженные данные добавляются к геообъекту
objectManager.objects.events.add('balloonopen', function(e) {
var objectId = e.get('objectId');
var hasBalloonData = function(objectId) {
return objectManager.objects.getById(objectId).properties.loaded;
};
if (!hasBalloonData(objectId)) {
// getPointInfo - это AJAX-запрос данных метки
getPointInfo([objectId]).done(function(response) {
var obj = objectManager.objects.getById(objectId);
$.extend(true, obj.properties, response);
obj.properties.loaded = true;
_map.balloon.setData(obj);
});
}
});Но иногда возникает ситуация, что две точки имеют одинаковые координаты и остаются объединенными в кластер до максимального масштаба. В этом случае при клике на кластер вызывается балун кластера.
Я хочу оставить двухколоночный макет, но в правую часть выводить данные в виде кастомного макета метки, такого же, как и при клике на одиночную метку. Данные должны подгружаться так же аяксом.
Все в целом работает, данные подгружаются, но балун не меняет своего внешнего вида. И выглядит пустым (см. картинку). Каким образом добавить название метки в левую часть? Как сделать так, чтобы правая часть балуна обновлялась сразу же, а не после переключения между точками?


UPD:
Получилось сделать только так:
getPointInfo(ids).done(function(response) {
$.each(response, function(idx, pointInfo) {
var obj = objectManager.objects.getById(pointInfo.id);
$.extend(true, obj.properties, pointInfo);
obj.properties.loaded = true;
obj.properties.clusterCaption = pointInfo.title;
});
var balloonData = objectManager.clusters.balloon.getData();
objectManager.clusters.balloon.setData(balloonData);
});
Это правильный способ обновления содержимого балуна? Или можно то же самое сделать более правильно?