Клуб API Карт

Перебор по res.geoObjects и создание группы

akon-spb
15 мая 2012, 17:03

Мне нужно пройтись по res.geoObjects и добавить все элементы в группу. Два варианта  - оба неудачные.

var group = new ymaps.GeoObjectCollection();
res.geoObjects.each(function (item) {
        group.add(item);
});

 

var length=res.geoObjects.getLength();
var iterator=res.geoObjects.getIterator();
var item;
for(var i=0; i<length; i++){
                item = iterator.getNext();
                group.add(item);
}

 Во всех случаях item перебираются почему-то через один (1-й, 3-й,...) и поэтому цикл доходит только до половины и зависает на очередном getNext(); При этом если убрать group.add(item); то перебирается нормально.

 ссылка на страницу, где используется этот код

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

спасибо

 

Добавление элемента в другую коллекцию приводит к удалению его из текущей :) Поэтому в each переносить элементы не правильно.

Самое просто решение - просто перенести коллекцию целиком. Либо предварительно сохранить все элементы и переносить их не через each:

var items = [];

res.geoObjects.each(function (item) { items.push(item); });

for (var i = 0; i < items.length; i++) {

    group.add(item[i]);

}

 

спасибо

Williams.Smirnov
19 июня 2013, 15:33

Огромное Вам спасибо)

помогло, спасибо [:]||||[:]