Changeset 7333
- Timestamp:
- 06/09/08 13:18:35 (3 months ago)
- Files:
-
- trunk/openlayers/lib/OpenLayers/Format/SLD/v1.js (modified) (2 diffs)
- trunk/openlayers/lib/OpenLayers/Style.js (modified) (1 diff)
- trunk/openlayers/tests/Format/SLD/v1_0_0.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/openlayers/lib/OpenLayers/Format/SLD/v1.js
r7324 r7333 426 426 "stroke-linecap": "strokeLinecap", 427 427 "fill": "fillColor", 428 "fill-opacity": "fillOpacity" 428 "fill-opacity": "fillOpacity", 429 "font-family": "fontFamily", 430 "font-size": "fontSize" 429 431 }, 430 432 … … 732 734 value: obj.symbolizer[obj.key] 733 735 }); 736 }, 737 "TextSymbolizer": function(symbolizer) { 738 var node = this.createElementNSPlus("TextSymbolizer"); 739 // add in optional Label 740 if(symbolizer.label != null) { 741 this.writeNode(node, "Label", symbolizer.label); 742 } 743 // add in optional Font 744 if(symbolizer.fontFamily != null || 745 symbolizer.fontSize != null) { 746 this.writeNode(node, "Font", symbolizer); 747 } 748 // add in optional Fill 749 if(symbolizer.fillColor != null || 750 symbolizer.fillOpacity != null) { 751 this.writeNode(node, "Fill", symbolizer); 752 } 753 return node; 754 }, 755 "Font": function(symbolizer) { 756 var node = this.createElementNSPlus("Font"); 757 // add in CssParameters 758 if(symbolizer.fontFamily) { 759 this.writeNode( 760 node, "CssParameter", 761 {symbolizer: symbolizer, key: "fontFamily"} 762 ); 763 } 764 if(symbolizer.fontSize) { 765 this.writeNode( 766 node, "CssParameter", 767 {symbolizer: symbolizer, key: "fontSize"} 768 ); 769 } 770 return node; 771 }, 772 "Label": function(label) { 773 // only the simplest of ogc:expression handled 774 // {label: "some text and a ${propertyName}"} 775 var node = this.createElementNSPlus("Label"); 776 var tokens = label.split("${"); 777 node.appendChild(this.createTextNode(tokens[0])); 778 var item, last; 779 for(var i=1; i<tokens.length; i++) { 780 item = tokens[i]; 781 last = item.indexOf("}"); 782 if(last > 0) { 783 this.writeNode( 784 node, "ogc:PropertyName", 785 {property: item.substring(0, last)} 786 ); 787 node.appendChild( 788 this.createTextNode(item.substring(++last)) 789 ); 790 } else { 791 // no ending }, so this is a literal ${ 792 node.appendChild( 793 this.createTextNode("${" + item) 794 ); 795 } 796 } 797 return node; 734 798 }, 735 799 "PolygonSymbolizer": function(symbolizer) { trunk/openlayers/lib/OpenLayers/Style.js
r7173 r7333 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']; trunk/openlayers/tests/Format/SLD/v1_0_0.html
r6818 r7333 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>
