我在具有多個特徵的矢量圖層上啓用了修改交互。將功能移到新位置可以很好地工作。但是,如果在同一個座標上有更多的特徵,那麼所有的特徵都會同時移動。 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