OpenLayers OpenLayers

Changeset 5541

Show
Ignore:
Timestamp:
12/20/07 14:20:23 (1 year ago)
Author:
elemoine
Message:

Add style property "display" to vector feature style. If display is "none" the feature won't be rendered and there's a DOM node for that feature it'll be removed. Commiting this on behalf of ahocevar. Thanks Andreas for the patch. r=crschmidt. (closes #1173).

Files:

Legend:

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

    r5002 r5541  
    266266 *  - graphicXOffset 
    267267 *  - graphicYOffset 
     268 *  - display 
    268269 */  
    269270OpenLayers.Feature.Vector.style = { 
  • trunk/openlayers/lib/OpenLayers/Renderer/Elements.js

    r5397 r5541  
    123123        }; 
    124124 
    125         //first we create the basic node and add it to the root 
    126         var nodeType = this.getNodeType(geometry, style); 
    127         var node = this.nodeFactory(geometry.id, nodeType); 
    128         node._featureId = featureId; 
    129         node._geometryClass = geometry.CLASS_NAME; 
    130         node._style = style; 
    131          
    132         //now actually draw the node, and style it 
    133         node = this.drawGeometryNode(node, geometry); 
    134         this.root.appendChild(node); 
    135         this.postDraw(node); 
     125        if (style.display != "none") { 
     126            //first we create the basic node and add it to the root 
     127            var nodeType = this.getNodeType(geometry, style); 
     128            var node = this.nodeFactory(geometry.id, nodeType); 
     129            node._featureId = featureId; 
     130            node._geometryClass = geometry.CLASS_NAME; 
     131            node._style = style; 
     132             
     133            //now actually draw the node, and style it 
     134            node = this.drawGeometryNode(node, geometry); 
     135            this.root.appendChild(node); 
     136            this.postDraw(node); 
     137        } else { 
     138            node = OpenLayers.Util.getElement(geometry.id); 
     139            if (node) { 
     140                node.parentNode.removeChild(node); 
     141            } 
     142        } 
    136143    }, 
    137144 
  • trunk/openlayers/tests/Renderer/test_Elements.html

    r5340 r5541  
    104104     
    105105    function test_Elements_drawGeometry(t) { 
    106         t.plan(4); 
     106        t.plan(5); 
    107107         
    108108        OpenLayers.Renderer.Elements.prototype._initialize = 
     
    139139        t.ok(g_Node._style, "_style is correct"); 
    140140        t.eq(g_Node._geometryClass, 'bar', "_geometryClass is correct"); 
    141          
     141 
     142        var _getElement = OpenLayers.Util.getElement; 
     143        OpenLayers.Util.getElement = function(id) { 
     144            return g_Node; 
     145        } 
     146 
     147        var style = {'display':'none'}; 
     148        r.drawGeometry(geometry, style, featureId); 
     149        t.ok(g_Node.parentNode != r.root, "node is correctly removed"); 
     150        
     151        OpenLayers.Util.getElement = _getElement; 
    142152        OpenLayers.Renderer.Elements.prototype.initialize = 
    143153            OpenLayers.Renderer.Elements.prototype._initialize;