From 48ee74129bb09a817a0bbbabe860c4007b74c66b Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期日, 21 十二月 2025 12:37:44 +0800
Subject: [PATCH] 新增了往返路径

---
 src/zhangaiwu/yulanzhangaiwu.java |   43 ++++++++++++-------------------------------
 1 files changed, 12 insertions(+), 31 deletions(-)

diff --git a/src/zhangaiwu/yulanzhangaiwu.java b/src/zhangaiwu/yulanzhangaiwu.java
index c79ee83..14b266a 100644
--- a/src/zhangaiwu/yulanzhangaiwu.java
+++ b/src/zhangaiwu/yulanzhangaiwu.java
@@ -12,6 +12,7 @@
 import java.util.List;
 import java.util.Locale;
 
+import javax.swing.JDialog;
 import javax.swing.SwingUtilities;
 
 import zhuye.Coordinate;
@@ -20,7 +21,9 @@
 /**
  * 鍦ㄥ湴鍥句笂瀹炴椂棰勮姝e湪缁樺埗鐨勯殰纰嶇墿銆�
  */
-public final class yulanzhangaiwu {
+import publicway.Gpstoxuzuobiao;
+
+public class yulanzhangaiwu extends JDialog {
     private static final Object LOCK = new Object();
     private static final double METERS_PER_DEGREE_LAT = 111320.0d;
     private static final Color PREVIEW_LINE_COLOR = new Color(0, 123, 255, 200);
@@ -65,6 +68,11 @@
             return;
         }
 
+        // 鍘绘帀鍦嗗舰闅滅鐗╃殑瀹炴椂棰勮鍔熻兘
+        if ("circle".equals(snapshot.shape)) {
+            return;
+        }
+
         Color originalColor = g2d.getColor();
         Stroke originalStroke = g2d.getStroke();
         try {
@@ -78,11 +86,7 @@
             );
             Stroke solidStroke = new BasicStroke((float) (1.4f / scale), BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
 
-            if ("circle".equals(snapshot.shape) && snapshot.circle != null) {
-                drawCirclePreview(g2d, snapshot, dashedStroke, scale);
-            } else {
-                drawPolygonPreview(g2d, snapshot, dashedStroke, solidStroke, scale);
-            }
+            drawPolygonPreview(g2d, snapshot, dashedStroke, solidStroke, scale);
         } finally {
             g2d.setColor(originalColor);
             g2d.setStroke(originalStroke);
@@ -228,34 +232,11 @@
     }
 
     private static double parseDMToDecimal(String dmm, String direction) {
-        if (dmm == null || dmm.trim().isEmpty()) {
-            return Double.NaN;
-        }
-        try {
-            String trimmed = dmm.trim();
-            int dotIndex = trimmed.indexOf('.');
-            if (dotIndex < 2) {
-                return Double.NaN;
-            }
-            int degrees = Integer.parseInt(trimmed.substring(0, dotIndex - 2));
-            double minutes = Double.parseDouble(trimmed.substring(dotIndex - 2));
-            double decimal = degrees + minutes / 60.0;
-            if ("S".equalsIgnoreCase(direction) || "W".equalsIgnoreCase(direction)) {
-                decimal = -decimal;
-            }
-            return decimal;
-        } catch (NumberFormatException ex) {
-            return Double.NaN;
-        }
+        return Gpstoxuzuobiao.parseDMToDecimal(dmm, direction);
     }
 
     private static double[] convertLatLonToLocal(double lat, double lon, double baseLat, double baseLon) {
-        double deltaLat = lat - baseLat;
-        double deltaLon = lon - baseLon;
-        double meanLatRad = Math.toRadians((baseLat + lat) / 2.0);
-        double eastMeters = deltaLon * METERS_PER_DEGREE_LAT * Math.cos(meanLatRad);
-        double northMeters = deltaLat * METERS_PER_DEGREE_LAT;
-        return new double[]{eastMeters, northMeters};
+        return Gpstoxuzuobiao.convertLatLonToLocal(lat, lon, baseLat, baseLon);
     }
 
     private static CircleState fitCircle(List<double[]> points) {

--
Gitblit v1.10.0