From 0e77cd7385ea6a55c2a8583600abdf53c781cdf5 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期三, 24 十二月 2025 17:06:17 +0800
Subject: [PATCH] 新增了找回密码功能
---
src/dikuai/addzhangaiwu.java | 77 ++++++++++++++++++++------------------
1 files changed, 40 insertions(+), 37 deletions(-)
diff --git a/src/dikuai/addzhangaiwu.java b/src/dikuai/addzhangaiwu.java
index 6c69177..f914ce4 100644
--- a/src/dikuai/addzhangaiwu.java
+++ b/src/dikuai/addzhangaiwu.java
@@ -46,21 +46,20 @@
import baseStation.BaseStation;
import gecaoji.Device;
+import publicway.buttonset;
import set.Setsys;
import ui.UIConfig;
import zhuye.Coordinate;
import zhuye.MapRenderer;
import zhuye.Shouye;
-import zhangaiwu.AddDikuai;
import zhangaiwu.Obstacledge;
import zhangaiwu.yulanzhangaiwu;
-import zhuye.buttonset;
-import bianjie.bianjieguihua2;
-import bianjie.ThreePointCircle;
-
+import bianjie.Bianjieyouhuatoxy;
/**
* 闅滅鐗╂柊澧�/缂栬緫瀵硅瘽妗嗐�傝璁¤瑷�鍙傝�� {@link AddDikuai}锛屾敮鎸侀�氳繃瀹炲湴缁樺埗閲囬泦闅滅鐗╁潗鏍囥��
*/
+import publicway.Gpstoxuzuobiao;
+
public class addzhangaiwu extends JDialog {
private static final long serialVersionUID = 1L;
private static final double METERS_PER_DEGREE_LAT = 111320.0d;
@@ -1217,34 +1216,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 CircleFitResult fitCircleFromPoints(List<double[]> points) {
@@ -1359,7 +1335,7 @@
}
if (!configMap.isEmpty()) {
List<ExistingObstacle> remaining = new ArrayList<>(configMap.values());
- remaining.sort(Comparator.comparing(ExistingObstacle::getName, String.CASE_INSENSITIVE_ORDER));
+ remaining.sort((a, b) -> String.CASE_INSENSITIVE_ORDER.compare(a.getName(), b.getName()));
result.addAll(remaining);
}
if (result.isEmpty()) {
@@ -1907,14 +1883,13 @@
List<Coordinate> savedCoordinates = new ArrayList<>(Coordinate.coordinates);
try {
- // 璁剧疆鍒板叏灞�鍧愭爣鍒楄〃
- Coordinate.coordinates.clear();
- Coordinate.coordinates.addAll(coordinateList);
+ // 鏋勫缓杈圭晫瀛楃涓诧紝鏍煎紡涓� "(lat1,lon1,alt1;lat2,lon2,alt2;...)"
+ String boundaryStr = buildBoundaryStringForOptimization(coordinateList);
- // 璋冪敤bianjieguihua2绠楁硶鐢熸垚浼樺寲鍚庣殑澶氳竟褰㈣竟鐣屽潗鏍�
- String optimizedCoordsStr = bianjieguihua2.processCoordinateListAuto(baseStation);
+ // 璋冪敤 Bianjieyouhuatoxy.optimizeBoundary 鏂规硶鐢熸垚浼樺寲鍚庣殑澶氳竟褰㈣竟鐣屽潗鏍�
+ String optimizedCoordsStr = Bianjieyouhuatoxy.optimizeBoundary(baseStation, boundaryStr);
- if (optimizedCoordsStr == null || optimizedCoordsStr.trim().isEmpty()) {
+ if (optimizedCoordsStr == null || optimizedCoordsStr.trim().isEmpty() || optimizedCoordsStr.startsWith("ERROR")) {
JOptionPane.showMessageDialog(this, "鐢熸垚杈圭晫鍧愭爣澶辫触", "閿欒", JOptionPane.ERROR_MESSAGE);
return;
}
@@ -1992,6 +1967,34 @@
}
/**
+ * 鏋勫缓鐢ㄤ簬浼樺寲鐨勮竟鐣屽瓧绗︿覆锛屾牸寮忎负 "(lat1,lon1,alt1;lat2,lon2,alt2;...)"
+ * 鍏朵腑lat鍜宭on鏄害鍒嗘牸寮忥紙DMM鏍煎紡锛夛紝渚嬪 "3949.89151752"
+ */
+ private String buildBoundaryStringForOptimization(List<Coordinate> coordinates) {
+ if (coordinates == null || coordinates.isEmpty()) {
+ return "()";
+ }
+ StringBuilder sb = new StringBuilder("(");
+ java.text.DecimalFormat elevationFormat = new java.text.DecimalFormat("0.00");
+ for (int i = 0; i < coordinates.size(); i++) {
+ Coordinate coord = coordinates.get(i);
+ // Coordinate绫讳腑鐨刧etLatitude()鍜実etLongitude()宸茬粡杩斿洖搴﹀垎鏍煎紡锛圖MM鏍煎紡锛�
+ String latDMM = coord.getLatitude();
+ String lonDMM = coord.getLongitude();
+ double elevation = coord.getElevation();
+
+ if (i > 0) {
+ sb.append(";");
+ }
+ sb.append(latDMM).append(",")
+ .append(lonDMM).append(",")
+ .append(elevationFormat.format(elevation));
+ }
+ sb.append(")");
+ return sb.toString();
+ }
+
+ /**
* 棰勮闅滅鐗╄竟鐣�
*/
private void previewObstacleBoundary() {
--
Gitblit v1.10.0