diff --git a/lib/OpenLayers/Control/ModifyFeature.js b/lib/OpenLayers/Control/ModifyFeature.js index c07eaa44ce..a1b1244484 100644 --- a/lib/OpenLayers/Control/ModifyFeature.js +++ b/lib/OpenLayers/Control/ModifyFeature.js @@ -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