[OpenLayers-Dev] Switching between base layers with different projection?

Julien-Samuel Lacroix jlacroix at mapgears.com
Wed Jun 4 10:51:47 EDT 2008


Hi,

We've successfully changed the baseLayer of our application by changing 
only the projection, maxExtent, units and maxResolution of the layer we 
want as the new baseLayer.

if(myLayer.name == 'Normal projection')
{
     myLayer.projection = new OpenLayers.Projection('EPSG:4326');
     myLayer.maxExtent = new OpenLayers.Bounds(-165, 15, -50, 75);
     myLayer.units = 'degrees';
     myLayer.maxResolution = 1.40625;
}
else if(myLayer.name == 'SphericalMercator projection')
{
     myLayer.projection = new OpenLayers.Projection('EPSG:900913');
     myLayer.maxExtent = new OpenLayers.Bounds(-20037508.34, 
-20037508.34, 20037508.34, 20037508.34);
     myLayer.units = 'm';
     myLayer.maxResolution = 156543.0339;
}
map.setBaseLayer(myLayer);
// Then zoom to SphericalMercator bounds
map.zoomToExtent(bounds);


Note that we had a bunch of custom Controls that we needed to be updated 
to check the projection before zooming somewhere. But other than that it 
was pretty straight forward.

Julien

Roald de Wit wrote:
> Hi list,
> 
> For a client I'd like to provide a map with base layers in different
> projections (and with overlays) that switches nicely between base
> layers, recalculating the overlays.
> 
> crschmidt just told me on IRC [1][2] that it is probably not possible
> with the current code in the trunk, since when switching base layers,
> the map tries to keep the 'same' maxextent.
> 
> Edgemaster, apparently you've got it working in a sandbox. If so, could
> you please tell a little bit more about it and point to a working
> example? This might be a nice addition for trunk?
> 
> Thanks,
> 
> Roald
> 
> [1] http://crschmidt.net/irc/openlayers/log.cgi/2008-06-02#T23-46-35
> [2] http://crschmidt.net/irc/openlayers/log.cgi/2008-06-03#T00-23-04
> 

-- 
Julien-Samuel Lacroix
Mapgears
http://www.mapgears.com/



More information about the Dev mailing list