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