Как установить вид по умолчанию в OpenLayers, БЕЗ ограничения границ? - PullRequest
2 голосов
/ 24 августа 2010

Основываясь на примерах, я вижу, что вы можете установить представление по умолчанию в 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());

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

Используемый мной слой карты:

OpenLayers.Layer.OSM.Mapnik

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

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

1 Ответ

3 голосов
/ 24 августа 2010

Я думаю, я понял это.По какой-то причине зум никогда не менялся, но центр, по-видимому, двигался (он был настолько уменьшен, что я не мог сказать).Добавьте к тому факту, что мне нужно было преобразовать центр для использования проекции 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);
...