Клуб API Карт

Запихнуть XML в кластер

stechkin.dmitry
19 декабря 2012, 00:34

Здравствуйте.

Есть одна карта. На неё из XML файла подгружаются балуны. Их много, порядка нескольки тысяч, так что нужно все это дело кластеризовать.

Тут я наткнулся на проблему -- как передать балуны из XML в кластер?

Вот пример кода, который не работает :

 

                // Создаем кластеризатор
                clusterer = new ymaps.Clusterer();

                // Настраиваем опции
                clusterer.options.set({
                    gridSize: 100,
                    disableClickZoom: true,
                    minClusterSize:10,
                    synchAdd:true
                });
                //Добавляем балуны в кластер
                   
                url = "http://someurl.ru/other/someXML.xml";
                ymaps.geoXml.load(url)
                 .then(function (res) {
                    //Добавляем коллекцию геообъектов в кластер 
                     clusterer.add(mygeoObjects);
                 });
                // Добавляем кластер на карту.
                myMap.geoObjects.add(clusterer);

 

Надеюсь на адекватность и вашу помощь.

5 комментариев
Подписаться на комментарии к посту
Ольга Стогова
19 декабря 2012, 05:36

Кластер работает с массивом, засуньте в массив и его добавьте в кластер, типа того

 group.each(function (item) {                result.push(item);             }); clusterer.add(result);

                            // Создаем кластеризатор
                clusterer = new ymaps.Clusterer();

                // Добавлеяем массив меток в кластер
                clusterer.options.set({
                    gridSize: 100,
                    disableClickZoom: true,
                    minClusterSize:2,
                    synchAdd:true
                });
                var result = [];
                url = "http://SomeURL.ru/SomeXML.xml";
                ymaps.geoXml.load(url)
                 .then(function (res) {
                result.push(res.geoObjects);
                 });
                clusterer.add(result);
                //Добавляем балуны в кластер
                // Добавляем кластер на карту.
                myMap.geoObjects.add(clusterer);

 


Такой вариант не работает, но возможно я сделал неверно. Если это так,  извольте поправить.

неверно

нужно добавлять каждую метку в отдельности, а не коллекцию целиком

result.push(res.geoObjects);

замените на

res.geoObjects.each(function (geoObject) {

    result.push(geoObject);

});

Большое спасибо. Все работает.

Подскажи случайно не разобрался как вывести список объектов при нажатии на кластер? много перепробовал ничего не получается только если приближать и выбирать отдельный а так список не отображается.