a bit of restructuring, also making sure that a Graphic in a TextSymbolizer can be read and written (this is a GeoServer extension to produce e.g. highway shields)

This commit is contained in:
Bart van den Eijnden
2012-02-22 11:57:42 +01:00
parent 82a8602b45
commit f0cb98a9bf
2 changed files with 45 additions and 32 deletions

View File

@@ -88,55 +88,56 @@ OpenLayers.Format.SLD.v1_0_0_GeoServer = OpenLayers.Class(
});
},
"TextSymbolizer": function(symbolizer) {
var node = OpenLayers.Format.SLD.v1_0_0.prototype.writers["sld"]["TextSymbolizer"].apply(this, arguments);
var writers = OpenLayers.Format.SLD.v1_0_0.prototype.writers;
var node = writers["sld"]["TextSymbolizer"].apply(this, arguments);
if (symbolizer.externalGraphic || symbolizer.graphicName) {
this.writeNode("Graphic", symbolizer, node);
}
if ("priority" in symbolizer) {
this.writeNode("Priority", symbolizer.priority, node);
}
var options = symbolizer.vendorOptions;
if (options) {
for (var i=0, ii=options.length; i<ii; ++i) {
this.writeNode("VendorOption", options[i], node);
}
}
return node;
return this.addVendorOptions(node, symbolizer);
},
"PointSymbolizer": function(symbolizer) {
var node = OpenLayers.Format.SLD.v1_0_0.prototype.writers["sld"]["PointSymbolizer"].apply(this, arguments);
var options = symbolizer.vendorOptions;
if (options) {
for (var i=0, ii=options.length; i<ii; ++i) {
this.writeNode("VendorOption", options[i], node);
}
}
return node;
var writers = OpenLayers.Format.SLD.v1_0_0.prototype.writers;
var node = writers["sld"]["PointSymbolizer"].apply(this, arguments);
return this.addVendorOptions(node, symbolizer);
},
"LineSymbolizer": function(symbolizer) {
var node = OpenLayers.Format.SLD.v1_0_0.prototype.writers["sld"]["LineSymbolizer"].apply(this, arguments);
var options = symbolizer.vendorOptions;
if (options) {
for (var i=0, ii=options.length; i<ii; ++i) {
this.writeNode("VendorOption", options[i], node);
}
}
return node;
var writers = OpenLayers.Format.SLD.v1_0_0.prototype.writers;
var node = writers["sld"]["LineSymbolizer"].apply(this, arguments);
return this.addVendorOptions(node, symbolizer);
},
"PolygonSymbolizer": function(symbolizer) {
var node = OpenLayers.Format.SLD.v1_0_0.prototype.writers["sld"]["PolygonSymbolizer"].apply(this, arguments);
var options = symbolizer.vendorOptions;
if (options) {
for (var i=0, ii=options.length; i<ii; ++i) {
this.writeNode("VendorOption", options[i], node);
}
}
return node;
var writers = OpenLayers.Format.SLD.v1_0_0.prototype.writers;
var node = writers["sld"]["PolygonSymbolizer"].apply(this, arguments);
return this.addVendorOptions(node, symbolizer);
}
}, OpenLayers.Format.SLD.v1_0_0.prototype.writers["sld"]),
"ogc": OpenLayers.Format.SLD.v1_0_0.prototype.writers["ogc"]
},
/**
* Method: addVendorOptions
* Add in the VendorOption tags and return the node again.
*
* Parameters:
* node - {DOMElement} A DOM node.
* symbolizer - {Object}
*
* Returns:
* {DOMElement} A DOM node.
*/
addVendorOptions: function(node, symbolizer) {
var options = symbolizer.vendorOptions;
if (options) {
for (var i=0, ii=options.length; i<ii; ++i) {
this.writeNode("VendorOption", options[i], node);
}
}
return node;
},
CLASS_NAME: "OpenLayers.Format.SLD.v1_0_0_GeoServer"
});