Changeset 6552
- Timestamp:
- 03/18/08 18:51:40 (10 months ago)
- Files:
-
- sandbox/topp/geoext/examples/sld.html (modified) (1 diff)
- sandbox/topp/geoext/lib/OpenLayers/Format/SLD/v1.js (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sandbox/topp/geoext/examples/sld.html
r6544 r6552 47 47 48 48 sld = format.read(req.responseXML || req.responseText); 49 console.log(sld);50 49 var hoverStyle = sld.namedLayers["WaterBodies"].userStyles[1]; 51 50 hoverStyle.defaultStyle = OpenLayers.Util.extend( sandbox/topp/geoext/lib/OpenLayers/Format/SLD/v1.js
r6551 r6552 543 543 // add in optional name 544 544 if(sld.name) { 545 this.writeNode(root, " sld:Name", sld.name);545 this.writeNode(root, "Name", sld.name); 546 546 } 547 547 // add in optional title 548 548 if(sld.title) { 549 this.writeNode(root, " sld:Title", sld.title);549 this.writeNode(root, "Title", sld.title); 550 550 } 551 551 // add in optional description 552 552 if(sld.description) { 553 this.writeNode(root, " sld:Abstract", sld.description);553 this.writeNode(root, "Abstract", sld.description); 554 554 } 555 555 // add in named layers 556 556 for(var name in sld.namedLayers) { 557 this.writeNode(root, " sld:NamedLayer", sld.namedLayers[name]);557 this.writeNode(root, "NamedLayer", sld.namedLayers[name]); 558 558 } 559 559 return root; … … 574 574 575 575 // add in required name 576 this.writeNode(node, " sld:Name", layer.name);576 this.writeNode(node, "Name", layer.name); 577 577 578 578 // optional sld:LayerFeatureConstraints here … … 582 582 for(var i=0; i<layer.namedStyles.length; ++i) { 583 583 this.writeNode( 584 node, " sld:NamedStyle", layer.namedStyles[i]584 node, "NamedStyle", layer.namedStyles[i] 585 585 ); 586 586 } … … 591 591 for(var i=0; i<layer.userStyles.length; ++i) { 592 592 this.writeNode( 593 node, " sld:UserStyle", layer.userStyles[i]593 node, "UserStyle", layer.userStyles[i] 594 594 ); 595 595 } … … 600 600 "NamedStyle": function(name) { 601 601 var node = this.createElementNSPlus("NamedStyle"); 602 this.writeNode(node, " sld:Name", name);602 this.writeNode(node, "Name", name); 603 603 return node; 604 604 }, … … 608 608 // add in optional name 609 609 if(style.name) { 610 this.writeNode(node, " sld:Name", style.name);610 this.writeNode(node, "Name", style.name); 611 611 } 612 612 // add in optional title 613 613 if(style.title) { 614 this.writeNode(node, " sld:Title", style.title);614 this.writeNode(node, "Title", style.title); 615 615 } 616 616 // add in optional description 617 617 if(style.description) { 618 this.writeNode(node, " sld:Abstract", style.description);618 this.writeNode(node, "Abstract", style.description); 619 619 } 620 620 621 621 // add isdefault 622 622 if(style.isDefault) { 623 this.writeNode(node, " sld:IsDefault", style.isDefault);623 this.writeNode(node, "IsDefault", style.isDefault); 624 624 } 625 625 626 626 // add FeatureTypeStyles 627 this.writeNode(node, " sld:FeatureTypeStyle", style);627 this.writeNode(node, "FeatureTypeStyle", style); 628 628 629 629 return node; … … 643 643 // add in rules 644 644 for(var i=0; i<style.rules.length; ++i) { 645 this.writeNode(node, " sld:Rule", style.rules[i]);645 this.writeNode(node, "Rule", style.rules[i]); 646 646 } 647 647 … … 653 653 // add in optional name 654 654 if(rule.name) { 655 this.writeNode(node, " sld:Name", rule.name);655 this.writeNode(node, "Name", rule.name); 656 656 } 657 657 // add in optional title 658 658 if(rule.title) { 659 this.writeNode(node, " sld:Title", rule.title);659 this.writeNode(node, "Title", rule.title); 660 660 } 661 661 // add in optional description 662 662 if(rule.description) { 663 this.writeNode(node, " sld:Abstract", rule.description);663 this.writeNode(node, "Abstract", rule.description); 664 664 } 665 665 … … 668 668 // add in filters 669 669 if(rule.elseFilter) { 670 this.writeNode(node, " sld:ElseFilter");670 this.writeNode(node, "ElseFilter"); 671 671 } else { 672 672 var filter = this.writeNode(node, "ogc:Filter"); … … 674 674 if(sub == "FeatureId") { 675 675 for(var i=0; i<rule.fids.length; ++i) { 676 this.writeNode(filter, " ogc:FeatureId", rule.fids[i]);676 this.writeNode(filter, "FeatureId", rule.fids[i]); 677 677 } 678 678 } // TODO: other filter types … … 682 682 if(rule.minScaleDenominator != undefined) { 683 683 this.writeNode( 684 node, " sld:MinScaleDenominator", rule.minScaleDenominator684 node, "MinScaleDenominator", rule.minScaleDenominator 685 685 ); 686 686 } 687 687 if(rule.maxScaleDenominator != undefined) { 688 688 this.writeNode( 689 node, " sld:MaxScaleDenominator", rule.maxScaleDenominator689 node, "MaxScaleDenominator", rule.maxScaleDenominator 690 690 ); 691 691 } … … 693 693 // add in symbolizers (relies on geometry type keys) 694 694 var types = OpenLayers.Style.SYMBOLIZER_PREFIXES; 695 var symbolizer;695 var type, symbolizer; 696 696 for(var i=0; i<types.length; ++i) { 697 type = types[i]; 697 698 symbolizer = rule.symbolizer[type]; 698 699 if(symbolizer) { 699 700 this.writeNode( 700 node, "sld:" +type + "Symbolizer", symbolizer701 node, type + "Symbolizer", symbolizer 701 702 ); 702 703 } … … 732 733 if(symbolizer.strokeColor != undefined) { 733 734 this.writeNode( 734 node, "CssParameter", symbolizer, "strokeColor" 735 node, "CssParameter", 736 {symbolizer: symbolizer, key: "strokeColor"} 735 737 ); 736 738 } 737 739 if(symbolizer.strokeOpacity != undefined) { 738 740 this.writeNode( 739 node, "CssParameter", symbolizer, "strokeOpacity" 741 node, "CssParameter", 742 {symbolizer: symbolizer, key: "strokeOpacity"} 740 743 ); 741 744 } 742 745 if(symbolizer.strokeWidth != undefined) { 743 746 this.writeNode( 744 node, "CssParameter", symbolizer, "strokeWidth" 747 node, "CssParameter", 748 {symbolizer: symbolizer, key: "strokeWidth"} 745 749 ); 746 750 } 747 751 return node; 748 752 }, 749 "CssParameter": function( symbolizer, prop) {753 "CssParameter": function(obj) { 750 754 // not handling ogc:expressions for now 751 755 return this.createElementNSPlus("CssParameter", { 752 attributes: {name: this.getCssProperty( prop)},753 value: symbolizer[prop]756 attributes: {name: this.getCssProperty(obj.key)}, 757 value: obj.symbolizer[obj.key] 754 758 }); 755 759 }, … … 768 772 if(symbolizer.fillColor) { 769 773 this.writeNode( 770 node, "CssParameter", symbolizer, "fillColor" 774 node, "CssParameter", 775 {symbolizer: symbolizer, key: "fillColor"} 771 776 ) 772 777 } 773 778 if(symbolizer.fillOpacity) { 774 779 this.writeNode( 775 node, "CssParameter", symbolizer, "fillOpacity" 780 node, "CssParameter", 781 {symbolizer: symbolizer, key: "fillOpacity"} 776 782 ); 777 783 } … … 792 798 793 799 if(symbolizer.graphicOpacity != undefined) { 794 this.writeNode( 795 node, "CssParameter", smbolizer, "graphicOpacity" 796 ); 800 this.writeNode(node, "Opacity", symbolizer.graphicOpacity); 797 801 } 798 802 if(symbolizer.pointRadius != undefined) { 799 this.writeNode( 800 node, "CssParameter", symbolizer, "pointRadius" 801 ); 803 this.writeNode(node, "Size", symbolizer.pointRadius); 802 804 } 803 805 if(symbolizer.rotation != undefined) { 804 this.writeNode( 805 node, "CssParameter", symbolizer, "rotation" 806 ); 806 this.writeNode(node, "Rotation", symbolizer.rotation); 807 807 } 808 808 return node; … … 822 822 this.writeNode(node, "WellKnownName", symbolizer.graphicName); 823 823 this.writeNode(node, "Fill", symbolizer); 824 this.writeNode(node, "Strok s", symbolizer);824 this.writeNode(node, "Stroke", symbolizer); 825 825 return node; 826 826 }, … … 828 828 return this.createElementNSPlus("WellKnownName", { 829 829 value: name 830 }); 831 }, 832 "Opacity": function(value) { 833 return this.createElementNSPlus("Opacity", { 834 value: value 835 }); 836 }, 837 "Size": function(value) { 838 return this.createElementNSPlus("Size", { 839 value: value 840 }); 841 }, 842 "Rotation": function(value) { 843 return this.createElementNSPlus("Rotation", { 844 value: value 830 845 }); 831 846 }, … … 930 945 * Method: writeNode 931 946 * Shorthand for applying one of the named writers and appending the 932 * results to a node. 947 * results to a node. If a qualified name is not provided for the 948 * second argument (and a local name is used instead), the namespace 949 * of the parent node will be assumed. 933 950 * 934 951 * Parameters: 935 952 * parent - {DOMElement} Result will be appended to this node. 936 * qualifiedName - {String} The node name to generate (e.g. "pre:Name"). 953 * name - {String} The name of a node to generate. If a qualified name 954 * (e.g. "pre:Name") is used, the namespace prefix is assumed to be 955 * in the <writers> group. If a local name is used (e.g. "Name") then 956 * the namespace of the parent is assumed. 937 957 * obj - {Object} Structure containing data for the writer. 938 958 * … … 940 960 * {DOMElement} The child node. 941 961 */ 942 writeNode: function(parent, qualifiedName, obj) { 943 var parts = qualifiedName.split(":"); 944 var child = this.writers[parts[0]][parts[1]].apply(this, obj); 962 writeNode: function(parent, name, obj) { 963 var prefix, local; 964 var split = name.indexOf(":"); 965 if(split > 0) { 966 prefix = name.substring(0, split); 967 local = name.substring(split + 1); 968 } else { 969 prefix = this.getNamespacePrefix(parent.namespaceURI); 970 local = name; 971 } 972 var child = this.writers[prefix][local].apply(this, [obj]); 945 973 parent.appendChild(child); 946 974 return child;
