У меня включено взаимодействие изменения на векторном слое с несколькими функциями. Это нормально, чтобы переместить элемент в новое положение. Однако, если на одной координате есть больше объектов, то все они перемещаются одновременно. См. пример на codepen.
var raster = new ol.layer.Tile({
source: new ol.source.OSM()
});
var data = new ol.Collection();
data.push(new ol.Feature({
geometry: new ol.geom.Point([0, 0])
}));
var f = new ol.Feature({
geometry: new ol.geom.Point([0, 0])
});
f.setStyle(new ol.style.Style({
image: new ol.style.Circle({
radius: 10,
fill: new ol.style.Fill({
color: [255, 255, 255, 0.5]
}),
zIndex: Infinity
}),
}));
data.push(f);
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
features: data
})
});
var modify = new ol.interaction.Modify({
features: data
});
var map = new ol.Map({
interactions: ol.interaction.defaults().extend([modify]),
layers: [raster, vector],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 12
})
});
Есть ли способ избежать этого? Единственные решения, которые я нашел:
- У меня есть выбор, чтобы выбрать эту функцию
- Используйте взаимодействие с переводом, чтобы переместить одну из функций
or
- При событии перемещения указателя определите, находится ли одна или несколько функций в координатах, а затем выберите одну из них
- Добавить выбранный объект, чтобы изменить векторный слой и переместить его
Любым другим путем?
Regrads RM