Changing/fixing the meaning of getServerZoom.

If a layer is configured with serverResolutions, then getServerZoom should return the zoom level as index of the current resolution in the serverResolutions array.
This commit is contained in:
ahocevar
2012-04-26 10:55:03 -04:00
committed by Tim Schaub
parent a57c56ed96
commit 9585341d9c
5 changed files with 9 additions and 14 deletions
+4 -1
View File
@@ -658,7 +658,10 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
* {Number} The closest server supported zoom. * {Number} The closest server supported zoom.
*/ */
getServerZoom: function() { getServerZoom: function() {
return this.map.getZoomForResolution(this.getServerResolution()); var serverResolution = this.getServerResolution();
return this.serverResolutions ?
this.serverResolutions.indexOf(serverResolution) :
this.map.getZoomForResolution(serverResolution);
}, },
/** /**
+1 -3
View File
@@ -173,9 +173,7 @@ OpenLayers.Layer.TMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
var res = this.getServerResolution(); var res = this.getServerResolution();
var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w)); var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w));
var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h)); var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h));
var z = this.serverResolutions != null ? var z = this.getServerZoom() + (this.zoomOffset || 0);
OpenLayers.Util.indexOf(this.serverResolutions, res) :
this.getServerZoom() + this.zoomOffset;
var path = this.serviceVersion + "/" + this.layername + "/" + z + "/" + x + "/" + y + "." + this.type; var path = this.serviceVersion + "/" + this.layername + "/" + z + "/" + x + "/" + y + "." + this.type;
var url = this.url; var url = this.url;
if (OpenLayers.Util.isArray(url)) { if (OpenLayers.Util.isArray(url)) {
+1 -4
View File
@@ -332,10 +332,7 @@ OpenLayers.Layer.WMTS = OpenLayers.Class(OpenLayers.Layer.Grid, {
* Get the current index in the matrixIds array. * Get the current index in the matrixIds array.
*/ */
getIdentifier: function() { getIdentifier: function() {
return this.serverResolutions != null ? return this.getServerZoom() + (this.zoomOffset || 0);
OpenLayers.Util.indexOf(this.serverResolutions,
this.getServerResolution()) :
this.getServerZoom() + this.zoomOffset;
}, },
/** /**
+1 -4
View File
@@ -143,10 +143,7 @@ OpenLayers.Layer.XYZ = OpenLayers.Class(OpenLayers.Layer.Grid, {
(res * this.tileSize.w)); (res * this.tileSize.w));
var y = Math.round((this.maxExtent.top - bounds.top) / var y = Math.round((this.maxExtent.top - bounds.top) /
(res * this.tileSize.h)); (res * this.tileSize.h));
var resolutions = this.serverResolutions || this.resolutions; var z = this.getServerZoom() + (this.zoomOffset || 0);
var z = this.zoomOffset == 0 ?
OpenLayers.Util.indexOf(resolutions, res) :
this.getServerZoom() + this.zoomOffset;
if (this.wrapDateLine) { if (this.wrapDateLine) {
var limit = Math.pow(2, z); var limit = Math.pow(2, z);
+2 -2
View File
@@ -837,12 +837,12 @@
layer.serverResolutions = [2, 1]; layer.serverResolutions = [2, 1];
resolution = 1; resolution = 1;
zoom = layer.getServerZoom(); zoom = layer.getServerZoom();
t.eq(zoom, 3, '[3] getServerZoom return value is correct'); t.eq(zoom, 1, '[3] getServerZoom return value is correct');
layer.serverResolutions = [2]; layer.serverResolutions = [2];
resolution = 0.5; resolution = 0.5;
zoom = layer.getServerZoom(); zoom = layer.getServerZoom();
t.eq(zoom, 2, '[4] getServerZoom return value is correct'); t.eq(zoom, 0, '[4] getServerZoom return value is correct');
var exc; var exc;
layer.serverResolutions = [0.5]; layer.serverResolutions = [0.5];