Adding some serious enhancements to the WMC format. With this, OL map and layer objects can be created from WMC context objects and vice versa. Thanks for the great patch bbinet. r=me (closes #2251)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@9733 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2009-10-08 17:24:54 +00:00
parent 039618366f
commit 6dabe0646e
6 changed files with 444 additions and 280 deletions
+18 -20
View File
@@ -53,11 +53,11 @@ OpenLayers.Format.WMC.v1_1_0 = OpenLayers.Class(
* Read a sld:MinScaleDenominator node.
*
* Parameters:
* layerInfo - {Object} An object representing a layer.
* layerContext - {Object} An object representing a layer.
* node - {Element} An element node.
*/
read_sld_MinScaleDenominator: function(layerInfo, node) {
layerInfo.options.maxScale = this.getChildValue(node);
read_sld_MinScaleDenominator: function(layerContext, node) {
layerContext.maxScale = this.getChildValue(node);
},
/**
@@ -65,56 +65,54 @@ OpenLayers.Format.WMC.v1_1_0 = OpenLayers.Class(
* Read a sld:MaxScaleDenominator node.
*
* Parameters:
* layerInfo - {Object} An object representing a layer.
* layerContext - {Object} An object representing a layer.
* node - {Element} An element node.
*/
read_sld_MaxScaleDenominator: function(layerInfo, node) {
layerInfo.options.minScale = this.getChildValue(node);
read_sld_MaxScaleDenominator: function(layerContext, node) {
layerContext.minScale = this.getChildValue(node);
},
/**
* Method: write_wmc_Layer
* Create a Layer node given a layer object. This method adds elements
* specific to version 1.1.0.
* Create a Layer node given a layer context object. This method adds
* elements specific to version 1.1.0.
*
* Parameters:
* layer - {<OpenLayers.Layer.WMS>} Layer object.
* context - {Object} A layer context object.}
*
* Returns:
* {Element} A WMC Layer element node.
*/
write_wmc_Layer: function(layer) {
write_wmc_Layer: function(context) {
var node = OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(
this, [layer]
this, [context]
);
// min/max scale denominator elements go before the 4th element in v1
if(layer.options.resolutions || layer.options.scales ||
layer.options.minResolution || layer.options.maxScale) {
if(context.maxScale) {
var minSD = this.createElementNS(
this.namespaces.sld, "sld:MinScaleDenominator"
);
minSD.appendChild(this.createTextNode(layer.maxScale.toPrecision(16)));
minSD.appendChild(this.createTextNode(context.maxScale.toPrecision(16)));
node.appendChild(minSD);
}
if(layer.options.resolutions || layer.options.scales ||
layer.options.maxResolution || layer.options.minScale) {
if(context.minScale) {
var maxSD = this.createElementNS(
this.namespaces.sld, "sld:MaxScaleDenominator"
);
maxSD.appendChild(this.createTextNode(layer.minScale.toPrecision(16)));
maxSD.appendChild(this.createTextNode(context.minScale.toPrecision(16)));
node.appendChild(maxSD);
}
// optional FormatList element
node.appendChild(this.write_wmc_FormatList(layer));
node.appendChild(this.write_wmc_FormatList(context));
// optional StyleList element
node.appendChild(this.write_wmc_StyleList(layer));
node.appendChild(this.write_wmc_StyleList(context));
// OpenLayers specific properties go in an Extension element
node.appendChild(this.write_wmc_LayerExtension(layer));
node.appendChild(this.write_wmc_LayerExtension(context));
return node;