Клуб API Карт

Заголовок не указан

bystrovzorov
13 июля 2009, 23:01
  1. Подскажите, как правильно написать цикл forEach по GeoObjectCollection в созданной карте:
        map = new YMaps.Map(document.getElementById("YMapsID"));
        map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
        ml = new YMaps.YMapsML(xmlsrc);
        map.addOverlay(ml);
        YMaps.Events.observe(ml, ml.Events.Fault, function(error) { alert('Ошибка: ' + error); });

 

6 комментариев
Подписаться на комментарии к посту
Необходимо ловить событие Load у загружаемого YMapsML-документа.
В нем можно организовать цикл по элементам с помощью forEach.
В документации описано как использовать этот метод:
http://api.yandex.ru/maps/jsapi/doc/ref/reference/group.xml#forEach
В документации очень мало.
Не могли бы вы продолжить мой код для получения в цикле загруженных данных, например, координат?
Какую задачу Вы решаете? Что Вы хотите получить в итоге?

Нужно получить из загруженных данных список мест(названия, координаты, id). Данные на карту были загружены из xml-файла. 

Перебрать все объекты загруженные с помощью YMapsML можно так:

var ml = new YMaps.YMapsML('http://api.yandex.ru/maps/ymapsml/examples/parentstyleobject.xml');
map.addOverlay(ml);

YMaps.Events.observe(ml, ml.Events.Load, function () {
    ml.get(0).forEach(function (obj) {
        alert(obj.description);
    });
});

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