Клуб API Карт

Динамическая загрузка данных для балуна кластера objectManager

serker72
28 июня, 08:51

Доброго времени суток.

Точки на карту добавляются с помощью objectManager путем добавления featureCollection:

// Создаем менеджер объектов
var objectManager = new ymaps.ObjectManager({
	clusterize: true,
	gridSize: 32,
	clusterDisableClickZoom: true,
	clusterOpenBalloonOnClick: false,
	geoObjectOpenBalloonOnClick: false
});

// Добавим менеджер объектов для карты
myMap.geoObjects.add(objectManager);

Данные для балуна точки подгружаются через ajax.

Пытаюсь реализовать динамическую загрузку данных для балуна кластера, по аналогии c Яндекс.Недвижимость.

Данные загружаются, в свойство cluster.properties.balloonContent записываются, но не отображаются: балун кластера выглядит в виде двух колонок с пустым балуном точек:

objectManager.clusters.events.add('click', function (e) {
	var clusterId = e.get('objectId');
	console.log('clusterId', clusterId);
	if (hasBalloonData(clusterId, 'cluster')) {
		objectManager.clusters.balloon.open(clusterId);
	} else {
		var cluster = objectManager.clusters.getById(clusterId);
		console.log('!hasBalloonData', cluster);
		var geoObjects = cluster.properties.geoObjects;
		console.log(geoObjects);
		var ids = jQuery.map(geoObjects, function (obj) {
			console.log('geoObject obj', obj);
			return obj.id;
		});
		console.log('ids', ids);
					
		cluster.properties.balloonContent = 'Идет загрузка';
		objectManager.clusters.balloon.open(clusterId);
					
		$.get(url, {id: ids.join(',')}, function (data) {
			console.log('list-map data', data);
			cluster.properties.balloonContent = data;
			objectManager.clusters.balloon.setData(cluster);
		})
		.fail(function (data) {
			console.log('При получении информации о объектах кластера произошла ошибка.', data);
		});
	}
});

Подскажите, что я делаю не так ?

1 комментарий
Подписаться на комментарии к посту
Загрузку данных проще делать через макет балуна
http://jsfiddle.net/1dpotvy6/17/
Обновлено 28 июня, 12:58