Okay, überspringen Sie das ModifyFeature
Steuerelement und haken Sie einfach in das SelectFeature
Steuerelement, um die ausgewählten Features zu verfolgen und dann DragControl
zu verwenden, um die ausgewählten Punkte gleichzeitig zu bearbeiten.
Beispiel der Steuer Instanziierung:
var drag = new OpenLayers.Control.DragFeature(vectors, {
onStart: startDrag,
onDrag: doDrag,
onComplete: endDrag
});
var select = new OpenLayers.Control.SelectFeature(vectors, {
box: true,
multiple: true,
onSelect: addSelected,
onUnselect: clearSelected
});
Beispiel für die Event-Handling-Funktionen:
/* Keep track of the selected features */
function addSelected(feature) {
selectedFeatures.push(feature);
}
/* Clear the list of selected features */
function clearSelected(feature) {
selectedFeatures = [];
}
/* Feature starting to move */
function startDrag(feature, pixel) {
lastPixel = pixel;
}
/* Feature moving */
function doDrag(feature, pixel) {
for (f in selectedFeatures) {
if (feature != selectedFeatures[f]) {
var res = map.getResolution();
selectedFeatures[f].geometry.move(res * (pixel.x - lastPixel.x), res * (lastPixel.y - pixel.y));
vectors.drawFeature(selectedFeatures[f]);
}
}
lastPixel = pixel;
}
/* Featrue stopped moving */
function endDrag(feature, pixel) {
for (f in selectedFeatures) {
f.state = OpenLayers.State.UPDATE;
}
}
Dank für diese - auch für mich arbeitet, erwartet, dass, sobald die Merkmale gezogen worden sind, sind sie nicht mehr„wählbar“aus dem Auswahlfeld, und nicht wieder bewegt werden kann. Hattest du dieses Problem? –
Danke für das klare Beispiel, es dauerte fast einen Tag, um ein einfaches Beispiel für das Ziehen und Ereignisse zu finden. Dieser ist großartig! Ich benutze es nicht für mehrere Funktionen, sondern für 1. – Marco
Gefunden, verwendet es und es funktioniert :). Also ein großes DANKE! – elrado