Клуб API Карт

Проблема с зумированием setBounds

israelmedtur
26 февраля 2014, 17:46

Добрый день.

 

Ситуация следующая, в базе имеются координаты точек. которые я добавляю на карту, т.е. геокодированием не пользуюсь. Но после добавления онных точек хочу отцентровать по ним карту и сделать оптимальный зум. Но в итоге после применения setBounds устанавливается zoom:1 для моей карты. Что я только не пробовал в setBounds.options ничего не помогло. Вот мой код:

 

 

//Adding yandex map

        var myMap = new ymaps.Map('yandex-map', {

            center: [50.451118,30.522301],

            zoom: 14,

            scaleLine:true

        });

        myMap.controls.add('zoomControl', {

            top: 75, 

            left: 5

        });

        $('#select-btn li').bind('click', function (event, ui) {

            myMap.container.fitToViewport();

        });

    

        //Adding collection with points

        var myCollection = new ymaps.GeoObjectCollection();

        

        $('.item-coords').each(function( index, item ) {

            var $this=$(item);

 

            var coords=eval($this.text());

            

            var data = {

                balloonContent: '<div class=\"item-list first\">'+$this.closest('div.item-list').html()+'</div>',

                hintContent: $this.closest('.item-list').find('.item-address').html(),

                iconContent: ''

            },

            options = {

                balloonHasCloseButton: true

            }

            

            myCollection.add(new ymaps.Placemark(coords, data, options));

        });

 

        myMap.geoObjects.add(myCollection);

        console.log(myCollection.getBounds());

        myMap.setBounds(myCollection.getBounds(), {checkZoomRange:true,preciseZoom:true,zoomMargin:0.1});

 

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

 

var coords=eval($this.text());

Во-первых надо убедится что этот блок в стиле "так никогда не надо делать"

возвращает именно массив из 2-х чисел

 

Точнее подсказать сложно, т.к. ссылки на этот код вы не выложили

Вот ссылка.

http://www.fotomakler.com.ua/

 

Уже чёрти сколько бьюсь с setBounds ничего не помогает. В слушатель clusterer.events.once не заходит.

Пытался в setBounds вставить вручную точки, всё равно не помогает.

У вас изначально карта скрыта (размер равен нулю)

поэтому setBounds не работает

попробуйте перенести навешивание "objectsaddtomap" внутрь обработчика клика по кнопке показа карты (там где вы делаете fitToViewport)

Огромное спасибо, сделал через myMap.events.add('sizechange' ... и всё получилось. =)