add displayProjection API Property on the Map, and on relevant controls.
Spherical mercator example now makes use of this, displaying coordinates in lon/lat instead of meters, and permalink/argparser now work in lon/lat as well. this functionality will make using SphericalMercator easier for a number of applications. r=tschaub (Closes #1036) git-svn-id: http://svn.openlayers.org/trunk/openlayers@5519 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -30,6 +30,20 @@ OpenLayers.Control.ArgParser = OpenLayers.Class(OpenLayers.Control, {
|
||||
* {Array(<OpenLayers.Layer>)}
|
||||
*/
|
||||
layers: null,
|
||||
|
||||
/**
|
||||
* APIProperty: displayProjection
|
||||
* {<OpenLayers.Projection>} Requires proj4js support.
|
||||
* Projection used when reading the coordinates from the URL. This will
|
||||
* reproject the map coordinates from the URL into the map's
|
||||
* projection.
|
||||
*
|
||||
* If you are using this functionality, be aware that any permalink
|
||||
* which is added to the map will determine the coordinate type which
|
||||
* is read from the URL, which means you should not add permalinks with
|
||||
* different displayProjections to the same map.
|
||||
*/
|
||||
displayProjection: null,
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Control.ArgParser
|
||||
@@ -56,6 +70,14 @@ OpenLayers.Control.ArgParser = OpenLayers.Class(OpenLayers.Control, {
|
||||
var control = this.map.controls[i];
|
||||
if ( (control != this) &&
|
||||
(control.CLASS_NAME == "OpenLayers.Control.ArgParser") ) {
|
||||
|
||||
// If a second argparser is added to the map, then we
|
||||
// override the displayProjection to be the one added to the
|
||||
// map.
|
||||
if (control.displayProjection != this.displayProjection) {
|
||||
this.displayProjection = control.displayProjection;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -97,7 +119,12 @@ OpenLayers.Control.ArgParser = OpenLayers.Class(OpenLayers.Control, {
|
||||
//dont need to listen for this one anymore
|
||||
this.map.events.unregister('changebaselayer', this,
|
||||
this.setCenter);
|
||||
|
||||
|
||||
if (this.displayProjection) {
|
||||
this.center.transform(this.displayProjection,
|
||||
this.map.getProjectionObject());
|
||||
}
|
||||
|
||||
this.map.setCenter(this.center, this.zoom);
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user