Клуб API Карт

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

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

Мне нужно пройтись по 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 комментариев
Комментарий удалён

спасибо

 

Sergey Konstantinov
28 января 2016, 04:44

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

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

var items = [];

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

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

    group.add(item[i]);

}

 

спасибо

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

Дмитрий Тимофеев
28 января 2016, 04:44

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