diff --git a/lib/OpenLayers/Util.js b/lib/OpenLayers/Util.js index 40cc3d84ad..6fb345ba4f 100644 --- a/lib/OpenLayers/Util.js +++ b/lib/OpenLayers/Util.js @@ -1182,18 +1182,19 @@ OpenLayers.Util.normalizeScale = function (scale) { * * Returns: * {Float} The corresponding resolution given passed-in scale and unit - * parameters. + * parameters. If the given scale is falsey, the returned resolution will + * be undefined. */ OpenLayers.Util.getResolutionFromScale = function (scale, units) { - - if (units == null) { - units = "degrees"; + var resolution; + if (scale) { + if (units == null) { + units = "degrees"; + } + var normScale = OpenLayers.Util.normalizeScale(scale); + resolution = 1 / (normScale * OpenLayers.INCHES_PER_UNIT[units] + * OpenLayers.DOTS_PER_INCH); } - - var normScale = OpenLayers.Util.normalizeScale(scale); - - var resolution = 1 / (normScale * OpenLayers.INCHES_PER_UNIT[units] - * OpenLayers.DOTS_PER_INCH); return resolution; }; diff --git a/tests/Util.html b/tests/Util.html index f1352b2fe7..9f3a20a58f 100644 --- a/tests/Util.html +++ b/tests/Util.html @@ -670,7 +670,7 @@ } function test_Util_getScaleResolutionTranslation(t) { - t.plan(4); + t.plan(5); var scale = 1/150000000; var resolution = OpenLayers.Util.getResolutionFromScale(scale); @@ -687,6 +687,11 @@ scale = 150000000; resolution = OpenLayers.Util.getResolutionFromScale(scale); t.eq(OpenLayers.Util.getScaleFromResolution(resolution), scale, "scale->resolution->scale works"); + + scale = null; + resolution = OpenLayers.Util.getResolutionFromScale(scale); + t.eq(resolution, undefined, "falsey scale results in undefined resolution"); + } function test_Util_getImgLocation(t) {