added getScaleFromResolution() function to util, also added tests for both directions of the scale<->resolution tranformation functions, as well as the normalizeScale() function
git-svn-id: http://svn.openlayers.org/trunk/openlayers@1534 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -518,6 +518,26 @@ OpenLayers.Util.getResolutionFromScale = function (scale, units) {
|
|||||||
return resolution;
|
return resolution;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {float} resolution
|
||||||
|
* @param {String} units Index into OpenLayers.INCHES_PER_UNIT hashtable.
|
||||||
|
* Default is degrees
|
||||||
|
*
|
||||||
|
* @returns The corresponding scale given passed-in resolution and unit
|
||||||
|
* parameters.
|
||||||
|
* @type float
|
||||||
|
*/
|
||||||
|
OpenLayers.Util.getScaleFromResolution = function (resolution, units) {
|
||||||
|
|
||||||
|
if (units == null) {
|
||||||
|
units = "degrees";
|
||||||
|
}
|
||||||
|
|
||||||
|
var scale = 1 / (resolution * OpenLayers.INCHES_PER_UNIT[units]
|
||||||
|
* OpenLayers.DOTS_PER_INCH);
|
||||||
|
return scale;
|
||||||
|
};
|
||||||
|
|
||||||
/** Safely stop the propagation of an event *without* preventing
|
/** Safely stop the propagation of an event *without* preventing
|
||||||
* the default browser action from occurring.
|
* the default browser action from occurring.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -418,6 +418,40 @@
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_13_Util_normalizeScale(t) {
|
||||||
|
t.plan(2);
|
||||||
|
|
||||||
|
//normal scale
|
||||||
|
var scale = 1/5;
|
||||||
|
t.eq( OpenLayers.Util.normalizeScale(scale), scale, "normalizing a normal scale does nothing");
|
||||||
|
|
||||||
|
//funky scale
|
||||||
|
var scale = 5;
|
||||||
|
t.eq( OpenLayers.Util.normalizeScale(scale), 1/5, "normalizing a wrong scale works!");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_13_Util_getScaleResolutionTranslation(t) {
|
||||||
|
t.plan(4);
|
||||||
|
|
||||||
|
var scale = 1/150000000;
|
||||||
|
var resolution = OpenLayers.Util.getResolutionFromScale(scale);
|
||||||
|
t.eq(resolution.toFixed(6), "0.476217", "Calculated correct resolution for " + scale);
|
||||||
|
|
||||||
|
var scale = 1/150000000;
|
||||||
|
var resolution = OpenLayers.Util.getResolutionFromScale(scale, 'm');
|
||||||
|
t.eq(resolution.toFixed(6), "52916.638092", "Calculated correct resolution for " + scale);
|
||||||
|
|
||||||
|
scale = 150000000;
|
||||||
|
resolution = OpenLayers.Util.getResolutionFromScale(scale);
|
||||||
|
t.eq(resolution.toFixed(6), "0.476217", "Calculated correct resolution for " + scale);
|
||||||
|
|
||||||
|
scale = 1/150000000;
|
||||||
|
resolution = OpenLayers.Util.getResolutionFromScale(scale);
|
||||||
|
t.eq(OpenLayers.Util.getScaleFromResolution(resolution), scale, "scale->resolution->scale works");
|
||||||
|
}
|
||||||
|
|
||||||
// -->
|
// -->
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user