diff --git a/lib/OpenLayers/Format/WMSCapabilities/v1_1.js b/lib/OpenLayers/Format/WMSCapabilities/v1_1.js index 8607c612cf..3b4e4883b7 100644 --- a/lib/OpenLayers/Format/WMSCapabilities/v1_1.js +++ b/lib/OpenLayers/Format/WMSCapabilities/v1_1.js @@ -78,14 +78,18 @@ OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class( var max = node.getAttribute("max"); var rad2 = Math.pow(2, 0.5); var ipm = OpenLayers.INCHES_PER_UNIT["m"]; - obj.maxScale = parseFloat( - ((min / rad2) * ipm * - OpenLayers.DOTS_PER_INCH).toPrecision(13) - ); - obj.minScale = parseFloat( - ((max / rad2) * ipm * - OpenLayers.DOTS_PER_INCH).toPrecision(13) - ); + if (min != 0) { + obj.maxScale = parseFloat( + ((min / rad2) * ipm * + OpenLayers.DOTS_PER_INCH).toPrecision(13) + ); + } + if (max != Number.POSITIVE_INFINITY) { + obj.minScale = parseFloat( + ((max / rad2) * ipm * + OpenLayers.DOTS_PER_INCH).toPrecision(13) + ); + } }, "Dimension": function(node, obj) { var name = node.getAttribute("name").toLowerCase(); diff --git a/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js b/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js index 30eee652f5..286ac8f8ad 100644 --- a/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js +++ b/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js @@ -10,6 +10,13 @@ /** * Class: OpenLayers.Format.WMSCapabilities/v1_1_1 * Read WMS Capabilities version 1.1.1. + * + * Note on parsing: If the 'min' attribute is set to "0", no + * maxScale will be set on the layer object. If the 'max' attribute is set to + * "Infinity", no minScale will be set. This makes it easy to create proper + * {} configurations directly from the layer object + * literals returned by this format, because no minScale/maxScale modifications + * need to be made. * * Inherits from: * - diff --git a/tests/Format/WMSCapabilities/v1_1_1.html b/tests/Format/WMSCapabilities/v1_1_1.html index 8309bd75ad..0d044e480c 100644 --- a/tests/Format/WMSCapabilities/v1_1_1.html +++ b/tests/Format/WMSCapabilities/v1_1_1.html @@ -332,7 +332,7 @@ } function test_ogc(t) { - t.plan(14) + t.plan(16) /* * Set up @@ -386,6 +386,8 @@ t.eq(capability.layers[0].minScale, 250000, "layer.minScale is correct"); t.eq(capability.layers[0].maxScale, 1000, "layer.maxScale is correct"); + t.eq(capability.layers[1].minScale, undefined, "layer.minScale for max='Infinity' is correct"); + t.eq(capability.layers[1].maxScale, undefined, "layer.maxScale for min='0' is correct"); /* * Tear down */ @@ -590,8 +592,6 @@ Changes: - - ROADS_1M @@ -641,6 +641,7 @@ Changes: canal waterway +