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 * - graphicOpacity
* - graphicXOffset * - graphicXOffset
* - graphicYOffset * - graphicYOffset
* - display
*/ */
OpenLayers.Feature.Vector.style = { OpenLayers.Feature.Vector.style = {
'default': { 'default': {

View File

@@ -122,17 +122,24 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
return; return;
}; };
//first we create the basic node and add it to the root if (style.display != "none") {
var nodeType = this.getNodeType(geometry, style); //first we create the basic node and add it to the root
var node = this.nodeFactory(geometry.id, nodeType); var nodeType = this.getNodeType(geometry, style);
node._featureId = featureId; var node = this.nodeFactory(geometry.id, nodeType);
node._geometryClass = geometry.CLASS_NAME; node._featureId = featureId;
node._style = style; node._geometryClass = geometry.CLASS_NAME;
node._style = style;
//now actually draw the node, and style it
node = this.drawGeometryNode(node, geometry); //now actually draw the node, and style it
this.root.appendChild(node); node = this.drawGeometryNode(node, geometry);
this.postDraw(node); 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) { function test_Elements_drawGeometry(t) {
t.plan(4); t.plan(5);
OpenLayers.Renderer.Elements.prototype._initialize = OpenLayers.Renderer.Elements.prototype._initialize =
OpenLayers.Renderer.Elements.prototype.initialize; OpenLayers.Renderer.Elements.prototype.initialize;
@@ -138,7 +138,17 @@
t.eq(g_Node._featureId, 'dude', "_featureId is correct"); t.eq(g_Node._featureId, 'dude', "_featureId is correct");
t.ok(g_Node._style, "_style is correct"); t.ok(g_Node._style, "_style is correct");
t.eq(g_Node._geometryClass, 'bar', "_geometryClass 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 =
OpenLayers.Renderer.Elements.prototype._initialize; OpenLayers.Renderer.Elements.prototype._initialize;
} }