Ticket #1542: text.patch
| File text.patch, 5.5 kB (added by tschaub, 6 months ago) |
|---|
-
tests/Format/SLD/v1_0_0.html
old new 150 150 151 151 } 152 152 153 function test_writeTextSymbolizer(t) { 154 t.plan(1); 155 var parser = new OpenLayers.Format.SLD.v1_0_0(); 156 var symbolizer = { 157 "Text": { 158 "label": "This is the ${city} in ${state}.", 159 "fontFamily": "Arial", 160 "fontSize": 10, 161 "fillColor": "blue" 162 } 163 }; 164 var node = parser.writers["sld"]["TextSymbolizer"].apply( 165 parser, [symbolizer["Text"]] 166 ); 167 168 var expected = 169 '<TextSymbolizer xmlns="http://www.opengis.net/sld">' + 170 '<Label>' + 171 'This is the ' + 172 '<ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">city</ogc:PropertyName>' + 173 ' in ' + 174 '<ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc">state</ogc:PropertyName>' + 175 '.' + 176 '</Label>' + 177 '<Font>' + 178 '<CssParameter name="font-family">Arial</CssParameter>' + 179 '<CssParameter name="font-size">10</CssParameter>' + 180 '</Font>' + 181 '<Fill>' + 182 '<CssParameter name="fill">blue</CssParameter>' + 183 '</Fill>' + 184 '</TextSymbolizer>'; 185 186 t.xml_eq(node, expected, "TextSymbolizer correctly written"); 187 188 } 153 189 154 190 </script> 155 191 </head> -
lib/OpenLayers/Format/SLD/v1.js
old new 422 422 "stroke-width": "strokeWidth", 423 423 "stroke-linecap": "strokeLinecap", 424 424 "fill": "fillColor", 425 "fill-opacity": "fillOpacity" 425 "fill-opacity": "fillOpacity", 426 "font-family": "fontFamily", 427 "font-size": "fontSize" 426 428 }, 427 429 428 430 /** … … 729 731 value: obj.symbolizer[obj.key] 730 732 }); 731 733 }, 734 "TextSymbolizer": function(symbolizer) { 735 var node = this.createElementNSPlus("TextSymbolizer"); 736 // add in optional Label 737 if(symbolizer.label != null) { 738 this.writeNode(node, "Label", symbolizer.label); 739 } 740 // add in optional Font 741 if(symbolizer.fontFamily != null || 742 symbolizer.fontSize != null) { 743 this.writeNode(node, "Font", symbolizer); 744 } 745 // add in optional Fill 746 if(symbolizer.fillColor != null || 747 symbolizer.fillOpacity != null) { 748 this.writeNode(node, "Fill", symbolizer); 749 } 750 return node; 751 }, 752 "Font": function(symbolizer) { 753 var node = this.createElementNSPlus("Font"); 754 // add in CssParameters 755 if(symbolizer.fontFamily) { 756 this.writeNode( 757 node, "CssParameter", 758 {symbolizer: symbolizer, key: "fontFamily"} 759 ); 760 } 761 if(symbolizer.fontSize) { 762 this.writeNode( 763 node, "CssParameter", 764 {symbolizer: symbolizer, key: "fontSize"} 765 ); 766 } 767 return node; 768 }, 769 "Label": function(label) { 770 // only the simplest of ogc:expression handled 771 // {label: "some text and a ${propertyName}"} 772 var node = this.createElementNSPlus("Label"); 773 var tokens = label.split("${"); 774 node.appendChild(this.createTextNode(tokens[0])); 775 var item, last; 776 for(var i=1; i<tokens.length; i++) { 777 item = tokens[i]; 778 last = item.indexOf("}"); 779 if(last > 0) { 780 this.writeNode( 781 node, "ogc:PropertyName", 782 {property: item.substring(0, last)} 783 ); 784 node.appendChild( 785 this.createTextNode(item.substring(++last)) 786 ); 787 } else { 788 // no ending }, so this is a literal ${ 789 node.appendChild( 790 this.createTextNode("${" + item) 791 ); 792 } 793 } 794 return node; 795 }, 732 796 "PolygonSymbolizer": function(symbolizer) { 733 797 var node = this.createElementNSPlus("PolygonSymbolizer"); 734 798 this.writeNode(node, "Fill", symbolizer); -
lib/OpenLayers/Style.js
old new 353 353 * {Array} prefixes of the sld symbolizers. These are the 354 354 * same as the main geometry types 355 355 */ 356 OpenLayers.Style.SYMBOLIZER_PREFIXES = ['Point', 'Line', 'Polygon' ];356 OpenLayers.Style.SYMBOLIZER_PREFIXES = ['Point', 'Line', 'Polygon', 'Text'];
