Хорошо, пропустите управление ModifyFeature
и просто подключите управление SelectFeature
, чтобы отслеживать выбранные функции, а затем используйте команду DragControl
для одновременного управления выбранными точками.
Пример управления конкретизации:
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
});
Пример обработки события функции:
/* 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;
}
}
Спасибо за это - это работает для меня также, не ожидал, что когда-то особенности оттащили, они больше не«выбирается»из окна выбора, и не могут быть перемещены снова. У вас была эта проблема? – 2011-02-14 10:53:42
Спасибо за простой пример, мне потребовался почти день, чтобы найти простой пример перетаскивания и событий. Это здорово! Я не использую его для нескольких функций, но для 1. – Marco 2011-04-07 09:49:01