Клуб API Карт

Подходящий zoom карты при геокодировании

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

Как определить подходящий zoom карты для объектов, которые вернул геокодер?

 

 

geocoder.then(

  function (res) {

    var object = res.geoObjects.getIterator().getNext();

    map.panTo(object.geometry.getCoordinates());

    map.setZoom(??????);

  }

);

6 комментариев
Алексей Yarrr!
28 января 2016, 03:46

у карты есть метод setBounds, это не panTo, конечно, но с помощью точек, которые вернул геокодер, можно собрать 2 координаты и передать эти 2 точки в setBounds.

карта выставится с нужным зумом на этих точках.

Да действительно, правильнее будет использовать setBounds, спасибо.

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

В старой версии API это делалось так:

map.setBounds(geocoder.get(0).getBounds());

http://api.yandex.ru/maps/doc/jsapi/1.x/dg/concepts/geocoder.xml

 

Для 2.0 решение есть на 3 поста ниже.

Используйте поиск.

 

http://clubs.ya.ru/mapsapi/replies.xml?parent_id=30067&item_no=30061&with_parent=1#reply-mapsapi-30067

Работает

 

var bounds =  res.geoObjects.get(0).properties.get('boundedBy');

map.setBounds(bounds); 

 

Я то искал, но не знаю, как бы я ваш пост нашел по поиску. Хотя просмотреть несколько последних постов было бы полезно. В любом случае - спасибо за помощь.

 

Sergey Konstantinov
28 января 2016, 03:46
Настоятельно рекомендую пользоваться параметром checkZoomRange:
map.setBounds(bounds, { checkZoomRange: true });
Использование этого синтаксиса гарантирует, что после setBounds карта не провалится в серые тайлы.

да, аналогичную опцию можно использовать и для map.setCenter

map.setCenter(_new_center_, map.getZoom(), { checkZoomRange: true });