New createVertices option for Control.ModifyFeature
This commit is contained in:
@@ -96,6 +96,7 @@
|
||||
if (rotate || drag) {
|
||||
controls.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
|
||||
}
|
||||
controls.modify.createVertices = document.getElementById("createVertices").checked;
|
||||
var sides = parseInt(document.getElementById("sides").value);
|
||||
sides = Math.max(3, isNaN(sides) ? 0 : sides);
|
||||
controls.regular.handler.sides = sides;
|
||||
@@ -161,6 +162,11 @@
|
||||
onclick="toggleControl(this);" />
|
||||
<label for="modifyToggle">modify feature</label>
|
||||
<ul>
|
||||
<li>
|
||||
<input id="createVertices" type="checkbox" checked
|
||||
name="createVertices" onchange="update()" />
|
||||
<label for="createVertices">allow vertices creation</label>
|
||||
</li>
|
||||
<li>
|
||||
<input id="rotate" type="checkbox"
|
||||
name="rotate" onchange="update()" />
|
||||
|
||||
@@ -137,6 +137,13 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
*/
|
||||
mode: null,
|
||||
|
||||
/**
|
||||
* APIProperty: createVertices
|
||||
* {Boolean} Create new vertices by dragging the virtual vertices
|
||||
* in the middle of each edge. Default is true.
|
||||
*/
|
||||
createVertices: true,
|
||||
|
||||
/**
|
||||
* Property: modified
|
||||
* {Boolean} The currently selected feature has been modified.
|
||||
@@ -677,7 +684,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
||||
}
|
||||
|
||||
// add virtual vertices in the middle of each edge
|
||||
if(geometry.CLASS_NAME != "OpenLayers.Geometry.MultiPoint") {
|
||||
if (control.createVertices && geometry.CLASS_NAME != "OpenLayers.Geometry.MultiPoint") {
|
||||
for(i=0, len=geometry.components.length; i<len-1; ++i) {
|
||||
var prevVertex = geometry.components[i];
|
||||
var nextVertex = geometry.components[i + 1];
|
||||
|
||||
@@ -807,6 +807,25 @@
|
||||
t.eq(control._originalGeometry, undefined, "original geometry deleted once it is set on the modified property");
|
||||
}
|
||||
|
||||
function test_createVertices(t) {
|
||||
t.plan(2);
|
||||
var layer = new OpenLayers.Layer.Vector();
|
||||
var control = new OpenLayers.Control.ModifyFeature(layer, {
|
||||
createVertices: false
|
||||
});
|
||||
var line = new OpenLayers.Geometry.LineString([
|
||||
new OpenLayers.Geometry.Point(5, 6),
|
||||
new OpenLayers.Geometry.Point(7, 8),
|
||||
new OpenLayers.Geometry.Point(9, 10)
|
||||
]);
|
||||
control.feature = new OpenLayers.Feature.Vector(line);
|
||||
control.resetVertices();
|
||||
|
||||
t.eq(control.vertices.length, 3, "Correct vertices length with createVertices is false");
|
||||
t.eq(control.virtualVertices.length, 0, "Correct virtual vertices length with createVertices is false");
|
||||
control.destroy();
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Reference in New Issue
Block a user