Openlayers 检查坐标是否位于OL中特征的边界上

Openlayers 检查坐标是否位于OL中特征的边界上,openlayers,openlayers-5,Openlayers,Openlayers 5,我正在使用OpenLayers 5,无法找到一个解决方案来检查给定的坐标是否位于特征的边界上 我使用了map.getFeaturesAtPixel和geometry.intersectsCoordinate,但始终存在一个问题,即如果坐标在特征中,函数也会返回true。我只希望结果是真的,如果坐标在特征的边界上 背景:用户可以在地图上画线并将其与其他功能连接起来(因此我使用ol.interaction.Snap)。当保存时,我想拥有用户“抓拍”的功能。我找不到一个事件或其他东西来告诉我在哪里捕捉

我正在使用OpenLayers 5,无法找到一个解决方案来检查给定的坐标是否位于特征的边界上

我使用了
map.getFeaturesAtPixel
geometry.intersectsCoordinate
,但始终存在一个问题,即如果坐标在特征中,函数也会返回true。我只希望结果是真的,如果坐标在特征的边界上

背景:用户可以在地图上画线并将其与其他功能连接起来(因此我使用
ol.interaction.Snap
)。当保存时,我想拥有用户“抓拍”的功能。我找不到一个事件或其他东西来告诉我在哪里捕捉到了什么特征。因此,我试图找到一个解决方案,以自我提取的特点是连接到新的线,但没有任何工作

我希望这张照片能说明问题。用户绘制新线(蓝色),线在两个多边形中捕捉。画完线后,我想看看这两个特征

欢迎任何帮助


如果没有任何更明显的内置方法来检查几何体上最近的点是否与坐标相同,则应该可以:

var closest = geometry.getClosestPoint(coordinate);
if (closest[0] == coordinate[0] && closest[1] == coordinate[1]) {
   ...
}

您可以使用一个分析库,比如turpjs(),来了解直线是否与多边形相交。例如,使用
lineItersect
()将返回交点。如果只希望使用openlayers,则可以通过将线的每个坐标与多边形的每个坐标进行比较来获得捕捉点。您可以使用
getCoordinates
从几何图形中获取坐标。尝试使用
var closest=geometry.getClosestPoint(坐标);如果(最近的[0]==坐标[0]&&最近的[1]==坐标[1]){…
@Mike很好的提示,谢谢。如果你想写这个作为答案,我会接受的。