TextSymbolizer->Fill->CssParameter['fill'] should map to fontColor instead

This commit is contained in:
Bart van den Eijnden
2012-02-22 11:03:48 +01:00
parent 050f72b443
commit b2f95bd537
2 changed files with 15 additions and 6 deletions

View File

@@ -338,6 +338,10 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
"CssParameter": function(node, symbolizer) {
var cssProperty = node.getAttribute("name");
var symProperty = this.cssMap[cssProperty];
// for labels, fill should map to the fontColor
if (symbolizer.label && cssProperty === 'fill') {
symProperty = "fontColor";
}
if(symProperty) {
// Limited support for parsing of OGC expressions
var value = this.readers.ogc._expression.call(this, node);
@@ -862,10 +866,15 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
return node;
},
"CssParameter": function(obj) {
var name = this.getCssProperty(obj.key);
var value = obj.symbolizer[obj.key];
if (obj.symbolizer.label && name === 'fill') {
value = obj.symbolizer.fontColor;
}
// not handling ogc:expressions for now
return this.createElementNSPlus("sld:CssParameter", {
attributes: {name: this.getCssProperty(obj.key)},
value: obj.symbolizer[obj.key]
attributes: {name: name},
value: value
});
},
"TextSymbolizer": function(symbolizer) {
@@ -888,7 +897,7 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
this.writeNode("Halo", symbolizer, node);
}
// add in optional Fill
if(symbolizer.fillColor != null ||
if(symbolizer.fontColor != null ||
symbolizer.fillOpacity != null) {
this.writeNode("Fill", symbolizer, node);
}
@@ -1004,7 +1013,7 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
// GraphicFill here
// add in CssParameters
if(symbolizer.fillColor) {
if(symbolizer.fillColor || (symbolizer.label && symbolizer.fontColor)) {
this.writeNode(
"CssParameter",
{symbolizer: symbolizer, key: "fillColor"},