Клуб API Карт

Получение массива YMaps.Placemark из YMapsML для создания класса YandexClusterer

Пост в архиве.

Пожалуйста, помогите получить из YMapsML массив данных, состоящий из YMaps.Placemark, чтобы использовать его для создания класса YandexClusterer и отображения меток.

При загрузке YMapsML и отображении через map.addOverlay (ml) - все работает, а если после загрузки вызываю ml.length - выдает 1, а не фактическое кол-во меток.


Выдержка из кода:



var map = new YMaps.Map (YMaps.jQuery ("#YMaps_Contracts")[0]);
var ml = new YMaps.YMapsML ('...путь к файлу...');
var markers = [];
var opts = [];

YMaps.Events.observe (ml, ml.Events.Load, function (ml)
{

// ВОТ ЗДЕСЬ НЕОБХОДИМО ЗАПОЛНИТЬ МАССИВ markers ИЗ YMaps.Placemark ВЗЯТЫХ ИЗ ml.

clusterer = new YandexClusterer (map, [], opts);
clusterer.setMarkers (markers);
clusterer.repaint ();
})

3 комментария

 

YMaps.Events.observe (ml, ml.Events.Load, function (ml)
{
var markers = [],
    clusterer = new YandexClusterer (map, [], opts);
ml.foreach(function(placemark) {
    markers.push(placemark);
});
 clusterer.setMarkers (markers);
clusterer.repaint ();
})

 

Спасибо за ответ!

Но, опять же, почему то цикл forEach проводит только одну итерацию и на выходе не объект YMaps.Placemark. :(

Судя по всему на выходе объект IOverlay (раз через addOverlay все работает).

Вот как все работает:



                YMaps.Events.observe (ml, ml.Events.Load, function (ml)
                {
                    var markers   = [],
                        clusterer = new YandexClusterer (map, [], opts);

                    placemarks = ml.get (0);
                    placemarks.forEach (function (placemark)
                    {
                        markers.push (placemark);
                    })

                    clusterer.setMarkers (markers);
                    clusterer.repaint ()
                })


Спасибо!