From 53aad5698fb113201e79b5cca981bdfb13d23d97 Mon Sep 17 00:00:00 2001
From: jinglun-cloud <jinglun2019@foxmail.com>
Date: 星期二, 05 五月 2026 14:45:44 +0800
Subject: [PATCH] 简化设备长宽计算的实现

---
 src/main/webapp/static/js/basMap/mapTrackGeometry.js |   41 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/src/main/webapp/static/js/basMap/mapTrackGeometry.js b/src/main/webapp/static/js/basMap/mapTrackGeometry.js
index 1fe8db3..6545496 100644
--- a/src/main/webapp/static/js/basMap/mapTrackGeometry.js
+++ b/src/main/webapp/static/js/basMap/mapTrackGeometry.js
@@ -1000,6 +1000,41 @@
   }
 
   /**
+   * 鐜┛锛氭妸 getPositionAfterMove 绛夎繑鍥炵殑 position 鍘嬪埌杞ㄥ甫涓嚎锛涢潪鐜┛鎴栨棤鏁� position 鍘熸牱杩斿洖銆�
+   * @param {{ type: string }} trackInfo
+   * @param {{ x: number, y: number, path?: object }|null|undefined} position
+   * @returns {typeof position}
+   */
+  function applyAnnulusBandCenterToPosition(trackInfo, position) {
+    if (!position || !trackInfo || trackInfo.type !== 'annulus') {
+      return position;
+    }
+    var c = centerAnnulusBandPoint(trackInfo, position.x, position.y, position.path);
+    return Object.assign({}, position, { x: c.x, y: c.y });
+  }
+
+  /**
+   * 娌� pathList 绉诲姩鍚庡啀瀵圭幆绌垮仛杞ㄥ甫涓嚎淇锛堜笌 getPositionAfterMove + applyAnnulusBandCenterToPosition 绛変环锛夈��
+   * @param {{ type: string }} trackInfo
+   * @param {{ x: number, y: number }} point 璧风偣锛涚幆绌夸笂搴斿湪澶栧湀 path 涓�
+   * @param {object[]} pathList
+   * @param {object} path
+   * @param {number} deltaDistance
+   * @param {number} [angle]
+   * @returns {{ x: number, y: number, path: object, angle?: number }} 涓� getPositionAfterMove 杩斿洖褰㈡�佷竴鑷�
+   */
+  function computeFinalPosition(trackInfo, point, pathList, path, deltaDistance, angle) {
+    var position = getPositionAfterMove({
+      point: point,
+      pathList: pathList,
+      path: path,
+      deltaDistance: deltaDistance,
+      angle: angle
+    });
+    return applyAnnulusBandCenterToPosition(trackInfo, position);
+  }
+
+  /**
    * 灏嗗潗鏍囧帇鍥炵幆绌垮鍦� path锛堢洿绾挎鎶曞奖銆佸渾寮ф钀藉埌鍗婂緞涓婏級銆�
    * sprite 宸插仛 centerAnnulusBandPoint 鏃朵笉鑳界洿鎺ヤ綔涓� getPositionAfterMove 鐨勮捣鐐癸紝鍚﹀垯浼氭部銆岀偣鈫掓缁堢偣銆嶆枩绉绘紓绉汇��
    * @param {number} x
@@ -1007,8 +1042,8 @@
    * @param {{ type: string, startX?: number, startY?: number, x?: number, y?: number, radius?: number }|null|undefined} path
    * @returns {{ x: number, y: number }}
    */
-  function snapToAnnulusOuterPath(x, y, path) {
-    if (!path) {
+  function snapToAnnulusOuterPath(trackInfo, x, y, path) {
+    if (!path || trackInfo.type !== 'annulus') {
       return { x: x, y: y };
     }
     if (path.type === 'line') {
@@ -1191,6 +1226,8 @@
     snapToAnnulusOuterPath: snapToAnnulusOuterPath,
     startDrawSmoothedPath: startDrawSmoothedPath,
     getRotate: getRotate,
+    computeFinalPosition:computeFinalPosition,
+    applyAnnulusBandCenterToPosition:applyAnnulusBandCenterToPosition,
     drawCrnDeviceGraphics: drawCrnDeviceGraphics,
     drawRgvDeviceGraphics: drawRgvDeviceGraphics
   };

--
Gitblit v1.9.1