diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index 17d9696753..880f070acd 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -107,21 +107,33 @@ OpenLayers.Layer.Grid.prototype = || !this.getGridBounds().containsBounds(bounds, true)) { this._initTiles(); } else { + var buffer = (this.buffer) ? this.buffer*1.5 : 1; while (true) { var tlLayer = this.grid[0][0].position; var tlViewPort = this.map.getViewPortPxFromLayerPx(tlLayer); - if (tlViewPort.x > -this.tileSize.w * (this.buffer - 1)) { + if (tlViewPort.x > -this.tileSize.w * (buffer - 1)) { this.shiftColumn(true); - } else if (tlViewPort.x < -this.tileSize.w * this.buffer) { + } else if (tlViewPort.x < -this.tileSize.w * buffer) { this.shiftColumn(false); - } else if (tlViewPort.y > -this.tileSize.h * (this.buffer - 1)) { + } else if (tlViewPort.y > -this.tileSize.h * (buffer - 1)) { this.shiftRow(true); - } else if (tlViewPort.y < -this.tileSize.h * this.buffer) { + } else if (tlViewPort.y < -this.tileSize.h * buffer) { this.shiftRow(false); } else { break; } + }; + if (this.buffer == 0) { + for (var r=0, rl=this.grid.length; r= bounds.bottom - tilelat * this.buffer) - + } while((tileoffsetlat >= bounds.bottom - tilelat * this.buffer) + || rowidx < minRows) + + // remove extra rows + while (this.grid.length > rowidx) { + var row = this.grid.pop(); + for (var i=0, l=row.length; i colidx) { + for (var i=0, l=this.grid.length; i