[OpenLayers-Users] map property horror!
Greg Allensworth
gregor at greeninfo.org
Mon Jul 18 17:05:45 EDT 2011
> My problem lies firstly with the fact that I don´t know how to calculate
> the map resolution. Also what is the relationship between maxResolution,
> maxExtent, restricted extent and setting a mapcenter?
It was confusing to me at first. But if you're impatient, I'd say this:
Start here and copy it:
http://openlayers.org/dev/examples/web-mercator.html
For more dense reading:
http://docs.openlayers.org/library/spherical_mercator.html
The short version:
* The maxExtent etc. are set in the Map's constructor by passing
options, just like in that example. The maxExtent and maxResolution must
match up in any case, and in Google's case you can consider them
universal constants.
* You are correct to use restrictedExtent instead of maxExtent, to force
the map to stay in that area.
* If you really want to know what resolutions are and what a
max-resolution really means, feel free to ask again. If you just want
your map to work, you don't need to know the math.
> 4. If I want to setcenter, which of these property need to be taken
> away? I could see that in order the setcenter, the restrictedExtents
> might need to be removed..but is there a "best practice" way of doing
> these things?
You're doing it right: restrictedExtent and then setCenter().
If you're saying that the map doesn't recenter when you call
setCenter(), I would check whether your new center is in fact inside
your restrictedExtent. I don't see the setCenter() call in your code
there, so can't say.
Option A: If you want to zoom to the restrictedExtent, you can use this
shortcut:
map.zoomToMaxExtent()
Due to the restrictedExtent, this won't in fact zoom to the whole world
but only to your restriction.
Option B: Use this quick trick to do some reprojection, and see if your
extent looks right:
var sw = new OpenLayers.Bounds(-120,34,-100,54);
var lonlat = new OpenLayers.Projection('EPSG:4326');
var google = new OpenLayers.Projection('EPSG:900913');
alert( sw.transform(lonlat,google) );
--
Greg Allensworth
Web GIS Developer, GreenInfo Network
BS A+ Network+ Security+ Linux+ Server+
More information about the Users
mailing list