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).

git-svn-id: http://svn.openlayers.org/trunk/openlayers@5541 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Éric Lemoine
2007-12-20 19:20:23 +00:00
parent 2d1099d60d
commit 2931cd3065
3 changed files with 31 additions and 13 deletions

View File

@@ -265,6 +265,7 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, {
* - graphicOpacity
* - graphicXOffset
* - graphicYOffset
* - display
*/
OpenLayers.Feature.Vector.style = {
'default': {

View File

@@ -122,6 +122,7 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
return;
};
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);
@@ -133,6 +134,12 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
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);
}
}
},
/**

View File

@@ -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;
@@ -139,6 +139,16 @@
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;
}