Клуб API Карт

Динамическое обновление координат

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

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

multiSearch(data)  //onButtonClick

function multiSearch(dt){

            points = []
            map.removeOverlay(geoResult);
            for (var i=0; i<dt.length; i++){
                    showAddress (dt[i])                   
            }
            colBo = new YMaps.CollectionBounds( points )
            map.setBounds(colBo); // ???
        }
function showAddress (value) {     
            var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()}
            YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
          
                if (this.length()) {
                    geoResult = this.get(0);
                    map.addOverlay(geoResult);                   
                    points.push(geoResult.getBounds())

}

ps И есть ли метод плавного перехода от одной группы точек к другой?

 

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

так как Вы написали конечно работать не будет.

в функции showAddress у вас асинхронный вызов геокодера и когда после цикла

вы делаете map.setBounds(colBo);

никакие данные еще не пришли и colBo не будет заполнен

поищите в записях клуба темы про множественное геокодирование

Вот тут например обсуждается схожая проблема

спасибо! буду разбираться.