From 3ca5f28be0a266e57a3ddece80d28072a1811de7 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期四, 25 十二月 2025 16:04:04 +0800
Subject: [PATCH] 解决了点击保存路径的bug

---
 src/zhuye/Coordinate.java |   41 +++++++++++++++++++++--------------------
 1 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/src/zhuye/Coordinate.java b/src/zhuye/Coordinate.java
index af2c5b3..644953d 100644
--- a/src/zhuye/Coordinate.java
+++ b/src/zhuye/Coordinate.java
@@ -79,34 +79,24 @@
 
 
 	/**
-	 * 瑙f瀽GNGGA鏁版嵁杩斿洖Coordinate瀵硅薄鍒楄〃锛堝寮虹増锛屽寘鍚珮绋嬫暟鎹級
+	 * 瑙f瀽GNGGA/GPGGA/GBGGA鏁版嵁杩斿洖Coordinate瀵硅薄鍒楄〃锛堝寮虹増锛屽寘鍚珮绋嬫暟鎹級
 	 */
 	public static void parseGNGGAToCoordinateList(String gnggaData) {	
 		if (!isStartSaveGngga || gnggaData == null || gnggaData.isEmpty()) {
 			return;
 		}
 
-		// 澶勭悊瀹屾暣鐨凣NGGA鏁版嵁锛堝彲鑳藉寘鍚�$GNGGA鍓嶇紑锛�
 		String cleaned = gnggaData.trim();
-		if (cleaned.startsWith("$GNGGA")) {
-			// 濡傛灉鏁版嵁浠�$GNGGA寮�澶达紝鐩存帴瑙f瀽
-			String record = cleaned.substring("$GNGGA".length());
+		// 浣跨敤姝e垯鍒嗗壊鏀寔澶氱澶撮儴
+		String[] records = cleaned.split("\\$(GN|GP|GB)GGA");
+		for (String record : records) {
+			if (record == null || record.trim().isEmpty()) {
+				continue;
+			}
 			Coordinate coord = parseSingleGnggaRecord(record, false);
 			if (coord != null) {
 				coordinates.add(coord);
 			}
-		} else {
-			// 澶勭悊鍙兘鍖呭惈澶氫釜$GNGGA璁板綍鐨勬儏鍐�
-			String[] records = cleaned.split("\\$GNGGA");
-			for (String record : records) {
-				if (record == null || record.trim().isEmpty()) {
-					continue;  // 璺宠繃绌哄瓧绗︿覆锛坰plit浜х敓鐨勭涓�涓厓绱犲彲鑳芥槸绌虹殑锛�
-				}
-				Coordinate coord = parseSingleGnggaRecord(record, false);
-				if (coord != null) {
-					coordinates.add(coord);
-				}
-			}
 		}
 	}
 
@@ -123,9 +113,19 @@
 			return null;
 		}
 
-		int markerIndex = cleaned.indexOf("$GNGGA");
+		int markerIndex = -1;
+		String[] headers = {"$GNGGA", "$GPGGA", "$GBGGA"};
+		
+		// 鎵惧埌鏈�鏃╁嚭鐜扮殑澶撮儴
+		for (String header : headers) {
+			int idx = cleaned.indexOf(header);
+			if (idx >= 0 && (markerIndex == -1 || idx < markerIndex)) {
+				markerIndex = idx;
+			}
+		}
+
 		String record = markerIndex >= 0
-				? cleaned.substring(markerIndex + "$GNGGA".length())
+				? cleaned.substring(markerIndex + 6) // 鎵�鏈夊ご閮ㄩ暱搴﹀潎涓�6
 				: cleaned;
 
 		Coordinate coordinate = parseSingleGnggaRecord(record, true);
@@ -168,7 +168,8 @@
 				return null;
 			}
 
-			if (fixQuality != 4) {
+			// 淇敼涓哄厑璁搁潪RTK鍥哄畾瑙d篃鑳芥樉绀轰綅缃�(鍙涓嶆槸鏃犳晥瀹氫綅0鍗冲彲)
+			if (fixQuality == 0) {
 				return null;
 			}
 

--
Gitblit v1.10.0