Как да задам изглед по подразбиране в OpenLayers, БЕЗ ограничаващи граници?

Въз основа на примери виждам, че можете да зададете изглед по подразбиране в OpenLayers, като кажете нещо от рода на:

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

Това обаче (както подсказва името) ме ограничава да мога да навигирам САМО в тези граници. Мога да намаля и да видя неща извън тези граници, но не мога след това да ги увелича обратно или да превъртя до тях.

Опитах да нямам restrictedExtent (или да го направя цялата карта), но след това не мога да го накарам да се фокусира върху областта, която искам. Опитах да използвам:

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

За да задам мащаба и центъра... но изглежда не прави НИЩО, освен да задам променливата "center", която след това мога да прочета от 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