From ed6936545d20cc490145d2936cee4387be2afd53 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期一, 22 十二月 2025 19:04:34 +0800
Subject: [PATCH] 优化了导航预览模式

---
 src/gecaoji/Gecaoji.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/gecaoji/Gecaoji.java b/src/gecaoji/Gecaoji.java
index 2aca713..d47353c 100644
--- a/src/gecaoji/Gecaoji.java
+++ b/src/gecaoji/Gecaoji.java
@@ -49,6 +49,11 @@
     }
 
     public void refreshFromDevice() {
+        // 妫�鏌ユ槸鍚︽鍦ㄥ鑸瑙堟ā寮忥紝濡傛灉鏄垯涓嶆洿鏂颁綅缃�
+        if (isNavigating()) {
+            return;
+        }
+        
         Device device = Device.getGecaoji();
         if (device == null) {
             positionValid = false;
@@ -69,6 +74,22 @@
         positionValid = true;
         headingDegrees = heading;
     }
+    
+    /**
+     * 妫�鏌ユ槸鍚︽鍦ㄥ鑸瑙堟ā寮�
+     * @return 濡傛灉姝e湪瀵艰埅棰勮杩斿洖true锛屽惁鍒欒繑鍥瀎alse
+     */
+    private boolean isNavigating() {
+        try {
+            dikuai.daohangyulan nav = dikuai.daohangyulan.getInstance();
+            if (nav != null) {
+                return nav.isNavigating();
+            }
+        } catch (Exception e) {
+            // 濡傛灉鑾峰彇瀵艰埅瀹炰緥澶辫触锛岃繑鍥瀎alse锛堜笉褰卞搷涓昏鍔熻兘锛�
+        }
+        return false;
+    }
 
     private void ensurePosition() {
         if (position == null) {
@@ -179,6 +200,38 @@
         return new Point2D.Double(position.x, position.y);
     }
 
+    /**
+     * 璁剧疆鍓茶崏鏈轰綅缃紙鐢ㄤ簬瀵艰埅棰勮绛夊満鏅級
+     * @param x X鍧愭爣
+     * @param y Y鍧愭爣
+     */
+    public void setPosition(double x, double y) {
+        ensurePosition();
+        position.x = x;
+        position.y = y;
+        positionValid = true;
+    }
+
+    /**
+     * 璁剧疆鍓茶崏鏈烘柟鍚戯紙鐢ㄤ簬瀵艰埅棰勮绛夊満鏅級
+     * @param headingDegrees 鏂瑰悜瑙掑害锛堝害锛�0-360锛�
+     */
+    public void setHeading(double headingDegrees) {
+        double normalized = headingDegrees % 360.0;
+        if (normalized < 0) {
+            normalized += 360.0;
+        }
+        this.headingDegrees = normalized;
+    }
+
+    /**
+     * 鑾峰彇鍓茶崏鏈烘柟鍚�
+     * @return 鏂瑰悜瑙掑害锛堝害锛�0-360锛�
+     */
+    public double getHeading() {
+        return headingDegrees;
+    }
+
     public double getWorldRadius(double scale) {
         if (!positionValid) {
             return Double.NaN;

--
Gitblit v1.10.0