gpt4 book ai didi

javascript - 如何使用 OpenLayers 限制现有多边形内的绘制

转载 作者:行者123 更新时间:2023-12-02 23:17:26 29 4
gpt4 key购买 nike

小介绍:我想使用限制层上的捕捉交互来限制现有多边形内的绘制。

我实现了绘图交互条件,检查限制源的功能是否可用,以及它们是否可以在其中启用绘图。

它工作得很好,但限制有点太多。 (例如,如果我想在现有边框上绘制多边形,或者我想使用现有边框在多边形内部绘制)。

示例如下:

new Draw({
condition: (e) => {
let coords = e.coordinate
let features = restrictionSource.getFeaturesAtCoordinate(coords);
if (features.length > 0) {
return true;
} else {
return false;
}
},
type: "Polygon",
source: vectorDrawLayer.getSource(),
style: styleDuringDraw
});

我在限制性多边形内绘制时检测到一些奇怪的行为。在某些边缘上我可以单击,在其他边缘上我不能单击。

在下面的实例中:

https://stackblitz.com/edit/js-txi1es

我无法从右下角(以及顶 Angular )的内边缘开始绘制,由于某种原因,捕捉交互不起作用。我有这样的情况,我需要绘制使用限制性多边形的整个区域的多边形区域,但我不能这样做,因为我的方法有点限制性。

我想知道在这种情况下是否可以使用或推荐任何不同的方法。

最佳答案

第一个问题是你的多边形没有正确闭合,这意味着捕捉不能在一条边上工作:

  'coordinates': [[[-5e6, -1e6], [-4e6, 1e6], [-3e6, -1e6], [-5e6, -1e6]]]

捕捉捕捉到一个像素,似乎该事件中的坐标有时并不完全在特征上,所以这个测试应该更可靠

let features = olMap.getFeaturesAtPixel(e.pixel, { layerFilter: function(layer) { return layer === restrictionLayer; }});
if (features && features.length > 0) {

关于javascript - 如何使用 OpenLayers 限制现有多边形内的绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57112451/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com