Add ol.TileGrid.getZForResolution

This commit is contained in:
Tom Payne
2012-07-08 12:37:22 +02:00
committed by Tom Payne
parent 391b5906bc
commit 40acb70a3c
2 changed files with 59 additions and 0 deletions

View File

@@ -259,6 +259,30 @@ ol.TileGrid.prototype.getTileCoordResolution = function(tileCoord) {
};
/**
* @param {number} resolution Resolution.
* @return {number} Z.
*/
ol.TileGrid.prototype.getZForResolution = function(resolution) {
var z;
for (z = 0; z < this.numResolutions_; ++z) {
if (this.resolutions_[z] == resolution) {
return z;
} else if (this.resolutions_[z] < resolution) {
if (z === 0) {
return z;
} else if (resolution - this.resolutions_[z] <=
this.resolutions_[z - 1] - resolution) {
return z;
} else {
return z - 1;
}
}
}
return this.numResolutions_ - 1;
};
/**
* @param {ol.TileCoord} tileCoord Tile coordinate.
* @param {function(number, ol.TileBounds): boolean} callback Callback.

View File

@@ -264,3 +264,38 @@ function testForEachTileCoordParent() {
assertEquals(0, tileBoundss[2].left);
}
function testGetZForResolutionExact() {
var tileGrid =
new ol.TileGrid(resolutions, extent, origin, xEast, ySouth, tileSize);
assertEquals(0, tileGrid.getZForResolution(1000));
assertEquals(1, tileGrid.getZForResolution(500));
assertEquals(2, tileGrid.getZForResolution(250));
assertEquals(3, tileGrid.getZForResolution(100));
}
function testGetZForResolutionApproximate() {
var tileGrid =
new ol.TileGrid(resolutions, extent, origin, xEast, ySouth, tileSize);
assertEquals(0, tileGrid.getZForResolution(2000));
assertEquals(0, tileGrid.getZForResolution(1000));
assertEquals(0, tileGrid.getZForResolution(900));
assertEquals(1, tileGrid.getZForResolution(750));
assertEquals(1, tileGrid.getZForResolution(625));
assertEquals(1, tileGrid.getZForResolution(500));
assertEquals(1, tileGrid.getZForResolution(475));
assertEquals(2, tileGrid.getZForResolution(375));
assertEquals(2, tileGrid.getZForResolution(250));
assertEquals(2, tileGrid.getZForResolution(200));
assertEquals(3, tileGrid.getZForResolution(125));
assertEquals(3, tileGrid.getZForResolution(100));
assertEquals(3, tileGrid.getZForResolution(50));
}