Клуб API Карт

Проблема с Bounds

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

Код:

var obj_bounds = new YMaps.GeoCollectionBounds( new YMaps.GeoPoint(30.498047, 50.457504) );
var new_zoom = obj_bounds.getMapZoom() < 13 ? obj_bounds.getMapZoom() : 13;

 


Firefox выдает ошибку в YMaps.js (line 1)

n is undefined
(function(I){try{undefined}catch(f){wind...sClassName,this.isSelected())}})(YMaps);


Причем ошибка при любом обращении к obj_bounds (мне еще надо getCenter получить)
Пробовал передавать массив - результат тот же. Причем до недавних пор все как будто работало. Проблема появилась вчера вечером.
7 комментариев
Sergey Konstantinov
28 января 2016, 08:45
В метод getMapZoom() надо передавать параметром карту, для которой Вы хотите вычислить масштаб.
Юрий Клинков
28 января 2016, 08:45
Спасибо, помогло
Юрий Клинков
28 января 2016, 08:45
Рано обрадовался

            bounds.push( new YMaps.GeoPoint(30.45630200000000, 50.41987200000000) );
            bounds.push( new YMaps.GeoPoint(30.51093726531158, 50.48268139097521) );
            bounds.push( new YMaps.GeoPoint(30.51368600000000, 50.42717700000000) );

            var obj_bounds = new YMaps.GeoCollectionBounds( bounds );

alert(obj_bounds.getMapZoom(map));
alert(obj_bounds.getCenter());


Выдает
3
15.325744, 28.157249

Т.е. центр где-то в Атлантике. В то время как координаты где-то в центре Киева. И масштаб 3 сильно отличется от 14-15.
Юрий Клинков
28 января 2016, 08:45
Да, забыл сказаь, перед вызовом кода я получаю координаты центра Киева и центрирую по ним карту.
Юрий Клинков
28 января 2016, 08:45
Эффект наблюдаю в IE / Opera. В Firefox вроде бы все хорошо.
Sergey Konstantinov
28 января 2016, 08:45
в bounds очевидно лежит еще как минимум одна геоточка. Похоже, что (0,0). Посмотрите внимательно код.
Юрий Клинков
28 января 2016, 08:45
Вы правы. Спасибо. Протестировал - работает.
Итоговый вид
        if( bounds.length ) {

            var obj_bounds = new YMaps.GeoCollectionBounds( bounds );
            var new_zoom = obj_bounds.getMapZoom(map);
            map.setCenter( obj_bounds.getCenter(map), new_zoom < 13 ? new_zoom : 13 );

        }