diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index 976eb674ef..a960b5f288 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -459,6 +459,9 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { * resolution - {Number} The resolution to transition to. */ applyBackBuffer: function(resolution) { + if(this.backBufferTimerId !== null) { + this.removeBackBuffer(); + } var backBuffer = this.backBuffer; if(!backBuffer) { backBuffer = this.createBackBuffer(); @@ -534,24 +537,17 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { * Remove back buffer from DOM. */ removeBackBuffer: function() { - if(this.backBuffer && this.backBuffer.parentNode) { + if(this.backBuffer) { this.div.removeChild(this.backBuffer); this.backBuffer = null; this.backBufferResolution = null; + if(this.backBufferTimerId !== null) { + window.clearTimeout(this.backBufferTimerId); + this.backBufferTimerId = null; + } } }, - /** - * Method: scheduleBackBufferRemoval - */ - scheduleBackBufferRemoval: function() { - if(this.backBufferTimerId !== null) { - window.clearTimeout(this.backBufferTimerId); - } - this.backBufferTimerId = window.setTimeout( - OpenLayers.Function.bind(this.removeBackBuffer, this), 2500); - }, - /** * Method: moveByPx * Move the layer based on pixel vector. @@ -955,7 +951,10 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { if(this.backBuffer) { // the removal of the back buffer is delayed to prevent flash // effects due to the animation of tile displaying - this.scheduleBackBufferRemoval(); + this.backBufferTimerId = window.setTimeout( + OpenLayers.Function.bind(this.removeBackBuffer, this), + 2500 + ); } } };