diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index be35eb26fe..3379813d9a 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -319,14 +319,6 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { } } else { - // if the bounds have changed such that they are not even - // *partially* contained by our tiles (IE user has - // programmatically panned to the other side of the earth) - // then we want to reTile (thus, partial true). - - forceReTile = forceReTile || - !tilesBounds.containsBounds(bounds, true); - if(resolution !== serverResolution) { bounds = this.map.calculateBounds(null, serverResolution); if(forceReTile) { @@ -583,18 +575,16 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { getTilesBounds: function() { var bounds = null; - if (this.grid.length) { - var bottom = this.grid.length - 1; - var bottomLeftTile = this.grid[bottom][0]; - - var right = this.grid[0].length - 1; - var topRightTile = this.grid[0][right]; - - bounds = new OpenLayers.Bounds(bottomLeftTile.bounds.left, - bottomLeftTile.bounds.bottom, - topRightTile.bounds.right, - topRightTile.bounds.top); + var length = this.grid.length; + if (length) { + var bottomLeftTileBounds = this.grid[length - 1][0].bounds, + width = this.grid[0].length * bottomLeftTileBounds.getWidth(), + height = this.grid.length * bottomLeftTileBounds.getHeight(); + bounds = new OpenLayers.Bounds(bottomLeftTileBounds.left, + bottomLeftTileBounds.bottom, + bottomLeftTileBounds.left + width, + bottomLeftTileBounds.bottom + height); } return bounds; }, @@ -658,10 +648,6 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { */ calculateGridLayout: function(bounds, origin, resolution) { bounds = bounds.clone(); - var map = this.map; - if (map.wrapDateLine) { - bounds = bounds.wrapDateLine(map.getMaxExtent()); - } var tilelon = resolution * this.tileSize.w; var tilelat = resolution * this.tileSize.h; diff --git a/tests/Layer/Grid.html b/tests/Layer/Grid.html index cd773bb268..462a04560f 100644 --- a/tests/Layer/Grid.html +++ b/tests/Layer/Grid.html @@ -94,14 +94,14 @@ function test_Layer_Grid_getTilesBounds(t) { - t.plan(3); + t.plan(4); layer = new OpenLayers.Layer.WMS(name, url, params); //normal grid - var bl = { bounds: new OpenLayers.Bounds(1,2,0,0)}; - var tr = { bounds: new OpenLayers.Bounds(0,0,3,4)}; + var bl = { bounds: new OpenLayers.Bounds(1,2,2,3)}; + var tr = { bounds: new OpenLayers.Bounds(2,3,3,4)}; layer.grid = [ [6, tr], [bl, 7]]; @@ -123,6 +123,16 @@ bounds = layer.getTilesBounds(); t.ok( bounds.equals(testBounds), "getTilesBounds() returns correct bounds"); + + //world wrapped around the dateline + var bl = { bounds: new OpenLayers.Bounds(0,-90,180,90)}; + var tr = { bounds: new OpenLayers.Bounds(-180,-90,0,90)}; + layer.grid = [[bl, tr]]; + + var bounds = layer.getTilesBounds(); + var testBounds = new OpenLayers.Bounds(0,-90,360,90); + + t.ok( bounds.equals(testBounds), "getTilesBounds() returns correct bounds"); } @@ -159,7 +169,7 @@ function test_Layer_Grid_moveTo(t) { - t.plan(14); + t.plan(12); var map = new OpenLayers.Map('map'); layer = new OpenLayers.Layer.WMS(name, url, params); @@ -280,13 +290,6 @@ layer.grid = [ [ {} ] ]; layer.singleTile = false; - // drastic pan - clearTestBounds(); - tilesBounds = new OpenLayers.Bounds(-150,-150,-120,-120); - layer.moveTo(null, zoomChanged); - t.ok(g_WhichFunc == "InitGridded", "if tiles drastically out of bounds, we call initGriddedTile()"); - t.ok(g_Bounds.equals(b), "if tiles drastically out of bounds, we call initGriddedTile() with correct bounds"); - //regular move clearTestBounds(); tilesBounds = new OpenLayers.Bounds(10,10,120,120); diff --git a/tests/Layer/KaMap.html b/tests/Layer/KaMap.html index af2003a1d2..b22917fda0 100644 --- a/tests/Layer/KaMap.html +++ b/tests/Layer/KaMap.html @@ -94,8 +94,8 @@ layer = new OpenLayers.Layer.KaMap(name, url, params, units); - var bl = { bounds: new OpenLayers.Bounds(1,2,0,0)}; - var tr = { bounds: new OpenLayers.Bounds(0,0,3,4)}; + var bl = { bounds: new OpenLayers.Bounds(1,2,2,3)}; + var tr = { bounds: new OpenLayers.Bounds(2,3,3,4)}; layer.grid = [ [6, tr], [bl, 7]]; diff --git a/tests/Layer/TMS.html b/tests/Layer/TMS.html index c55d02bda7..74e75dac5b 100644 --- a/tests/Layer/TMS.html +++ b/tests/Layer/TMS.html @@ -42,8 +42,8 @@ layer = new OpenLayers.Layer.TMS(name, url, options); - var bl = { bounds: new OpenLayers.Bounds(1,2,0,0)}; - var tr = { bounds: new OpenLayers.Bounds(0,0,3,4)}; + var bl = { bounds: new OpenLayers.Bounds(1,2,2,3)}; + var tr = { bounds: new OpenLayers.Bounds(2,3,3,4)}; layer.grid = [ [6, tr], [bl, 7]]; diff --git a/tests/Layer/TileCache.html b/tests/Layer/TileCache.html index 1a70200901..2bb88f5b13 100644 --- a/tests/Layer/TileCache.html +++ b/tests/Layer/TileCache.html @@ -66,8 +66,8 @@ var options = {'type':'png'}; var layer = new OpenLayers.Layer.TileCache(name, url, layername, options); - var bl = { bounds: new OpenLayers.Bounds(1,2,0,0)}; - var tr = { bounds: new OpenLayers.Bounds(0,0,3,4)}; + var bl = { bounds: new OpenLayers.Bounds(1,2,2,3)}; + var tr = { bounds: new OpenLayers.Bounds(2,3,3,4)}; layer.grid = [ [6, tr], [bl, 7]]; diff --git a/tests/Layer/WMTS.html b/tests/Layer/WMTS.html index 079e87876d..e2b64f2604 100644 --- a/tests/Layer/WMTS.html +++ b/tests/Layer/WMTS.html @@ -119,8 +119,8 @@ tileSize: new OpenLayers.Size(512, 512), requestEncoding: "REST" }); - var bl = {bounds: new OpenLayers.Bounds(1,2,0,0)}; - var tr = {bounds: new OpenLayers.Bounds(0,0,3,4)}; + var bl = {bounds: new OpenLayers.Bounds(1,2,2,3)}; + var tr = {bounds: new OpenLayers.Bounds(2,3,3,4)}; layer1.grid = [[6, tr],[bl, 7]]; var bounds = layer1.getTilesBounds(); var testBounds = new OpenLayers.Bounds(1,2,3,4); diff --git a/tests/Layer/XYZ.html b/tests/Layer/XYZ.html index a13ee845c3..d6685c05b5 100644 --- a/tests/Layer/XYZ.html +++ b/tests/Layer/XYZ.html @@ -41,8 +41,8 @@ layer = new OpenLayers.Layer.XYZ(name, url, options); - var bl = { bounds: new OpenLayers.Bounds(1,2,0,0)}; - var tr = { bounds: new OpenLayers.Bounds(0,0,3,4)}; + var bl = { bounds: new OpenLayers.Bounds(1,2,2,3)}; + var tr = { bounds: new OpenLayers.Bounds(2,3,3,4)}; layer.grid = [ [6, tr], [bl, 7]];