Клуб API Карт

Автозум карты

Пост в архиве.
m.nigma
16 ноября 2012, 01:57

Здравствуйте!

Прошу сильно не пинать, только начал осваивать API карт. По примерам разобрался, как создавать карту, добавлять маркеры.

Сейчас координаты точек лежат в базе, выборкой вывожу их на карту (до 100 объектов). Как задать для карты в таком случае автозум, чтобы крайние маркеры были максимально близко к краям карты? Маркеры загоняю в коллекцию.

...

var myMap = new ymaps.Map('global-map', {center: [56.857929, 35.923828], zoom:11});

var myCollection = new ymaps.GeoObjectCollection();

...

Нашел в поиске setBounds, вставил наугад координаты, но карта не меняется. Или это для 1.x ?

myMap.setBounds(56.857929, 35.923828, 58.857929, 37.923828);

3 комментария

Рекомендую читать документацию

 map.setBounds принимает не 4-ре параметра, а 2

т.е. нужно передавать область в массиве

myMap.setBounds([[56.857929, 35.923828], [58.857929, 37.923828]]);

У коллекции можно получить область видимости всех ее элементов, через метод getBounds


таким образом получаем

myMap.setBounds(myCollection.getBounds());


Спасибо большое, оказывается, очень просто! Даже не нужны координаты min и max, которые выбирал из бд. Обязательно почитаю про map.setBounds. Почему передавал не массивом - нашел пример, alert_ом посмотрел, увидел список координат через запятую.

alert приводит свои аргументы к строке, т.е. вызывает на них toString()

[1,2,3,4].toString() будет "1,2,3,4"

используйте console.log, вместо alert

Мы опубликовали 2 статьи про поиск ошибок в коде,

возможно вам пригодятся