You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

线段交点附近最近航点识别不准确问题求助

遇到的问题

当选中点位于多条线段交点附近时,当前查找最近航点的方法可能无法准确识别真正的最近航点。这是因为该函数仅依赖点击点与航点坐标之间的距离,而未考虑每个航点关联的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:53:18