OpenLayers OpenLayers

Changeset 5623

Show
Ignore:
Timestamp:
01/02/08 13:54:33 (1 year ago)
Author:
tschaub
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Control/ModifyFeature.js

    r5553 r5623  
    386386                vertex.geometry.parent.addComponent(vertex.geometry, 
    387387                                                    vertex._index); 
     388                // move from virtual to real vertex 
    388389                delete vertex._index; 
    389390                OpenLayers.Util.removeItem(this.virtualVertices, vertex); 
     391                this.vertices.push(vertex); 
    390392            } else if(vertex == this.dragHandle) { 
    391393                // dragging a drag handle 
     
    399401            // dragging a radius handle - no special treatment 
    400402            // dragging a real vertex - no special treatment 
    401             this.layer.destroyFeatures(this.virtualVertices); 
    402             this.virtualVertices = []; 
     403            if(this.virtualVertices.length > 0) { 
     404                this.layer.destroyFeatures(this.virtualVertices); 
     405                this.virtualVertices = []; 
     406            } 
    403407            this.layer.drawFeature(this.feature, this.selectControl.selectStyle); 
    404408        } 
     
    500504                control.vertices.push(vertex); 
    501505            } else { 
    502                 for(i=0; i<geometry.components.length; ++i) { 
     506                var numVert = geometry.components.length; 
     507                if(geometry.CLASS_NAME == "OpenLayers.Geometry.LinearRing") { 
     508                    numVert -= 1; 
     509                } 
     510                for(i=0; i<numVert; ++i) { 
    503511                    component = geometry.components[i]; 
    504512                    if(component.CLASS_NAME == "OpenLayers.Geometry.Point") { 
  • trunk/openlayers/tests/Control/test_ModifyFeature.html

    r5467 r5623  
    250250 
    251251    function test_ModifyFeature_resetVertices(t) { 
    252         t.plan(18); 
     252        t.plan(17); 
    253253        var layer = new OpenLayers.Layer.Vector(); 
    254254        var control = new OpenLayers.Control.ModifyFeature(layer); 
     
    277277        control.feature = new OpenLayers.Feature.Vector(polygon); 
    278278        control.resetVertices(); 
    279         t.eq(control.vertices.length, 4, "Correct vertices length with polygon"); 
    280         t.eq(control.vertices[0].geometry.id, control.vertices[3].geometry.id, "First and last vertices are the same"); 
     279        t.eq(control.vertices.length, 3, "Correct vertices length with polygon"); 
    281280        t.eq(control.virtualVertices.length, 3, "Correct virtual vertices length (polygon)."); 
    282281 
     
    299298        control.resetVertices(); 
    300299        t.ok(control.radiusHandle != null, "Radius handle is set"); 
    301         t.eq(control.vertices.length, 4, "Correct vertices length with polygon (RESHAPE | RESIZE)"); 
     300        t.eq(control.vertices.length, 3, "Correct vertices length with polygon (RESHAPE | RESIZE)"); 
    302301        t.eq(control.virtualVertices.length, 3, "Correct virtual vertices length (RESHAPE | RESIZE)"); 
    303302    }