我在具有多个功能的矢量图层上启用了修改交互。它可以很好地将功能移动到新位置。但是,如果同一坐标上有更多要素,则所有要素同时移动。 See example on codepen
sudo su
有没有办法避免这种情况?我找到的唯一解决方案是:
或
还有其他方式吗?
Regrads RM
答案 0 :(得分:0)
还有另一种方式。您可以在地图上注册“pointermove”处理程序,在该地图中您可以获得最顶层的功能,并将其设置为修改交互处理的源上的唯一功能。有关完整示例,请参阅https://codepen.io/ahocevar/pen/YxjyRd。
除了在代码中,您将修改交互连接到源而不是集合,并且该源(modifySource
)与矢量图层的源分开并且最初为空。在pointermove
处理程序中,您只需向该源添加一个功能:
function pointermove(e) {
if (e.dragging) {
return;
}
var features = map.getFeaturesAtPixel(e.pixel, {
layerFilter: function(l) {
return l == vector;
}
});
if (features && features[0] != modifySource.getFeatures()[0]) {
modifySource.clear();
modifySource.addFeature(features[0]);
}
}
map.on("pointermove", pointermove);
另请注意,必须先注册此处理程序,然后才能将“修改”交互添加到地图中。