From db091e95d9e4c83241fb25f14bd9f36b40e0de1e Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Sat, 27 Sep 2025 23:21:33 +0800
Subject: [PATCH] 地球经纬度
---
oying-system/src/main/java/com/oying/modules/sh/utils/DistanceCalculator.java | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/oying-system/src/main/java/com/oying/modules/sh/utils/DistanceCalculator.java b/oying-system/src/main/java/com/oying/modules/sh/utils/DistanceCalculator.java
new file mode 100644
index 0000000..7b186d0
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/utils/DistanceCalculator.java
@@ -0,0 +1,36 @@
+package com.oying.modules.sh.utils;
+
+/**
+ * @author xin
+ * @description 地球经纬度
+ * @date 2025/9/27 23:15
+ */
+public class DistanceCalculator {
+
+ public static void main(String[] args) {
+ // 测试数据:纽约和洛杉矶的坐标
+ double lat1 = 40.7128, lon1 = -74.0060; // 纽约坐标
+ double lat2 = 34.0522, lon2 = -118.2437; // 洛杉矶坐标
+
+ double distance = calculateHaversineDistance(lat1, lon1, lat2, lon2);
+ System.out.printf("距离: %s 公里%n", distance); // 保留两位小数
+ }
+
+ // 使用Haversine公式计算球面距离
+ public static double calculateHaversineDistance(double lat1, double lon1, double lat2, double lon2) {
+ final int R = 6371; // 地球半径(单位:公里)
+
+ // 将经纬度转换为弧度
+ double latDistance = Math.toRadians(lat2 - lat1);
+ double lonDistance = Math.toRadians(lon2 - lon1);
+
+ double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
+ + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
+ * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
+
+ double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+ double distance = R * c; // 原始距离值
+ // 返回距离(公里)四舍五入保留两位小数
+ return Math.round(distance * 100.0) / 100.0;
+ }
+}
--
Gitblit v1.9.3