New private movePyPx method to avoid going through all the unnecessary pixel-lonlat conversions. p=elemoine,me (closes #3062)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11535 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+21
-15
@@ -569,6 +569,17 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
this.display(display);
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: moveByPx
|
||||
* Move the layer based on pixel vector. To be implemented by subclasses.
|
||||
*
|
||||
* Parameters:
|
||||
* dx - {Number} The x coord of the displacement vector.
|
||||
* dy - {Number} The y coord of the displacement vector.
|
||||
*/
|
||||
moveByPx: function(dx, dy) {
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: setMap
|
||||
* Set the map property for the layer. This is done through an accessor
|
||||
@@ -1201,22 +1212,17 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
*/
|
||||
getLonLatFromViewPortPx: function (viewPortPx) {
|
||||
var lonlat = null;
|
||||
if (viewPortPx != null) {
|
||||
var size = this.map.getSize();
|
||||
var center = this.map.getCenter();
|
||||
if (center) {
|
||||
var res = this.map.getResolution();
|
||||
|
||||
var delta_x = viewPortPx.x - (size.w / 2);
|
||||
var delta_y = viewPortPx.y - (size.h / 2);
|
||||
|
||||
lonlat = new OpenLayers.LonLat(center.lon + delta_x * res ,
|
||||
center.lat - delta_y * res);
|
||||
var map = this.map;
|
||||
if (viewPortPx != null && map.minPx) {
|
||||
var res = map.getResolution();
|
||||
var maxExtent = map.getMaxExtent();
|
||||
var lon = (viewPortPx.x - map.minPx.x) * res + maxExtent.left;
|
||||
var lat = (map.minPx.y - viewPortPx.y) * res + maxExtent.top;
|
||||
lonlat = new OpenLayers.LonLat(lon, lat);
|
||||
|
||||
if (this.wrapDateLine) {
|
||||
lonlat = lonlat.wrapDateLine(this.maxExtent);
|
||||
}
|
||||
} // else { DEBUG STATEMENT }
|
||||
if (this.wrapDateLine) {
|
||||
lonlat = lonlat.wrapDateLine(this.maxExtent);
|
||||
}
|
||||
}
|
||||
return lonlat;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user