Renderer: give featureId to eraseGeometry function, r=fredj (closes #2693)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@10435 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
bartvde
2010-06-30 10:49:06 +00:00
parent e643531a0a
commit 20a4025af0
3 changed files with 11 additions and 19 deletions

View File

@@ -265,8 +265,9 @@ OpenLayers.Renderer = OpenLayers.Class({
features = [features]; features = [features];
} }
for(var i=0, len=features.length; i<len; ++i) { for(var i=0, len=features.length; i<len; ++i) {
this.eraseGeometry(features[i].geometry); var feature = features[i];
this.removeText(features[i].id); this.eraseGeometry(feature.geometry, feature.id);
this.removeText(feature.id);
} }
}, },
@@ -277,8 +278,9 @@ OpenLayers.Renderer = OpenLayers.Class({
* *
* Parameters: * Parameters:
* geometry - {<OpenLayers.Geometry>} * geometry - {<OpenLayers.Geometry>}
* featureId - {String}
*/ */
eraseGeometry: function(geometry) {}, eraseGeometry: function(geometry, featureId) {},
/** /**
* Method: moveRoot * Method: moveRoot

View File

@@ -27,14 +27,6 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, {
*/ */
features: null, features: null,
/**
* Property: geometryMap
* {Object} Geometry -> Feature lookup table. Used by eraseGeometry to
* lookup features to remove from our internal table (this.features)
* when erasing geoms.
*/
geometryMap: null,
/** /**
* Constructor: OpenLayers.Renderer.Canvas * Constructor: OpenLayers.Renderer.Canvas
* *
@@ -47,7 +39,6 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, {
this.container.appendChild(this.root); this.container.appendChild(this.root);
this.canvas = this.root.getContext("2d"); this.canvas = this.root.getContext("2d");
this.features = {}; this.features = {};
this.geometryMap = {};
}, },
/** /**
@@ -58,9 +49,10 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, {
* *
* Parameters: * Parameters:
* geometry - {<OpenLayers.Geometry>} * geometry - {<OpenLayers.Geometry>}
* featureId - {String}
*/ */
eraseGeometry: function(geometry) { eraseGeometry: function(geometry, featureId) {
this.eraseFeatures(this.features[this.geometryMap[geometry.id]][0]); this.eraseFeatures(this.features[featureId][0]);
}, },
/** /**
@@ -122,9 +114,6 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, {
style = this.applyDefaultSymbolizer(style); style = this.applyDefaultSymbolizer(style);
this.features[feature.id] = [feature, style]; this.features[feature.id] = [feature, style];
if (feature.geometry) {
this.geometryMap[feature.geometry.id] = feature.id;
}
this.redraw(); this.redraw();
}, },

View File

@@ -855,14 +855,15 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
* *
* Parameters: * Parameters:
* geometry - {<OpenLayers.Geometry>} * geometry - {<OpenLayers.Geometry>}
* featureId - {String}
*/ */
eraseGeometry: function(geometry) { eraseGeometry: function(geometry, featureId) {
if ((geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") || if ((geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") ||
(geometry.CLASS_NAME == "OpenLayers.Geometry.MultiLineString") || (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiLineString") ||
(geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPolygon") || (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPolygon") ||
(geometry.CLASS_NAME == "OpenLayers.Geometry.Collection")) { (geometry.CLASS_NAME == "OpenLayers.Geometry.Collection")) {
for (var i=0, len=geometry.components.length; i<len; i++) { for (var i=0, len=geometry.components.length; i<len; i++) {
this.eraseGeometry(geometry.components[i]); this.eraseGeometry(geometry.components[i], featureId);
} }
} else { } else {
var element = OpenLayers.Util.getElement(geometry.id); var element = OpenLayers.Util.getElement(geometry.id);