diff --git a/lib/OpenLayers/Feature/Vector.js b/lib/OpenLayers/Feature/Vector.js index 8360457fea..208058f65b 100644 --- a/lib/OpenLayers/Feature/Vector.js +++ b/lib/OpenLayers/Feature/Vector.js @@ -265,6 +265,7 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, { * - graphicOpacity * - graphicXOffset * - graphicYOffset + * - display */ OpenLayers.Feature.Vector.style = { 'default': { diff --git a/lib/OpenLayers/Renderer/Elements.js b/lib/OpenLayers/Renderer/Elements.js index 35d292b943..f6b2aabeb1 100644 --- a/lib/OpenLayers/Renderer/Elements.js +++ b/lib/OpenLayers/Renderer/Elements.js @@ -122,17 +122,24 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, { return; }; - //first we create the basic node and add it to the root - var nodeType = this.getNodeType(geometry, style); - var node = this.nodeFactory(geometry.id, nodeType); - node._featureId = featureId; - node._geometryClass = geometry.CLASS_NAME; - node._style = style; - - //now actually draw the node, and style it - node = this.drawGeometryNode(node, geometry); - this.root.appendChild(node); - this.postDraw(node); + if (style.display != "none") { + //first we create the basic node and add it to the root + var nodeType = this.getNodeType(geometry, style); + var node = this.nodeFactory(geometry.id, nodeType); + node._featureId = featureId; + node._geometryClass = geometry.CLASS_NAME; + node._style = style; + + //now actually draw the node, and style it + node = this.drawGeometryNode(node, geometry); + this.root.appendChild(node); + this.postDraw(node); + } else { + node = OpenLayers.Util.getElement(geometry.id); + if (node) { + node.parentNode.removeChild(node); + } + } }, /** diff --git a/tests/Renderer/test_Elements.html b/tests/Renderer/test_Elements.html index a6686ad219..b145ec34d3 100644 --- a/tests/Renderer/test_Elements.html +++ b/tests/Renderer/test_Elements.html @@ -103,7 +103,7 @@ } function test_Elements_drawGeometry(t) { - t.plan(4); + t.plan(5); OpenLayers.Renderer.Elements.prototype._initialize = OpenLayers.Renderer.Elements.prototype.initialize; @@ -138,7 +138,17 @@ t.eq(g_Node._featureId, 'dude', "_featureId is correct"); t.ok(g_Node._style, "_style is correct"); t.eq(g_Node._geometryClass, 'bar', "_geometryClass is correct"); - + + var _getElement = OpenLayers.Util.getElement; + OpenLayers.Util.getElement = function(id) { + return g_Node; + } + + var style = {'display':'none'}; + r.drawGeometry(geometry, style, featureId); + t.ok(g_Node.parentNode != r.root, "node is correctly removed"); + + OpenLayers.Util.getElement = _getElement; OpenLayers.Renderer.Elements.prototype.initialize = OpenLayers.Renderer.Elements.prototype._initialize; }