Клуб API Карт

Правильный зуум

Milov
27 августа 2013, 23:41

Здравствуйте. Вопрос такой: при выводе на карту улицы немогу поставить зум чтоб влезала вся улица. к примеру с маленькой улочкой проблем нет, поставил зум 15. А если это проспект Мира который через полгорода тянется? пробовал сетбоунд. неполучается.

10 комментариев
Подписаться на комментарии к посту

Если речь о геокодировании, то делается так:

ymaps.geocode("улица Ленина")

    .then(function (res) {

        var first = res.geObjects.get(0);

        myMap.setBounds(first.properties.get("boundedBy"));

    });

нет. координаты у меня уже есть.

делаю так:

    zom=(type=='street') ? 15 : 16;
   
                var myMap = new ymaps.Map("map", {
                        center: obj,
                        zoom:zom
                    });

                myPlacemark1 = new ymaps.Placemark(obj, {
                    iconContent: icontent,
                    balloonContent: icontent,
                    hintContent: icontent,
                   
                }, {
                    draggable: "false",
                    preset: 'twirl#yellowStretchyIcon'
                });
               
                myMap.controls
                    .add('zoomControl', { left: 5, top: 5 })
                    .add('mapTools', { left: 35, top: 5 })
                    .add(new ymaps.control.TrafficControl({providerKey: 'traffic#actual', shown: true, infoLayerShown: false, expanded:false}))
                    .add(new ymaps.control.MiniMap({type: 'yandex#publicMap'}));
  
                myMap.geoObjects.add(myPlacemark1);
               
                myPlacemark1.balloon.open();
               
                //myMap.setBounds(myMap.geoObjects.getBounds());
                myMap.setBounds(myMap.geometry.getBounds(), {checkZoomRange:true, preciseZoom:true});

 

работает. но плохо зумирует.

если вместо

myMap.setBounds(myMap.geometry.getBounds(), {checkZoomRange:true, preciseZoom:true});

поставить

myMap.setBounds(myMap.geoObjects.getBounds());

то зум ставить максимальный и идёт : "Для данного участка местности нет данных..." вобщем карты нет. зумирую появляется

АПИ само никак не может узнать какой масштаб нужно установить вашей улице

надо проверять количество точек в коллекции myMap.geoObjects

(или лучше в отдельную коллекцию свои метки положить) и выставлять какой-то фиксированный масштаб, например 15, с параметром checkZoomRange: true

так и стоит 15, с параметром checkZoomRange: true

и какие метки?

точка одна на улицу.

тут тоже так одна точка, но зумирует идеально (если в поиске улицу вбить):

http://maps.yandex.ru/?text=Россия, Москва, проспект Мира&sll=37.637542,55.809884&ll=37.651331,55.809560&spn=0.230026,0.081299&z=13&l=map

ну эти данные приходят из геокодера (тот вариант что я вам показывал изначально)

а у вас своя точка.

Храните у себя тогда область, занимаемую улицей вместе с улицей

эту точку я получил как раз через геокодер. и вывожу улицу по ней. чтоб постоянно к яндексу не обращаться.

должно же быть решение, раз есть решение через геокодер.

Надо было вместе с точкой сохранить область из геокодера

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

если делать по примеру http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/GeoObject.xml

то такая же проблема

 

myMap.setBounds(_область_)

спасибо! бэтмен ты святой.