Клуб API Карт

Как центрировать карту и устанавливать масштаб?

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

После загрузки страницы на карту наносятся все маркеры, есть отдельно список городов, при клике на которые я получаю список маркеров из этого города (маркеры уже нанесены), карта должна центрироваться и устанавливать масштаб так, чтобы в область попали найденные маркеры.


Пробовал через коллекции:

var myCollection = new ymaps.GeoObjectCollection();

 

for(...){

    myCollection.add(markers[i]);

}

 

map.geoObjects.add(myCollection);

var centerAndZoom = ymaps.util.bounds.getCenterAndZoom(

    myCollection.getBounds(),

    self.map.container.getSize(),

    self.map.options.get('projection')

);

 

map.setCenter(

     [centerAndZoom.center[0], centerAndZoom.center[1]],

     centerAndZoom.zoom

);

 

Всегда получаю centerAndZoom.zoom = 42

И еще вопрос, если у меня уже нанесены маркеры, правильно ли то, что я делаю map.geoObjects.add(myCollection)?

Но если не добавлить коллекцию, я не могу получить myCollection.getBounds()

 

3 комментария
1. Зачем раскладывать центр если можно передать as is
map.setCenter(
     [centerAndZoom.center[0], centerAndZoom.center[1]],
     centerAndZoom.zoom
);

->
map.setCenter(
    centerAndZoom.center,
    centerAndZoom.zoom
);

2. Зачем нужно конвертировать bounds через util.bounds если можно прямо выставить его карте?

map.setBounds(myCollection.getBounds());

3. В текущей архитектуре объекты и коллекция должны быть добавлены на карту для расчета bounds
Если в collection всего одна Placemark (точка), то при 
map.setBounds(myCollection.getBounds());
карта входит в неадекватное состояние из-за того что bounds совпадают в точку
Игорь,
Вам нужно выставить checkZoomRange: true, тогда при выставлении масштаба будет выставлен максимальный зум доступный для этой области. Вот документация.