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({
|
||||
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
|
||||
|
||||
@@ -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"
|
||||
});
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user