Correct handling of 0 and Infinity ScaleHint
minScale and maxScale values of 0 and Infinity do not make sense in OpenLayers, but they are used in WMS GetCapabilities 1.1.1 to indicate that there is no minScale or maxScale restriction. Assuming that the capability values for minScale and maxScale are passed as config options to a WMS layer, it is better to not set minScale and maxScale when 0 or Infinity are found in the ScaleHint.
This commit is contained in:
@@ -78,14 +78,18 @@ OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(
|
|||||||
var max = node.getAttribute("max");
|
var max = node.getAttribute("max");
|
||||||
var rad2 = Math.pow(2, 0.5);
|
var rad2 = Math.pow(2, 0.5);
|
||||||
var ipm = OpenLayers.INCHES_PER_UNIT["m"];
|
var ipm = OpenLayers.INCHES_PER_UNIT["m"];
|
||||||
obj.maxScale = parseFloat(
|
if (min != 0) {
|
||||||
((min / rad2) * ipm *
|
obj.maxScale = parseFloat(
|
||||||
OpenLayers.DOTS_PER_INCH).toPrecision(13)
|
((min / rad2) * ipm *
|
||||||
);
|
OpenLayers.DOTS_PER_INCH).toPrecision(13)
|
||||||
obj.minScale = parseFloat(
|
);
|
||||||
((max / 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) {
|
"Dimension": function(node, obj) {
|
||||||
var name = node.getAttribute("name").toLowerCase();
|
var name = node.getAttribute("name").toLowerCase();
|
||||||
|
|||||||
@@ -332,7 +332,7 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
function test_ogc(t) {
|
function test_ogc(t) {
|
||||||
t.plan(14)
|
t.plan(16)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set up
|
* Set up
|
||||||
@@ -386,6 +386,8 @@
|
|||||||
t.eq(capability.layers[0].minScale, 250000, "layer.minScale is correct");
|
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[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
|
* Tear down
|
||||||
*/
|
*/
|
||||||
@@ -590,8 +592,6 @@ Changes:
|
|||||||
</StyleSheetURL>
|
</StyleSheetURL>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<ScaleHint min="4000" max="35000"></ScaleHint>
|
|
||||||
|
|
||||||
|
|
||||||
<Layer queryable="1">
|
<Layer queryable="1">
|
||||||
<Name>ROADS_1M</Name>
|
<Name>ROADS_1M</Name>
|
||||||
@@ -641,6 +641,7 @@ Changes:
|
|||||||
<Keyword>canal</Keyword>
|
<Keyword>canal</Keyword>
|
||||||
<Keyword>waterway</Keyword>
|
<Keyword>waterway</Keyword>
|
||||||
</KeywordList>
|
</KeywordList>
|
||||||
|
<ScaleHint min="0" max="Infinity" />
|
||||||
</Layer>
|
</Layer>
|
||||||
</Layer>
|
</Layer>
|
||||||
<Layer queryable="1">
|
<Layer queryable="1">
|
||||||
|
|||||||
Reference in New Issue
Block a user