下面的语句:
Openlayers不能't修改绘制的特征
我已经构建了一些代码,它允许我编辑我绘制的特征的节点:
var modifyInteraction = new ol.interaction.Modify({
features: selectInteraction.getFeatures(),
deleteCondition: function(event) {
return ol.events.condition.shiftKeyOnly(event) &&
ol.events.condition.singleClick(event);
}
});
map.addInteraction(modifyInteraction);
然而,我失去了拖动特性的选项,这是由以下代码定义的:
var translateInteraction = new ol.interaction.Translate({
features: selectInteraction.getFeatures(),
});
map.addInteraction(translateInteraction);
new ol.interaction.Translate({
已关闭,否则我无法编辑我的功能,但我只能拖动它们。
当我可以像上面的代码new ol.interaction.Modify({
中定义的那样编辑它们时,是否有机会使我的功能可拖动?
我的完整文件在这里:
https://jsfiddle.net/g196cqoa/
您可以为翻译交互添加一个条件选项,以便仅在按下ctrl键时交互。
var modifyInteraction = new ol.interaction.Modify({
features: selectInteraction.getFeatures(),
deleteCondition: function(event) {
return ol.events.condition.shiftKeyOnly(event) &&
ol.events.condition.singleClick(event);
},
});
map.addInteraction(modifyInteraction);
const translate = new ol.interaction.Translate({
features: selectInteraction.getFeatures(),
condition: function (event) {
return ol.events.condition.platformModifierKeyOnly(event) &&
ol.events.condition.primaryAction(event);
},
});
map.addInteraction(translate);
或者,如果您在修改交互之前添加翻译交互,它应该允许您拖动多边形,只要您远离边缘。这对线和点不起作用。因为没有不能修改几何形状的区域。
将交互添加到映射交互集合的顺序决定是否允许修改交互在翻译交互处理事件之前查看和处理事件