diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index b1d45eebd8..38ee3cb77e 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -983,9 +983,9 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { var viewSize = this.map.getSize(); var minRows = Math.ceil(viewSize.h/this.tileSize.h) + - Math.max(1, 2 * this.buffer); + 2 * this.buffer + 1; var minCols = Math.ceil(viewSize.w/this.tileSize.w) + - Math.max(1, 2 * this.buffer); + 2 * this.buffer + 1; var origin = this.getTileOrigin(); var resolution = this.getServerResolution(); @@ -1193,7 +1193,7 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { ); return; } - var buffer = this.buffer || 1; + var buffer = this.buffer + 1; var scale = this.getResolutionScale(); while(true) { var tlViewPort = { diff --git a/tests/Layer/Grid.html b/tests/Layer/Grid.html index 50464f3cd8..18d616edce 100644 --- a/tests/Layer/Grid.html +++ b/tests/Layer/Grid.html @@ -76,8 +76,8 @@ layer = new OpenLayers.Layer.WMS(name, url, params, {buffer:2}); map.addLayer(layer); map.setCenter(new OpenLayers.LonLat(0,0),5); - t.eq( layer.grid.length, 7, "Grid rows is correct." ); - t.eq( layer.grid[0].length, 6, "Grid cols is correct." ); + t.eq( layer.grid.length, 8, "Grid rows is correct." ); + t.eq( layer.grid[0].length, 7, "Grid cols is correct." ); } @@ -239,6 +239,23 @@ t.eq( zoom, 2, "getZoomForExtent() returns correct value"); } + function test_moveGriddedTiles(t) { + t.plan(1); + var map = new OpenLayers.Map('map'); + layer = new OpenLayers.Layer.WMS(name, url, params, {buffer: 2}); + map.addLayer(layer); + map.setCenter([0, 0], 5); + var count = 0; + layer.shiftColumn = function(prepend) { + ++count; + OpenLayers.Layer.WMS.prototype.shiftColumn.apply(this, arguments); + } + map.moveTo([15, 0]); + t.delay_call(.5, function() { + t.eq(count, 1, "column shifted once"); + }); + } + function test_Layer_Grid_moveTo(t) { t.plan(17); @@ -695,17 +712,17 @@ map.setCenter(new OpenLayers.LonLat(0, 0), 4); t.eq( layer0.grid.length, 3, "Grid rows with buffer:0" ); map.setBaseLayer(layer1); - t.eq( layer1.grid.length, 4, "Grid rows with buffer:1" ); + t.eq( layer1.grid.length, 5, "Grid rows with buffer:1" ); map.setBaseLayer(layer2); - t.eq( layer2.grid.length, 6, "Grid rows with buffer:2" ); + t.eq( layer2.grid.length, 7, "Grid rows with buffer:2" ); // zooming in on Greenland exercises the bug from pre-r4313 map.setCenter(new OpenLayers.LonLat(0, 90), 4); t.eq( layer0.grid.length, 3, "Grid rows with buffer:0" ); map.setBaseLayer(layer1); - t.eq( layer1.grid.length, 4, "Grid rows with buffer:1" ); + t.eq( layer1.grid.length, 5, "Grid rows with buffer:1" ); map.setBaseLayer(layer2); - t.eq( layer2.grid.length, 6, "Grid rows with buffer:2" ); + t.eq( layer2.grid.length, 7, "Grid rows with buffer:2" ); } function test_Layer_Grid_destroy (t) {