Hello list, OpenStreetMap and also some popular commercial mapservices (google, bing, yahoo) are using the so called sphericalmercator projection. OpenLayers has built-in support for this type of layer, inherited from OpenLayers.Layer.SphericalMercator.
If you use a sphericalmercator layer as a baselayer, you may want to combine this with other layers. By default, the openlayers sphericalmercator baselayer uses SRS projection-code 'EPSG:900913' . So, if you try to open an overlay, the overlay layer will be called with parameter SRS=EPSG:900913. EPSG Code 900913 happens to be a bogus code, based on the word 'google'. Perhaps due to the resemblance of '900913' and 'google' or due to other reasons, there are now several other codes in use for the same projection: EPSG:3857 EPSG:3785 <= maybe because of a typo by someone somewhere? EPSG:102113 Some map-services have stopped supporting SRS=EPSG:900913 and this raises a problem for openlayers sphericalmercator users. Instead of displaying a map, these mapservices will respond with something like 'no support for EPSG:900913'. The problem of overlaying sphericalmercator layers that do not support epsg:900913 can be (partly) solved as follows: Override the default srs code for sphericalmercator layers by explicitly resetting the projection before adding the layer to a map: var osmLayer = new OpenLayers.Layer.OSM("OpenStreetMap"); // osmlayer is now sphericalmercator with default epsg:900913 osmLayer.projection = new OpenLayers.Projection ("EPSG:3857"); // osmlayer is now sphericalmercator with epsg:3857 map.addLayers ([osmLayer]); Overlay layers will now be requested with SRS=ESPG:3857 However, resetting the code for the baselayer projection, causes trouble for the controls for MousePosition and MeasureControl: distances and coordinates are no longer presented in the correct projection. I solved this by adding the following lines of code to file lib\OpenLayers\Layer\SphericalMercator.js OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:3857", OpenLayers.Layer.SphericalMercator.projectForward); OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:102113", OpenLayers.Layer.SphericalMercator.projectForward); OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:3785", OpenLayers.Layer.SphericalMercator.projectForward); OpenLayers.Projection.addTransform("EPSG:3857", "EPSG:4326", OpenLayers.Layer.SphericalMercator.projectInverse); OpenLayers.Projection.addTransform("EPSG:102113", "EPSG:4326", OpenLayers.Layer.SphericalMercator.projectInverse); OpenLayers.Projection.addTransform("EPSG:3785", "EPSG:4326", OpenLayers.Layer.SphericalMercator.projectInverse); Questions: - is this the way to support aliases for 900913 and support MousePosition and MeasureControl at the same time? - if yes, shouldn't the above lines be part of the standard OpenLayers distribution? Anne Blankert _______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users