This commit is contained in:
@jyuhsin
2025-10-30 17:38:59 +08:00
parent a5bdf21346
commit ef9b9bc03d
35 changed files with 707 additions and 103 deletions
@@ -0,0 +1,41 @@
package com.budwk.app.base.utils;
/**
* @ClassName DistanceUtils
* @Author JyuHsin
* @Date 2025/10/30 16:22
* @Version 1.0
* @Description TODO
*/
public class DistanceUtils {
private static final double EARTH_RADIUS = 6371000; // 地球半径,单位:米
/**
* 计算两个经纬度之间的距离(单位:米)
* @param lat1 纬度1(单位:度)
* @param lng1 经度1(单位:度)
* @param lat2 纬度2(单位:度)
* @param lng2 经度2(单位:度)
* @return 距离(米)
*/
public static double getDistance(double lat1, double lng1, double lat2, double lng2) {
// 将角度转为弧度
double lat1Rad = Math.toRadians(lat1);
double lng1Rad = Math.toRadians(lng1);
double lat2Rad = Math.toRadians(lat2);
double lng2Rad = Math.toRadians(lng2);
// 纬度和经度的差值(弧度)
double deltaLat = lat2Rad - lat1Rad;
double deltaLng = lng2Rad - lng1Rad;
// Haversine 公式
double a = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2)
+ Math.cos(lat1Rad) * Math.cos(lat2Rad)
* Math.sin(deltaLng / 2) * Math.sin(deltaLng / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return EARTH_RADIUS * c; // 返回米
}
}