From f94b1436d7a28c8e28d010b2cb657ab7c064e353 Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期日, 28 十二月 2025 20:36:38 +0800
Subject: [PATCH] 修改了导航预览

---
 src/zhuye/MapRenderer.java |   44 +++++++++++++++++++++++++++-----------------
 1 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/src/zhuye/MapRenderer.java b/src/zhuye/MapRenderer.java
index c39b39d..e354548 100644
--- a/src/zhuye/MapRenderer.java
+++ b/src/zhuye/MapRenderer.java
@@ -489,10 +489,7 @@
 
         drawMower(g2d);
         
-        // 缁樺埗瀵艰埅棰勮閫熷害锛堝鏋滄鍦ㄥ鑸瑙堬級
-        if (navigationPreviewSpeed > 0 && mower != null && mower.hasValidPosition()) {
-            drawNavigationPreviewSpeed(g2d, scale);
-        }
+        // 宸叉寜闇�姹傜Щ闄わ細涓嶅湪鍓茶崏鏈哄浘鏍囦笂鏂规樉绀洪�熷害
         
         // 缁樺埗娴嬮噺妯″紡锛堝鏋滄縺娲伙級
         if (measurementModeActive) {
@@ -564,16 +561,21 @@
         g2d.setFont(labelFont);
         FontMetrics metrics = g2d.getFontMetrics(labelFont);
         
-        // 璁$畻鏂囧瓧浣嶇疆锛堝湪鍓茶崏鏈哄浘鏍囦笂鏂癸級
+        // 璁$畻鏂囧瓧浣嶇疆锛堝湪鍓茶崏鏈哄浘鏍囨涓婃柟锛岄棿闅�20鍍忕礌鍥哄畾锛�
         int textWidth = metrics.stringWidth(speedText);
         int textHeight = metrics.getHeight();
         int textX = (int)Math.round(screenPos.x - textWidth / 2.0);
-        // 鍦ㄥ壊鑽夋満鍥炬爣涓婃柟锛岀暀鍑轰竴瀹氶棿璺�
-        // 鍥炬爣鍦ㄤ笘鐣屽潗鏍囩郴涓殑澶у皬绾︿负 48 * 0.8 / scale 绫�
-        // 杞崲涓哄睆骞曞儚绱狅細鍥炬爣楂樺害锛堝儚绱狅級= (48 * 0.8 / scale) * scale = 48 * 0.8 = 38.4 鍍忕礌
-        double iconSizePixels = 48.0 * 0.8; // 鍥炬爣鍦ㄥ睆骞曚笂鐨勫ぇ灏忥紙鍍忕礌锛�
-        int spacing = 8; // 闂磋窛锛堝儚绱狅級
-        int textY = (int)Math.round(screenPos.y - iconSizePixels / 2.0 - spacing - textHeight);
+        // 鍦ㄥ壊鑽夋満鍥炬爣姝d笂鏂癸紝闂撮殧20鍍忕礌
+        // 浠巑ower瀵硅薄鑾峰彇鍥炬爣鍦ㄤ笘鐣屽潗鏍囩郴涓殑鍗婂緞锛岀劧鍚庤浆鎹负灞忓箷鍍忕礌
+        double iconWorldRadius = mower.getWorldRadius(scale);
+        double iconSizePixels = Double.isNaN(iconWorldRadius) ? 38.4 : (iconWorldRadius * 2.0 * scale); // 鍥炬爣鍦ㄥ睆骞曚笂鐨勫ぇ灏忥紙鍍忕礌锛�
+        int spacing = 20; // 闂磋窛锛堝儚绱狅級
+        // 鍥炬爣椤堕儴浣嶇疆 = 鍥炬爣涓績Y - 鍥炬爣楂樺害/2
+        double iconTopY = screenPos.y - iconSizePixels / 2.0;
+        // 绮剧‘绾︽潫锛氳鑳屾櫙鐭╁舰鐨勫簳杈逛笌鍥炬爣椤堕儴鐩歌窛鍥哄畾spacing鍍忕礌
+        // 鑳屾櫙搴曡竟 = textY + metrics.getDescent() + 2锛堢煩褰笅鏂瑰唴杈硅窛锛�
+        // 浠� 鑳屾櫙搴曡竟 = iconTopY - spacing锛岃В寰楋細
+        int textY = (int)Math.round(iconTopY - spacing - metrics.getDescent() - 2);
         
         // 缁樺埗鏂囧瓧鑳屾櫙锛堝崐閫忔槑鐧借壊锛屽寮哄彲璇绘�э級
         g2d.setColor(new Color(255, 255, 255, 200));
@@ -1531,15 +1533,23 @@
         
         // 濡傛灉浠庡湴鍧楄幏鍙栧埌浜嗚矾寰勶紝浣跨敤鍦板潡鐨勮矾寰勶紱鍚﹀垯浣跨敤currentPlannedPath
         List<Point2D.Double> pathToDraw = currentPlannedPath;
+        List<Boolean> flags = null;
         if (plannedPathStr != null && !plannedPathStr.trim().isEmpty() && !"-1".equals(plannedPathStr.trim())) {
-            // 浠庡湴鍧楄幏鍙栫殑璺緞
-            pathToDraw = lujingdraw.parsePlannedPath(plannedPathStr);
+            // 浼樺厛瑙f瀽甯︽爣娉ㄦ牸寮�
+            lujingdraw.ParsedPath parsed = lujingdraw.parsePlannedPathWithFlags(plannedPathStr);
+            pathToDraw = parsed.points;
+            flags = parsed.isMowingFlags;
         }
-        
-        // 璋冪敤甯﹀湴鍧椾俊鎭殑缁樺埗鏂规硶
+
+        // 璋冪敤甯﹀湴鍧椾俊鎭殑缁樺埗鏂规硶锛堝鏈夋爣娉ㄤ紭鍏堜娇鐢級
         if (pathToDraw != null && pathToDraw.size() >= 2) {
-            lujingdraw.drawPlannedPath(g2d, pathToDraw, scale, arrowScale, 
-                                   boundaryCoords, mowingWidth, safetyDistance, obstaclesCoords, mowingPattern);
+            if (flags != null && flags.size() == pathToDraw.size() - 1) {
+                lujingdraw.drawPlannedPath(g2d, pathToDraw, flags, scale, arrowScale,
+                        boundaryCoords, mowingWidth, safetyDistance, obstaclesCoords, mowingPattern);
+            } else {
+                lujingdraw.drawPlannedPath(g2d, pathToDraw, scale, arrowScale,
+                        boundaryCoords, mowingWidth, safetyDistance, obstaclesCoords, mowingPattern);
+            }
         }
     }
 

--
Gitblit v1.10.0