Adding wrapDateLine support for XYZ layers. The OSM layer now wraps the date line by default. p=tomh, r=me (Closes #2246)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11864 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
pgiraud
2011-04-04 07:20:48 +00:00
parent 035a30021d
commit e140a5d843
3 changed files with 23 additions and 2 deletions

View File

@@ -35,6 +35,9 @@ function init() {
})
]);
var osm = new OpenLayers.Layer.OSM();
osm.wrapDateLine = false;
map = new OpenLayers.Map({
div: 'map',
projection: 'EPSG:900913',
@@ -53,7 +56,7 @@ function init() {
new OpenLayers.Control.ZoomPanel(),
toolbar
],
layers: [new OpenLayers.Layer.OSM(), vector],
layers: [osm, vector],
center: new OpenLayers.LonLat(0, 0),
zoom: 1,
theme: null

View File

@@ -148,6 +148,12 @@ OpenLayers.Layer.XYZ = OpenLayers.Class(OpenLayers.Layer.Grid, {
OpenLayers.Util.indexOf(this.serverResolutions, res) :
this.map.getZoom() + this.zoomOffset;
var limit = Math.pow(2, z);
if (this.wrapDateLine)
{
x = ((x % limit) + limit) % limit;
}
return {'x': x, 'y': y, 'z': z};
},
@@ -199,5 +205,6 @@ OpenLayers.Layer.OSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {
obj = OpenLayers.Layer.XYZ.prototype.clone.apply(this, [obj]);
return obj;
},
wrapDateLine: true,
CLASS_NAME: "OpenLayers.Layer.OSM"
});

View File

@@ -108,7 +108,7 @@
*/
function test_Layer_XYZ_getURL(t) {
t.plan(2);
t.plan(6);
var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.XYZ(name, url);
@@ -120,6 +120,17 @@
layer.url = ["http://tilecache1/", "http://tilecache2/", "http://tilecache3/"];
tileurl = layer.getURL(new OpenLayers.Bounds(3.515625,45,4.21875,45.703125));
t.eq(tileurl, "http://tilecache1/", "Tile URL is deterministic");
layer.url = url;
tileurl = layer.getURL(new OpenLayers.Bounds(180.515625,45,181.21875,45.703125));
t.eq(tileurl, "http://labs.metacarta.com/wms-c/Basic.py/1.0.0/basic/9/513/63.png", "Tile URL is correct");
tileurl = layer.getURL(new OpenLayers.Bounds(-181.515625,45,-180.21875,45.703125));
t.eq(tileurl, "http://labs.metacarta.com/wms-c/Basic.py/1.0.0/basic/9/-2/63.png", "Tile URL is correct");
layer.wrapDateLine = true;
tileurl = layer.getURL(new OpenLayers.Bounds(180.515625,45,181.21875,45.703125));
t.eq(tileurl, "http://labs.metacarta.com/wms-c/Basic.py/1.0.0/basic/9/1/63.png", "Tile URL is correct");
tileurl = layer.getURL(new OpenLayers.Bounds(-181.515625,45,-180.21875,45.703125));
t.eq(tileurl, "http://labs.metacarta.com/wms-c/Basic.py/1.0.0/basic/9/510/63.png", "Tile URL is correct");
map.destroy();
}
function test_Layer_XYZ_Rounding(t) {