我在具有多个特征的矢量图层上启用了修改交互。将功能移到新位置可以很好地工作。但是,如果在同一个坐标上有更多的特征,那么所有的特征都会同时移动。 See example on codepen。Openlayers 4 - 在同一坐标下修改交互和多个特征
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
})
});
有没有办法避免这种情况?我发现的唯一的解决方案是:
- 我有一个选择互为作用,选择功能
- 使用翻译互动移动的特点之一
或
- 在指针移动事件并检测一个或多个特征是否在坐标上,然后选择其中一个
- 添加所选功能以修改要素图层并移动它
还有其他方法吗?
Regrads RM
您已有2种解决方案。您寻找其他解决方案的原因有哪些? –
第一个解决方案需要额外的点击(选择点击),我想避免。当从一层到另一层移动特征时,secound需要进行bookeping,这使得代码更加复杂,我希望我能保持代码简单。这就是我寻找其他解决方案的原因。 – user7064696