jinglun-cloud
1 天以前 64819e1e2254316a090fd056b80f139ca4dbcf94
src/main/webapp/static/js/basMap/mapTrackGeometry.js
@@ -586,6 +586,34 @@
    return count === 2;
  }
  /**
   * 计算点 (sx,sy) 和 (mx,my) 在直线段 path0 上的带符号投影距离差。
   * 返回值 >0 表示 mx,my 在 sx,sy 前方(沿路径方向)。
   * @param {{ type: string, startX: number, startY: number, x: number, y: number }} path0 直线段路径
   * @param {number} sx 起点 x
   * @param {number} sy 起点 y
   * @param {number} mx 终点 x
   * @param {number} my 终点 y
   * @returns {number|null} 带符号距离差,非线段或零长度时返回 null
   */
  function lineSignedRemainAlong(path0, sx, sy, mx, my) {
    if (!path0 || path0.type !== 'line') {
      return null;
    }
    var start = { x: path0.startX, y: path0.startY };
    var end = { x: path0.x, y: path0.y };
    var segLen = calcDistance(start, end);
    if (!(segLen > 0)) {
      return null;
    }
    var vector = normalizeVector(start, end);
    var clampT = function (px, py) {
      var t = ((px - start.x) * vector.x + (py - start.y) * vector.y) * segLen;
      return Math.max(0, Math.min(segLen, t));
    };
    return clampT(mx, my) - clampT(sx, sy);
  }
  function setRadiusInPoint(pointList, sprite) {
    sprite.halfList = [];
    var pointLength = pointList.length;
@@ -1017,6 +1045,7 @@
    startDrawSmoothedPath: startDrawSmoothedPath,
    getRotate: getRotate,
    drawCrnDeviceGraphics: drawCrnDeviceGraphics,
    drawRgvDeviceGraphics: drawRgvDeviceGraphics
    drawRgvDeviceGraphics: drawRgvDeviceGraphics,
    lineSignedRemainAlong: lineSignedRemainAlong
  };
})(typeof window !== 'undefined' ? window : this);