Клуб API Карт

После поиска zoom не выставляется

Дарья Миронова
14 апреля 2016, 12:38

Здравствуйте, проблемы с поиском. Я произвожу поиск и затем выставляю зум 16.

       mySearchControl.events.add('resultselect', function (e) {
            var index = e.get('index');
            mySearchResults.removeAll();
            mySearchControl.getResult(index).then(function (res) {
                coords = res.geometry.getCoordinates();
                $('#address').val(res.properties.get('name'));
                $('#coords').val(coords);
                mySearchResults.add(res);
                myMap.setZoom(16);
            });
        }).add('submit', function () {
            $('#point-map').val(1);
            mySearchResults.removeAll();
        })

зум сперва высталяет 16, а потом каким-то чудесным образом обратно 12.

вот весь код 

ymaps.ready(function () {
        var coords = $('#coords').val(),
            address = $('#address').val();
        if(coords) {
            var coord_arr = coords.split(',');
        }

        var myMap = new ymaps.Map('map', {
                center: coords ? [coord_arr[0], coord_arr[1]] : [53.907,27.55],
                zoom: coords ? 16 : 12,
                controls: ['smallMapDefaultSet']
            }),

            // Создаем экземпляр класса ymaps.control.SearchControl
            mySearchControl = new ymaps.control.SearchControl({
                options: {
                    noPlacemark: true
                }
            }),

            // Результаты поиска будем помещать в коллекцию.
            mySearchResults = new ymaps.GeoObjectCollection(null, {
                hintContentLayout: ymaps.templateLayoutFactory.createClass('$[properties.name]'),
                draggable: true,
                preset: 'islands#darkGreenIcon'
            });

        myMap.behaviors.disable('scrollZoom');

        if(coords) {
            var myGeoObject = new ymaps.GeoObject({
                geometry: {
                    type: "Point",
                    coordinates: [coord_arr[0], coord_arr[1]]
                },
                properties: {
                    balloonContent: address
                }
            }, {
                preset: 'islands#darkGreenIcon',
                draggable: true
            });


            myMap.geoObjects.add(mySearchResults);
            mySearchResults.add(myGeoObject);
        }

        myMap.controls.add(mySearchControl);
        if(!coords) {
            myMap.geoObjects.add(mySearchResults);
        }

        mySearchResults.events.add('drag', function (e) {
            coords = e.get('target').geometry.getCoordinates();
            $('#coords').val(coords);

        });

        mySearchControl.events.add('resultselect', function (e) {
            var index = e.get('index');
            mySearchResults.removeAll();
            mySearchControl.getResult(index).then(function (res) {
                coords = res.geometry.getCoordinates();
                $('#address').val(res.properties.get('name'));
                $('#coords').val(coords);
                mySearchResults.add(res);
                myMap.setZoom(16);
            });
        }).add('submit', function () {
            $('#point-map').val(1);
            mySearchResults.removeAll();
        })
    });

Не могу понять почему зум не выставляется после поиска

4 комментария
Подписаться на комментарии к посту
Видимо при выборе результата итак происходит масштабирование
попробуйте выставить опцию noCentering: true
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/control.SearchControl-docpage/#param-parameters.options.noCentering
Дарья Миронова
14 апреля 2016, 13:30
dimik,
ну да тогда устанавливает зум, вот только к результату не переходит. А нужно чтобы к результату центрировало
Дарья Миронова,
используйте setCenter на координаты результата вместо setZoom

myMap.setCenter(coords, 16);

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Map-docpage/#setCenter
Дарья Миронова
14 апреля 2016, 13:49
dimik,
спасибо. Всё работает