OpenLayers OpenLayers

Changeset 6552

Show
Ignore:
Timestamp:
03/18/08 18:51:40 (10 months ago)
Author:
tschaub
Message:

bug free partial writing

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/topp/geoext/examples/sld.html

    r6544 r6552  
    4747 
    4848            sld = format.read(req.responseXML || req.responseText); 
    49             console.log(sld); 
    5049            var hoverStyle = sld.namedLayers["WaterBodies"].userStyles[1]; 
    5150            hoverStyle.defaultStyle = OpenLayers.Util.extend( 
  • sandbox/topp/geoext/lib/OpenLayers/Format/SLD/v1.js

    r6551 r6552  
    543543                // add in optional name 
    544544                if(sld.name) { 
    545                     this.writeNode(root, "sld:Name", sld.name); 
     545                    this.writeNode(root, "Name", sld.name); 
    546546                } 
    547547                // add in optional title 
    548548                if(sld.title) { 
    549                     this.writeNode(root, "sld:Title", sld.title); 
     549                    this.writeNode(root, "Title", sld.title); 
    550550                } 
    551551                // add in optional description 
    552552                if(sld.description) { 
    553                     this.writeNode(root, "sld:Abstract", sld.description); 
     553                    this.writeNode(root, "Abstract", sld.description); 
    554554                } 
    555555                // add in named layers 
    556556                for(var name in sld.namedLayers) { 
    557                     this.writeNode(root, "sld:NamedLayer", sld.namedLayers[name]); 
     557                    this.writeNode(root, "NamedLayer", sld.namedLayers[name]); 
    558558                } 
    559559                return root; 
     
    574574 
    575575                // add in required name 
    576                 this.writeNode(node, "sld:Name", layer.name); 
     576                this.writeNode(node, "Name", layer.name); 
    577577 
    578578                // optional sld:LayerFeatureConstraints here 
     
    582582                    for(var i=0; i<layer.namedStyles.length; ++i) { 
    583583                        this.writeNode( 
    584                             node, "sld:NamedStyle", layer.namedStyles[i] 
     584                            node, "NamedStyle", layer.namedStyles[i] 
    585585                        ); 
    586586                    } 
     
    591591                    for(var i=0; i<layer.userStyles.length; ++i) { 
    592592                        this.writeNode( 
    593                             node, "sld:UserStyle", layer.userStyles[i] 
     593                            node, "UserStyle", layer.userStyles[i] 
    594594                        ); 
    595595                    } 
     
    600600            "NamedStyle": function(name) { 
    601601                var node = this.createElementNSPlus("NamedStyle"); 
    602                 this.writeNode(node, "sld:Name", name); 
     602                this.writeNode(node, "Name", name); 
    603603                return node; 
    604604            }, 
     
    608608                // add in optional name 
    609609                if(style.name) { 
    610                     this.writeNode(node, "sld:Name", style.name); 
     610                    this.writeNode(node, "Name", style.name); 
    611611                } 
    612612                // add in optional title 
    613613                if(style.title) { 
    614                     this.writeNode(node, "sld:Title", style.title); 
     614                    this.writeNode(node, "Title", style.title); 
    615615                } 
    616616                // add in optional description 
    617617                if(style.description) { 
    618                     this.writeNode(node, "sld:Abstract", style.description); 
     618                    this.writeNode(node, "Abstract", style.description); 
    619619                } 
    620620                 
    621621                // add isdefault 
    622622                if(style.isDefault) { 
    623                     this.writeNode(node, "sld:IsDefault", style.isDefault); 
     623                    this.writeNode(node, "IsDefault", style.isDefault); 
    624624                } 
    625625                 
    626626                // add FeatureTypeStyles 
    627                 this.writeNode(node, "sld:FeatureTypeStyle", style); 
     627                this.writeNode(node, "FeatureTypeStyle", style); 
    628628                 
    629629                return node; 
     
    643643                // add in rules 
    644644                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]); 
    646646                } 
    647647                 
     
    653653                // add in optional name 
    654654                if(rule.name) { 
    655                     this.writeNode(node, "sld:Name", rule.name); 
     655                    this.writeNode(node, "Name", rule.name); 
    656656                } 
    657657                // add in optional title 
    658658                if(rule.title) { 
    659                     this.writeNode(node, "sld:Title", rule.title); 
     659                    this.writeNode(node, "Title", rule.title); 
    660660                } 
    661661                // add in optional description 
    662662                if(rule.description) { 
    663                     this.writeNode(node, "sld:Abstract", rule.description); 
     663                    this.writeNode(node, "Abstract", rule.description); 
    664664                } 
    665665                 
     
    668668                // add in filters 
    669669                if(rule.elseFilter) { 
    670                     this.writeNode(node, "sld:ElseFilter"); 
     670                    this.writeNode(node, "ElseFilter"); 
    671671                } else { 
    672672                    var filter = this.writeNode(node, "ogc:Filter"); 
     
    674674                    if(sub == "FeatureId") { 
    675675                        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]); 
    677677                        } 
    678678                    } // TODO: other filter types 
     
    682682                if(rule.minScaleDenominator != undefined) { 
    683683                    this.writeNode( 
    684                         node, "sld:MinScaleDenominator", rule.minScaleDenominator 
     684                        node, "MinScaleDenominator", rule.minScaleDenominator 
    685685                    ); 
    686686                } 
    687687                if(rule.maxScaleDenominator != undefined) { 
    688688                    this.writeNode( 
    689                         node, "sld:MaxScaleDenominator", rule.maxScaleDenominator 
     689                        node, "MaxScaleDenominator", rule.maxScaleDenominator 
    690690                    ); 
    691691                } 
     
    693693                // add in symbolizers (relies on geometry type keys) 
    694694                var types = OpenLayers.Style.SYMBOLIZER_PREFIXES; 
    695                 var symbolizer; 
     695                var type, symbolizer; 
    696696                for(var i=0; i<types.length; ++i) { 
     697                    type = types[i]; 
    697698                    symbolizer = rule.symbolizer[type]; 
    698699                    if(symbolizer) { 
    699700                        this.writeNode( 
    700                             node, "sld:" + type + "Symbolizer", symbolizer 
     701                            node, type + "Symbolizer", symbolizer 
    701702                        ); 
    702703                    } 
     
    732733                if(symbolizer.strokeColor != undefined) { 
    733734                    this.writeNode( 
    734                         node, "CssParameter", symbolizer, "strokeColor" 
     735                        node, "CssParameter", 
     736                        {symbolizer: symbolizer, key: "strokeColor"} 
    735737                    ); 
    736738                } 
    737739                if(symbolizer.strokeOpacity != undefined) { 
    738740                    this.writeNode( 
    739                         node, "CssParameter", symbolizer, "strokeOpacity" 
     741                        node, "CssParameter", 
     742                        {symbolizer: symbolizer, key: "strokeOpacity"} 
    740743                    ); 
    741744                } 
    742745                if(symbolizer.strokeWidth != undefined) { 
    743746                    this.writeNode( 
    744                         node, "CssParameter", symbolizer, "strokeWidth" 
     747                        node, "CssParameter", 
     748                        {symbolizer: symbolizer, key: "strokeWidth"} 
    745749                    ); 
    746750                } 
    747751                return node; 
    748752            }, 
    749             "CssParameter": function(symbolizer, prop) { 
     753            "CssParameter": function(obj) { 
    750754                // not handling ogc:expressions for now 
    751755                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
    754758                }); 
    755759            }, 
     
    768772                if(symbolizer.fillColor) { 
    769773                    this.writeNode( 
    770                         node, "CssParameter", symbolizer, "fillColor" 
     774                        node, "CssParameter", 
     775                        {symbolizer: symbolizer, key: "fillColor"} 
    771776                    ) 
    772777                } 
    773778                if(symbolizer.fillOpacity) { 
    774779                    this.writeNode( 
    775                         node, "CssParameter", symbolizer, "fillOpacity" 
     780                        node, "CssParameter", 
     781                        {symbolizer: symbolizer, key: "fillOpacity"} 
    776782                    ); 
    777783                } 
     
    792798                 
    793799                if(symbolizer.graphicOpacity != undefined) { 
    794                     this.writeNode( 
    795                         node, "CssParameter", smbolizer, "graphicOpacity" 
    796                     ); 
     800                    this.writeNode(node, "Opacity", symbolizer.graphicOpacity); 
    797801                } 
    798802                if(symbolizer.pointRadius != undefined) { 
    799                     this.writeNode( 
    800                         node, "CssParameter", symbolizer, "pointRadius" 
    801                     ); 
     803                    this.writeNode(node, "Size", symbolizer.pointRadius); 
    802804                } 
    803805                if(symbolizer.rotation != undefined) { 
    804                     this.writeNode( 
    805                         node, "CssParameter", symbolizer, "rotation" 
    806                     ); 
     806                    this.writeNode(node, "Rotation", symbolizer.rotation); 
    807807                } 
    808808                return node; 
     
    822822                this.writeNode(node, "WellKnownName", symbolizer.graphicName); 
    823823                this.writeNode(node, "Fill", symbolizer); 
    824                 this.writeNode(node, "Stroks", symbolizer); 
     824                this.writeNode(node, "Stroke", symbolizer); 
    825825                return node; 
    826826            }, 
     
    828828                return this.createElementNSPlus("WellKnownName", { 
    829829                    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 
    830845                }); 
    831846            }, 
     
    930945     * Method: writeNode 
    931946     * 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. 
    933950     * 
    934951     * Parameters: 
    935952     * 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. 
    937957     * obj - {Object} Structure containing data for the writer. 
    938958     * 
     
    940960     * {DOMElement} The child node. 
    941961     */ 
    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]); 
    945973        parent.appendChild(child); 
    946974        return child;