Как установить представление по умолчанию в OpenLayers БЕЗ ограничения границ?

Основываясь на примерах, я вижу, что вы можете установить представление по умолчанию в OpenLayers, сказав что-то вроде:

    var bounds = new OpenLayers.Bounds(-125, 25, -65, 50);
var map = new OpenLayers.Map('map', {restrictedExtent: bounds  });

Однако это также (как следует из названия) ограничивает меня, чтобы я мог перемещаться ТОЛЬКО в этих пределах. Я могу уменьшить масштаб и увидеть объекты за пределами этих границ, но не могу затем вернуться к ним или прокрутить до них.

Я пытался не иметь никакого limitedExtent (или сделать его всей картой), но тогда я не могу заставить его сосредоточиться на той области, которую я хочу. Я пытался использовать:

     map.setCenter(new OpenLayers.LonLat(0,0), 3);
     console.log(map.getCenter());

Чтобы установить масштаб и центр... но, похоже, это НИЧЕГО не делает, кроме как установить переменную "центр", которую я затем могу прочитать из map.getCenter() (если я ее не устанавливаю, она равна нулю , если я его устанавливаю, я его вижу... но сама карта остается полностью расширенной, и ее центр, похоже, вообще не меняется...)

Слой карты, который я использую:

OpenLayers.Layer.OSM.Mapnik

с displayOutsideMaxExtent, установленным в true... Я действительно в недоумении.

Моя цель состоит в том, чтобы масштабировать регион мира по умолчанию и отображать его (например, Соединенные Штаты), с возможностью зрителей выходить за пределы стандартного для просмотра вещей.


person J.R.    schedule 24.08.2010    source источник


Ответы (1)


Думаю, я понял это. По какой-то причине масштаб никогда не менялся, но центр, по-видимому, ДВИЖАЛСЯ (он был настолько уменьшен, что я не мог сказать). Добавьте к этому тот факт, что мне нужно было преобразовать центр, чтобы использовать проекцию Google, и, похоже, все работает отлично.

В итоге я сделал следующее:

var lonlat = new OpenLayers.LonLat(20,37).transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));
map.setCenter(lonlat);
map.zoomTo(4);
person J.R.    schedule 24.08.2010