Proper handling of virtual vertices so we don't leave them on the layer. r=crschmidt (closes #1230)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@5623 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2008-01-02 18:54:33 +00:00
parent 67e260775e
commit d643492888
2 changed files with 14 additions and 7 deletions

View File

@@ -385,8 +385,10 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
// dragging a virtual vertex
vertex.geometry.parent.addComponent(vertex.geometry,
vertex._index);
// move from virtual to real vertex
delete vertex._index;
OpenLayers.Util.removeItem(this.virtualVertices, vertex);
this.vertices.push(vertex);
} else if(vertex == this.dragHandle) {
// dragging a drag handle
this.layer.removeFeatures(this.vertices);
@@ -398,8 +400,10 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
}
// dragging a radius handle - no special treatment
// dragging a real vertex - no special treatment
this.layer.destroyFeatures(this.virtualVertices);
this.virtualVertices = [];
if(this.virtualVertices.length > 0) {
this.layer.destroyFeatures(this.virtualVertices);
this.virtualVertices = [];
}
this.layer.drawFeature(this.feature, this.selectControl.selectStyle);
}
// keep the vertex on top so it gets the mouseout after dragging
@@ -499,7 +503,11 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
vertex = new OpenLayers.Feature.Vector(geometry);
control.vertices.push(vertex);
} else {
for(i=0; i<geometry.components.length; ++i) {
var numVert = geometry.components.length;
if(geometry.CLASS_NAME == "OpenLayers.Geometry.LinearRing") {
numVert -= 1;
}
for(i=0; i<numVert; ++i) {
component = geometry.components[i];
if(component.CLASS_NAME == "OpenLayers.Geometry.Point") {
vertex = new OpenLayers.Feature.Vector(component);