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:
@@ -211,6 +211,22 @@ OpenLayers.Layer.EventPane = OpenLayers.Class(OpenLayers.Layer, {
|
||||
OpenLayers.Layer.prototype.setZIndex.apply(this, arguments);
|
||||
this.pane.style.zIndex = parseInt(this.div.style.zIndex) + 1;
|
||||
},
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
OpenLayers.Layer.prototype.moveByPx.apply(this, arguments);
|
||||
|
||||
if (this.dragPanMapObject) {
|
||||
this.dragPanMapObject(dx, -dy);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: moveTo
|
||||
|
||||
@@ -251,19 +251,37 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
|
||||
if (forceReTile || !tilesBounds.containsBounds(bounds, true)) {
|
||||
this.initGriddedTiles(bounds);
|
||||
} else {
|
||||
// we might have to shift our buffer tiles, schedule
|
||||
// that
|
||||
if (this.timerId != null) {
|
||||
window.clearTimeout(this.timerId);
|
||||
}
|
||||
this.timerId = window.setTimeout(
|
||||
this._moveGriddedTiles,
|
||||
this.tileLoadingDelay
|
||||
);
|
||||
this.scheduleMoveGriddedTiles();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: moveByPx
|
||||
* Move the layer based on pixel vector.
|
||||
*
|
||||
* Parameters:
|
||||
* dx - {Number}
|
||||
* dy - {Number}
|
||||
*/
|
||||
moveByPx: function(dx, dy) {
|
||||
this.scheduleMoveGriddedTiles();
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: scheduleMoveGriddedTiles
|
||||
* Schedule the move of tiles.
|
||||
*/
|
||||
scheduleMoveGriddedTiles: function() {
|
||||
if (this.timerId != null) {
|
||||
window.clearTimeout(this.timerId);
|
||||
}
|
||||
this.timerId = window.setTimeout(
|
||||
this._moveGriddedTiles,
|
||||
this.tileLoadingDelay
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: setTileSize
|
||||
@@ -682,7 +700,9 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
|
||||
var shifted = true;
|
||||
var buffer = this.buffer || 1;
|
||||
var tlLayer = this.grid[0][0].position;
|
||||
var tlViewPort = this.map.getViewPortPxFromLayerPx(tlLayer);
|
||||
var offsetX = parseInt(this.map.layerContainerDiv.style.left);
|
||||
var offsetY = parseInt(this.map.layerContainerDiv.style.top);
|
||||
tlViewPort = tlLayer.add(offsetX, offsetY);
|
||||
if (tlViewPort.x > -this.tileSize.w * (buffer - 1)) {
|
||||
this.shiftColumn(true);
|
||||
} else if (tlViewPort.x < -this.tileSize.w * buffer) {
|
||||
|
||||
Reference in New Issue
Block a user