OpenLayers OpenLayers

Ticket #1432: 1432-r6497-A0.patch

File 1432-r6497-A0.patch, 3.0 kB (added by ahocevar, 10 months ago)
  • lib/OpenLayers/Style.js

    old new  
    115115     * {Object} symbolizer hash 
    116116     */ 
    117117    createSymbolizer: function(feature) { 
    118         var style = OpenLayers.Util.extend({}, this.defaultStyle); 
     118        var style = this.createLiterals( 
     119            OpenLayers.Util.extend({}, this.defaultStyle), feature); 
    119120         
    120121        var rules = this.rules; 
    121122 
     
    173174 
    174175        var symbolizer = rule.symbolizer[symbolizerPrefix] || rule.symbolizer; 
    175176 
    176         var context = this.context || feature.attributes || feature.data; 
    177          
    178177        // merge the style with the current style 
    179178        return this.createLiterals( 
    180                 OpenLayers.Util.extend(style, symbolizer), context); 
     179                OpenLayers.Util.extend(style, symbolizer), feature); 
    181180    }, 
    182181     
    183182    /** 
     
    188187     * Parameters: 
    189188     * style   - {Object} style to create literals for. Will be modified 
    190189     *           inline. 
    191      * context - {Object} context to take property values from. Defaults to 
    192      *           feature.attributes (or feature.data, if attributes are not 
    193      *           available) 
     190     * feature - {Object} 
    194191     *  
    195192     * Returns: 
    196193     * {Object} the modified style 
     
    195192     * Returns: 
    196193     * {Object} the modified style 
    197194     */ 
    198     createLiterals: function(style, context) { 
     195    createLiterals: function(style, feature) { 
     196        var context = this.context || feature.attributes || feature.data; 
     197         
    199198        for (var i in this.propertyStyles) { 
    200199            style[i] = OpenLayers.Style.createLiteral(style[i], context); 
    201200        } 
  • tests/test_Style.html

    old new  
    4141                symbolizer: {"Point": {fillColor: "red"}}, 
    4242                minScaleDenominator: 1000000, 
    4343                maxScaleDenominator: 2500000}); 
    44         style.addRules([rule1, rule2, rule3]); 
    4544         
    4645        var feature = new OpenLayers.Feature.Vector( 
    4746                new OpenLayers.Geometry.Point(3,5), 
     
    5857 
    5958        map.setCenter(new OpenLayers.LonLat(3,5), 10); 
    6059 
     60        var createdStyle = style.createSymbolizer(feature); 
     61        t.eq(createdStyle.externalGraphic, "barbar.png", "Calculated property style for default symbolizer correctly."); 
     62         
     63        style.addRules([rule1, rule2, rule3]); 
     64        createdStyle = style.createSymbolizer(feature); 
     65         
    6166        // at this scale, the feature should be green 
    62         var createdStyle = style.createSymbolizer(feature); 
    63         t.eq(createdStyle.externalGraphic, "barbar.png", "Calculated property style correctly."); 
    6467        t.eq(createdStyle.display, "", "Feature is visible at scale "+map.getScale()); 
    6568        t.eq(createdStyle.fillColor, "green", "Point symbolizer from rule applied correctly.");