Клуб API Карт

Не все регионы показываются

pavelbrov
29 мая 2016, 06:31

Пытался через each вывести определенные регионы и заметил, что в цикл попадают только часть из них.

Что я делаю не так?

Для наглядности fiddle: https://jsfiddle.net/cja184df/3/

Код скрипта :

ymaps.ready(init);
function init() {

  
    var myMap = new ymaps.Map('map',{
          center: [57.01, 41.00],
          zoom: 3,
          controls:['zoomControl']
        });


    ymaps.regions.load('RU', {
            lang: 'ru',
            quality: 1
        }).then(function (result) {
            var regions = result.geoObjects; 
            regions.each(function (reg) {
              myMap.geoObjects.add(reg);
            });
      
        }, function () {
            //alert('No response');
        });
}

И еще заметил, что при добавлении в коллекцию полигонов, границы коллекции (getBounds) не определяются. Если добавить Placemark-и и полигоны, границы будут составляться на основе Placemark-ов, а полигоны не учитываются. Так и должно быть?

4 комментария
Подписаться на комментарии к посту
regions.each(function (reg) {
myMap.geoObjects.add(reg);
});


Вы в цикле по regions удаляете из него элементы (перенос в другую коллекцию это смена родителя и удаление из текущей коллекции)
Так, что они начинают перебираться через один, как если бы вы при переборе удаляли элементы из js-массива


Грвницы полигонов должны учитываться
dimik,
Спасибо большое, разобрался, и границы полигонов начали учитываться, наверное что-то не так делал.
Еще вопрос, как мне скопировать несколько регионов в коллекцию? Чтоб выводились только они, а не все. Т.е. через each я могу вывести все регионы, одни будут закрашены в один цвет, а те несколько в другой, но мне нужно, чтоб выводились только мои пара-тройка регионов, а остальная часть карты оставалась без полигонов. 
Пока вижу только вариант - запускать каждый раз regions.each и вытаскивать один из нужных регионов, сколько регионов мне нужно, столько циклов и придется запустить.. Есть ли вариант получше?
pavelbrov,
Можно попробовать geoQuery.search
Передавать в search функцию-фильтр, которая возращает true на нужных регионах
dimik,
спасибо, посмотрю. Еще один способ нашел - отображать все регионы, но те, что нужно выделить - закрасить цветом, а остальные сделать прозрачными. Только границу для выделенных регионов придется самим посчитать.