OpenLayers OpenLayers

Changeset 5434

Show
Ignore:
Timestamp:
12/15/07 16:42:11 (1 year ago)
Author:
ahocevar
Message:

changed API of Format.SLD as proposed by crschmidt in #1154

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/ahocevar/styles/examples/sld.html

    r5432 r5434  
    2727                  map.zoomToExtent(new OpenLayers.Bounds(143,-39,150,-45)); 
    2828 
    29             sld = new OpenLayers.Format.SLD(); 
    30             sld.read(req.responseText); 
     29            sld = new OpenLayers.Format.SLD().read(req.responseText, 
     30                    {withNamedLayer: true}); 
    3131             
    32             styles = sld.content.namedLayer
     32            styles = sld[1]
    3333             
    3434            waterStyle = styles["WaterBodies"]; 
  • sandbox/ahocevar/styles/lib/OpenLayers/Format/SLD.js

    r5309 r5434  
    5353     
    5454    /** 
    55      * APIProperty: content 
    56      * {Object} containing 
    57      *     - namedLayer - {Object} hash of userStyles, keyed by sld:NamedLayer/Name, 
    58      *                    each again keyed by sld:UserStyle/Name. Each entry of namedLayer 
    59      *                    is a style map for a layer, with the userStyle names as style keys. 
    60      *     - userStyles - {Array(<OpenLayers.Style>)} 
    61      */ 
    62     content: { 
    63             namedLayer: null, 
    64             userStyles: null 
    65     }, 
    66      
     55     */ 
     56    withNamedLayer: false, 
     57      
    6758    /** 
    6859     * APIProperty: overrideDefaultStyleKey 
    6960     * {Boolean} if true, userStyles with sld:IsDefault==1 will be stored with 
    7061     * key "default" instead of the sld:UserStyle/Name in the style map. 
     62     * Default is true. 
    7163     */ 
    7264    overrideDefaultStyleKey: true, 
     
    9082     *  
    9183     * Parameters: 
    92      * data - {String} or {XMLNode} data to read/parse. 
     84     * data    - {String} or {XMLNode} data to read/parse. 
     85     * options - {Object} Hash of withNamedLayer, overrideDefaultStyleKey: 
     86     *     - withNamedLayer - {Boolean} if true, output of read() will be 
     87     *           [styles, namedLayer] 
     88     *           - styles - {Array(<OpenLayers.Style>)} 
     89     *           - namedLayer - {Object} hash of userStyles, keyed by 
     90     *                 sld:NamedLayer/Name, each again keyed by  
     91     *                 sld:UserStyle/Name. Each entry of namedLayer is a 
     92     *                 StyleMap for a layer, with the userStyle names as style 
     93     *                 keys. 
     94     *           Default is false. 
     95     *     - overrideDefaultStyleKey - {Boolean} if true, userStyles with 
     96     *           sld:IsDefault==1 will be stored with key "default" instead of 
     97     *           the sld:UserStyle/Name in the style map. Default is true. 
    9398     * 
    9499     * Returns: 
    95      * {Array(<OpenLayers.Style>)} 
    96      */ 
    97     read: function(data) { 
     100     * {Array(<OpenLayers.Style>)} unless withNamedLayer option is true. 
     101     */ 
     102    read: function(data, options) { 
    98103        if (typeof data == "string") {  
    99104            data = OpenLayers.Format.XML.prototype.read.apply(this, [data]); 
    100105        } 
     106         
     107        options = OpenLayers.Util.extend({ 
     108                withNamedLayer: false, 
     109                overrideDefaultStyleKey: true}, options) 
    101110         
    102111        var userStyles = this.getElementsByTagNameNS(data, this.sldns, 
     
    106115        } 
    107116 
    108         this.content.namedLayer = {}; 
     117        var namedLayer = {}; 
    109118        var styles = []; 
    110119 
     
    113122            var style = this.parseUserStyle(userStyles[i], styleName); 
    114123 
    115             if (this.overrideDefaultStyleKey && style.isDefault == true) { 
     124            if (options.overrideDefaultStyleKey && style.isDefault == true) { 
    116125                styleName = "default"; 
    117126            } 
    118127 
    119             var namedLayer = this.content.namedLayer; 
    120128            if (!namedLayer[style.layerName]) { 
    121129                namedLayer[style.layerName] = {}; 
     
    125133        } 
    126134         
    127         this.content.userStyles = styles; 
    128          
    129         return styles; 
     135        return options.withNamedLayer ? [styles, namedLayer] : styles; 
    130136    }, 
    131137 
  • sandbox/ahocevar/styles/tests/Format/test_SLD.html

    r5311 r5434  
    1919    function test_Format_SLD_read(t) { 
    2020        t.plan(5); 
    21         var format = new OpenLayers.Format.SLD(); 
    22         var styles = format.read(this.test_content); 
     21        var styles = new OpenLayers.Format.SLD().read(this.test_content, 
     22                {withNamedLayer: true}); 
    2323         
    24         var testLayer = format.content.namedLayer.TestLayer; 
     24        var testLayer = styles[1].TestLayer; 
    2525         
    2626        t.ok(testLayer.foo != undefined, "SLD correctly reads a UserStyle named \"foo\""); 
     
    2828        t.eq(testLayer.foo.rules[0].name, "bar", "The first rule's name is \"bar\""); 
    2929        t.eq(testLayer.foo.rules[0].symbolizer.Polygon.fillColor, "blue", "The fillColor for the Polygon symbolizer is correct"); 
    30         t.eq(testLayer.foo.name, styles[0].name, "The content hash of the Format contains the correct rules."); 
     30        t.eq(testLayer.foo.name, styles[0][0].name, "The content hash of the Format contains the correct rules."); 
    3131    } 
    3232