OpenLayers OpenLayers

Changeset 6505

Show
Ignore:
Timestamp:
03/12/08 12:42:16 (6 months ago)
Author:
ahocevar
Message:

propertyStyles of a Style's default symbolizer will not be parsed unless rules are specified. r=tschaub (closes #1432)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Style.js

    r6396 r6505  
    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; 
     
    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     
     
    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 
    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); 
  • trunk/openlayers/tests/test_Style.html

    r6396 r6505  
    4242                minScaleDenominator: 1000000, 
    4343                maxScaleDenominator: 2500000}); 
    44         style.addRules([rule1, rule2, rule3]); 
    4544         
    4645        var feature = new OpenLayers.Feature.Vector( 
     
    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.");