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
+13 -4
View File
@@ -338,6 +338,10 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
"CssParameter": function(node, symbolizer) { "CssParameter": function(node, symbolizer) {
var cssProperty = node.getAttribute("name"); var cssProperty = node.getAttribute("name");
var symProperty = this.cssMap[cssProperty]; var symProperty = this.cssMap[cssProperty];
// for labels, fill should map to the fontColor
if (symbolizer.label && cssProperty === 'fill') {
symProperty = "fontColor";
}
if(symProperty) { if(symProperty) {
// Limited support for parsing of OGC expressions // Limited support for parsing of OGC expressions
var value = this.readers.ogc._expression.call(this, node); 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; return node;
}, },
"CssParameter": function(obj) { "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 // not handling ogc:expressions for now
return this.createElementNSPlus("sld:CssParameter", { return this.createElementNSPlus("sld:CssParameter", {
attributes: {name: this.getCssProperty(obj.key)}, attributes: {name: name},
value: obj.symbolizer[obj.key] value: value
}); });
}, },
"TextSymbolizer": function(symbolizer) { "TextSymbolizer": function(symbolizer) {
@@ -888,7 +897,7 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
this.writeNode("Halo", symbolizer, node); this.writeNode("Halo", symbolizer, node);
} }
// add in optional Fill // add in optional Fill
if(symbolizer.fillColor != null || if(symbolizer.fontColor != null ||
symbolizer.fillOpacity != null) { symbolizer.fillOpacity != null) {
this.writeNode("Fill", symbolizer, node); this.writeNode("Fill", symbolizer, node);
} }
@@ -1004,7 +1013,7 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
// GraphicFill here // GraphicFill here
// add in CssParameters // add in CssParameters
if(symbolizer.fillColor) { if(symbolizer.fillColor || (symbolizer.label && symbolizer.fontColor)) {
this.writeNode( this.writeNode(
"CssParameter", "CssParameter",
{symbolizer: symbolizer, key: "fillColor"}, {symbolizer: symbolizer, key: "fillColor"},
+2 -2
View File
@@ -177,7 +177,7 @@
t.eq(text.label, "A ${FOO} label", "(AAA161) first rule has proper text label"); t.eq(text.label, "A ${FOO} label", "(AAA161) first rule has proper text label");
t.eq(layer.userStyles[0].propertyStyles["label"], true, "label added to propertyStyles"); t.eq(layer.userStyles[0].propertyStyles["label"], true, "label added to propertyStyles");
t.eq(text.fontFamily, "Arial", "(AAA161) first rule has proper font family"); t.eq(text.fontFamily, "Arial", "(AAA161) first rule has proper font family");
t.eq(text.fillColor, "#000000", "(AAA161) first rule has proper text fill"); t.eq(text.fontColor, "#000000", "(AAA161) first rule has proper text fill");
t.eq(text.haloRadius, "3", "(AAA161) first rule has proper halo radius"); t.eq(text.haloRadius, "3", "(AAA161) first rule has proper halo radius");
t.eq(text.haloColor, "#ffffff", "(AAA161) first rule has proper halo color"); t.eq(text.haloColor, "#ffffff", "(AAA161) first rule has proper halo color");
@@ -347,7 +347,7 @@
"label": "This is the ${city} in ${state}.", "label": "This is the ${city} in ${state}.",
"fontFamily": "Arial", "fontFamily": "Arial",
"fontSize": 10, "fontSize": 10,
"fillColor": "blue", "fontColor": "blue",
"fontWeight": "bold", "fontWeight": "bold",
"fontStyle": "normal", "fontStyle": "normal",
"haloRadius": 2, "haloRadius": 2,