| 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); | 
|     } | 
|   | 
| } |