Клуб API Карт

Получение информации с кластера

good-ucoz1997
15 марта 2015, 22:34

Допустип у меня есть получений массив (1):
courier: nulldateImg: "1.0"lat: "47.5461"lng: "33.345654"photo: "/upload/Photo/"street: "Южное"
Мне надо чтоб при нажатии на кластер получить ту жу информацию что получил в массиве (1).

Нажатие кластера сделал так : 

markerCluster.createCluster = function(center, geoObjects){
    var cluster = ymaps.Clusterer.prototype.createCluster.call(this, center, geoObjects);
cluster.events.add('click', function(){
        if(map.getZoom()>16){
            for(var i= 0,len = geoObjects.length;i <len;i++){
console.log(geoObjects);
}
        }
        return cluster;
});
return cluster;
};

 

5 комментариев
Подписаться на комментарии к посту

У вас есть доступ в методе createCluster ко всем меткам в кластере. Из них Вы можете получить нужные данные

 а как получить эти нужные данные ? ? 

Знаю что можно получить массив данных вот так кластера: 

console.log(cluster.getGeoObjects());
И выдаст нам такую информацию :
[r] . Вообщем как я понял просто массив настройки самого массива. Вот как получить записаную информацию координат и название улицы?

Аааа, вам надо при клике, не заметил сначала.

 

Тогда внутри createCluster не надо навешивать обработчик, а то их никто удалять то не будет и память будет течь.

 

Навесьте один обработчик на кластеризатор

     clusterer.events.add('click', function (e) {

        var target = e.get('target');

        var geoObjects;

 

        if(geoObjects = target.properties.get('geoObjects')) {

            // Это кластер, перебираем данные входящих в него меток 

            geoObjects.forEach(function (geoObject) {

                console.log(geoObject.properties.getAll());

            })

        }

        else {

            // Это метка, выводим ее данные

            console.log(target.properties.getAll());

        }

    })

Да хорош код, но чуть вы меня не поняли ) 
Я хочу заменить диолог окно маркера и кластера на свой popup window. С маркерами одиночками у меня это получилось. И открытие и получение информации с него:

var photosInfo = JSON.parse(data);
for(var i = 0, len = photosInfo.length;i;i++){
    var markersInfo = photosInfo[i];
addInfoGallery(markersInfo);//тут я передаю массив
markers.push(marker);
}
function addInfoGallery(info){
    marker = new ymaps.Placemark([info.lat, info.lng],{},{
        iconLayout: 'default#image',
iconImageHref: imgPath+'marker1.png',
iconImageSize: [32,32]
    });
marker.events.add('click', function(){
        photoBox(info);
});
}
function photoBox(info){//сам шаблон окна
$('#overlay_wrapper_box').addClass('dialogPhoto');
$('#overlay_wrapper_box').fadeIn('fast');
$('.wrapper_box_content_img').append('');
$('.setImg').attr({
        src: img+info.street+'.jpg'
});
$('.setStreet').append('Адрес:'+' '+info.street+'
');
$('.setDateImg').append('Время съемки:'+' '+info.dateImg+'
');
$('.dphoto_text').attr({
        href: img+info.street+'.jpg',
download: info.street+'.jpg'
});
closeBoxPhoto();
}

 Теперь же я останолся на вопросе как же сделать мне получение массива инфомации и записи в другой массив(для того чтобы сделать slider photo по нажатию по стрелкам), с кластера.