Здравствуйте. Стоит следующая задача: имеется фильтр на сайте, при его изменении должны меняться метки на карте (подгружаться из БД элементы, соответствующие фильтру). Данные получаю, возникает проблема с метками. Сами метки правильно наносятся на карту, но при клике на них неверно отрабатывает балун, не срабатывает событие с передачей параметра. Загвостка в том, что содержимое балуна должно подгружаться на аяксе . То есть при клике на метку должен передаваться параметр (id элемента в БД) в балун и подгружаться данные. В качестве параметра я взял свойство description для метки. Пытаюсь сделать таким образом (все переменные приходят правильные, проверял)
// Получаю данные фильтра
$.post("ajax_filter.php", { параметры }).success(function(data) {
var result = JSON.parse(data);
// Добавляем метки на карту
var geoObjects = [];
for (var i = 0; i < result.length; i++) {
var myPlacemark = new ymaps.Placemark([result[i].shirota, result[i].dolgota], {
hintContent: result[i].name,
balloonContent: '<div class="loading">Идет загрузка данных...</div>'
}, {
balloonLayout: MyBalloonLayout,
balloonContentLayout: MyBalloonContentLayout,
balloonPanelMaxMapArea: 0,
hideIconOnBalloonOpen: false,
balloonOffset: [0, -15],
openEmptyBalloon: true,
iconColor: result[i].marker_color,
iconLayout: 'default#image',
iconImageHref: result[i].marker_img,
iconImageSize: [42, 46],
iconImageOffset: [-21, -23]
});
myPlacemark.description = result[i].id;
myPlacemark.events.add('balloonopen', function (e) {
$.post("ajax_take_content_ballon.php", {
id: myPlacemark.description
}).success(function(data) {
myPlacemark.properties.set('balloonContent', data);
});
});
geoObjects[i] = myPlacemark;
myMap.geoObjects.add(myPlacemark);
}
clusterer.add(geoObjects);
myMap.setBounds(clusterer.getBounds(), {
checkZoomRange: true
});
}
});
Когда же я просто загружаю страницу, то использую практически такой же код, только там идёт комбинация с php кодом и маркеры задаются там таким образом
var myPlacemark_<?=$i;?> = new ymaps.Placemark(...), то есть динамические имена задаются, и маркеры с балунами отрабатывают верно. Как можно решить эту задачу без php?