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:
@@ -265,6 +265,7 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, {
|
||||
* - graphicOpacity
|
||||
* - graphicXOffset
|
||||
* - graphicYOffset
|
||||
* - display
|
||||
*/
|
||||
OpenLayers.Feature.Vector.style = {
|
||||
'default': {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user