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:
@@ -35,6 +35,9 @@ function init() {
|
|||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
var osm = new OpenLayers.Layer.OSM();
|
||||||
|
osm.wrapDateLine = false;
|
||||||
|
|
||||||
map = new OpenLayers.Map({
|
map = new OpenLayers.Map({
|
||||||
div: 'map',
|
div: 'map',
|
||||||
projection: 'EPSG:900913',
|
projection: 'EPSG:900913',
|
||||||
@@ -53,7 +56,7 @@ function init() {
|
|||||||
new OpenLayers.Control.ZoomPanel(),
|
new OpenLayers.Control.ZoomPanel(),
|
||||||
toolbar
|
toolbar
|
||||||
],
|
],
|
||||||
layers: [new OpenLayers.Layer.OSM(), vector],
|
layers: [osm, vector],
|
||||||
center: new OpenLayers.LonLat(0, 0),
|
center: new OpenLayers.LonLat(0, 0),
|
||||||
zoom: 1,
|
zoom: 1,
|
||||||
theme: null
|
theme: null
|
||||||
|
|||||||
@@ -148,6 +148,12 @@ OpenLayers.Layer.XYZ = OpenLayers.Class(OpenLayers.Layer.Grid, {
|
|||||||
OpenLayers.Util.indexOf(this.serverResolutions, res) :
|
OpenLayers.Util.indexOf(this.serverResolutions, res) :
|
||||||
this.map.getZoom() + this.zoomOffset;
|
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};
|
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]);
|
obj = OpenLayers.Layer.XYZ.prototype.clone.apply(this, [obj]);
|
||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
|
wrapDateLine: true,
|
||||||
CLASS_NAME: "OpenLayers.Layer.OSM"
|
CLASS_NAME: "OpenLayers.Layer.OSM"
|
||||||
});
|
});
|
||||||
|
|||||||
+12
-1
@@ -108,7 +108,7 @@
|
|||||||
*/
|
*/
|
||||||
function test_Layer_XYZ_getURL(t) {
|
function test_Layer_XYZ_getURL(t) {
|
||||||
|
|
||||||
t.plan(2);
|
t.plan(6);
|
||||||
|
|
||||||
var map = new OpenLayers.Map('map');
|
var map = new OpenLayers.Map('map');
|
||||||
layer = new OpenLayers.Layer.XYZ(name, url);
|
layer = new OpenLayers.Layer.XYZ(name, url);
|
||||||
@@ -120,6 +120,17 @@
|
|||||||
layer.url = ["http://tilecache1/", "http://tilecache2/", "http://tilecache3/"];
|
layer.url = ["http://tilecache1/", "http://tilecache2/", "http://tilecache3/"];
|
||||||
tileurl = layer.getURL(new OpenLayers.Bounds(3.515625,45,4.21875,45.703125));
|
tileurl = layer.getURL(new OpenLayers.Bounds(3.515625,45,4.21875,45.703125));
|
||||||
t.eq(tileurl, "http://tilecache1/", "Tile URL is deterministic");
|
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();
|
map.destroy();
|
||||||
}
|
}
|
||||||
function test_Layer_XYZ_Rounding(t) {
|
function test_Layer_XYZ_Rounding(t) {
|
||||||
|
|||||||
Reference in New Issue
Block a user