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