package com.czg.utils;

import org.springframework.stereotype.Component;

/**
 * @author Administrator
 */
@Component
public class GeoUtil {
    // 地球半径，单位：公里
    private static final double EARTH_RADIUS = 6371.0;

    /**
     * 计算两点之间的球面距离
     * @param lat1 第一个点的纬度
     * @param lon1 第一个点的经度
     * @param lat2 第二个点的纬度
     * @param lon2 第二个点的经度
     * @return 距离（单位：米）
     */
    public static double getDistance(double lat1, double lon1, double lat2, double lon2) {
        // 将角度转换为弧度
        double radLat1 = Math.toRadians(lat1);
        double radLat2 = Math.toRadians(lat2);
        double deltaLat = radLat2 - radLat1;
        double deltaLon = Math.toRadians(lon2 - lon1);

        // Haversine 公式
        double a = Math.pow(Math.sin(deltaLat / 2), 2) +
                Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLon / 2), 2);
        double c = 2 * Math.asin(Math.sqrt(a));

        // 计算距离（米）
        return EARTH_RADIUS * c * 1000;
    }

}
