线段交点附近最近航点识别不准确问题求助
遇到的问题
当选中点位于多条线段交点附近时,当前查找最近航点的方法可能无法准确识别真正的最近航点。这是因为该函数仅依赖点击点与航点坐标之间的距离,而未考虑每个航点关联的lineStrings。
我愿意采纳替代方案建议,例如使用空间索引或其他算法。

当前查找点击点最近航点的实现方式
我使用Turf.js在特定点之间绘制lineStrings。我拥有一个航点数组,目前通过对比点击点坐标与每个航点坐标来查找最近航点。我使用turf.pointOnLine()函数将点击坐标转换为lineString上的点,再通过findClosestWaypoint()函数查找最近航点。
查找最近航点的代码实现
const findClosestWaypoint = (clickedCoordinates) => { let closestWaypoint = null; let minDistance = Infinity; waypoints.forEach((waypoint) => { const distance = turf.distance( turf.point([waypoint.longitude, waypoint.latitude]), turf.point(clickedCoordinates) ); if (distance < minDistance) { minDistance = distance; closestWaypoint = waypoint; } }); return closestWaypoint; };
后续最近航点的使用代码
const clickedLineStringPoint = turf.pointOnLine(lineStrings, [coordinates.lng, coordinates.lat]); const clickedCoordinates = clickedLineStringPoint.geometry.coordinates; const closestWaypoint = findClosestWaypoint(clickedCoordinates);
内容的提问来源于stack exchange,提问作者ristol
相关产品推荐
相关产品推荐

