Writing sld:Mark fill and stroke in cases where graphicName is not provided. r=ahocevar (closes #2008)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@9139 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2009-03-27 02:02:58 +00:00
parent 84fa9dd1ae
commit a9e087b5b9
2 changed files with 67 additions and 2 deletions

View File

@@ -786,7 +786,7 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
var node = this.createElementNSPlus("Graphic");
if(symbolizer.externalGraphic != undefined) {
this.writeNode("ExternalGraphic", symbolizer, node);
} else if(symbolizer.graphicName) {
} else {
this.writeNode("Mark", symbolizer, node);
}
@@ -813,7 +813,9 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, {
},
"Mark": function(symbolizer) {
var node = this.createElementNSPlus("Mark");
this.writeNode("WellKnownName", symbolizer.graphicName, node);
if(symbolizer.graphicName) {
this.writeNode("WellKnownName", symbolizer.graphicName, node);
}
this.writeNode("Fill", symbolizer, node);
this.writeNode("Stroke", symbolizer, node);
return node;

View File

@@ -214,6 +214,69 @@
t.xml_eq(got, expect, "zero fill opacity written");
}
function test_writePointSymbolizer(t) {
t.plan(3);
var parser = new OpenLayers.Format.SLD.v1_0_0();
var symbolizer, node, exp;
// test symbolizer with fill color only
symbolizer = {
"fillColor": "blue"
};
node = parser.writeNode("sld:PointSymbolizer", symbolizer);
exp =
'<PointSymbolizer xmlns="http://www.opengis.net/sld">' +
'<Graphic>' +
'<Mark>' +
'<Fill>' +
'<CssParameter name="fill">blue</CssParameter>' +
'</Fill>' +
'<Stroke/>' +
'</Mark>' +
'</Graphic>' +
'</PointSymbolizer>';
t.xml_eq(node, exp, "fillColor only written");
// test symbolizer with stroke color only
symbolizer = {
"strokeColor": "blue"
};
node = parser.writeNode("sld:PointSymbolizer", symbolizer);
exp =
'<PointSymbolizer xmlns="http://www.opengis.net/sld">' +
'<Graphic>' +
'<Mark>' +
'<Fill/>' +
'<Stroke>' +
'<CssParameter name="stroke">blue</CssParameter>' +
'</Stroke>' +
'</Mark>' +
'</Graphic>' +
'</PointSymbolizer>';
t.xml_eq(node, exp, "strokeColor only written");
// test symbolizer with graphic name only
symbolizer = {
"graphicName": "star"
};
node = parser.writeNode("sld:PointSymbolizer", symbolizer);
exp =
'<PointSymbolizer xmlns="http://www.opengis.net/sld">' +
'<Graphic>' +
'<Mark>' +
'<WellKnownName>star</WellKnownName>' +
'<Fill/>' +
'<Stroke/>' +
'</Mark>' +
'</Graphic>' +
'</PointSymbolizer>';
t.xml_eq(node, exp, "graphicName only written");
}
function test_writeTextSymbolizer(t) {
t.plan(1);
var parser = new OpenLayers.Format.SLD.v1_0_0();