New createVertices option for Control.ModifyFeature
This commit is contained in:
@@ -96,6 +96,7 @@
|
|||||||
if (rotate || drag) {
|
if (rotate || drag) {
|
||||||
controls.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
|
controls.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
|
||||||
}
|
}
|
||||||
|
controls.modify.createVertices = document.getElementById("createVertices").checked;
|
||||||
var sides = parseInt(document.getElementById("sides").value);
|
var sides = parseInt(document.getElementById("sides").value);
|
||||||
sides = Math.max(3, isNaN(sides) ? 0 : sides);
|
sides = Math.max(3, isNaN(sides) ? 0 : sides);
|
||||||
controls.regular.handler.sides = sides;
|
controls.regular.handler.sides = sides;
|
||||||
@@ -161,6 +162,11 @@
|
|||||||
onclick="toggleControl(this);" />
|
onclick="toggleControl(this);" />
|
||||||
<label for="modifyToggle">modify feature</label>
|
<label for="modifyToggle">modify feature</label>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>
|
||||||
|
<input id="createVertices" type="checkbox" checked
|
||||||
|
name="createVertices" onchange="update()" />
|
||||||
|
<label for="createVertices">allow vertices creation</label>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<input id="rotate" type="checkbox"
|
<input id="rotate" type="checkbox"
|
||||||
name="rotate" onchange="update()" />
|
name="rotate" onchange="update()" />
|
||||||
|
|||||||
@@ -137,6 +137,13 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
*/
|
*/
|
||||||
mode: null,
|
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
|
* Property: modified
|
||||||
* {Boolean} The currently selected feature has been 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
|
// 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) {
|
for(i=0, len=geometry.components.length; i<len-1; ++i) {
|
||||||
var prevVertex = geometry.components[i];
|
var prevVertex = geometry.components[i];
|
||||||
var nextVertex = geometry.components[i + 1];
|
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");
|
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>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
Reference in New Issue
Block a user