package com.doumee.core.utils; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2025/7/15 9:57 */ public class GeoUtils { // 将角度转换为弧度 private static double toRadians(double angle) { return angle * Math.PI / 180.0; } // 计算两点间的距离(单位:公里) public static double haversineDistance(double lat1, double lon1, double lat2, double lon2) { // 将经纬度转换为弧度 double dLat = toRadians(lat2 - lat1); double dLon = toRadians(lon2 - lon1); lat1 = toRadians(lat1); lat2 = toRadians(lat2); // 应用Haversine公式 double a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2); double c = 2 * Math.asin(Math.sqrt(a)); // 地球半径,单位:公里 int R = 6371; return R * c; } public static void main(String[] args) { double lat1 = 30.660622; // 纽约纬度 double lon1 = 114.172; // 纽约经度 double lat2 = 30.621857; // 洛杉矶纬度 double lon2 = 114.12311; // 洛杉矶经度 double distance = haversineDistance(lat1, lon1, lat2, lon2); System.out.printf("Distance: %.2f km%n", distance); } }