美文网首页
java计算两个GPS坐标之间的距离

java计算两个GPS坐标之间的距离

作者: Aaha | 来源:发表于2022-06-14 17:04 被阅读0次
1. 距离计算工具类
public class CoordinateUtil {
    // WGS84标准参考椭球中的地球长半径(单位:米)
    private static final double EARTH_RADIUS_WGS84 = 6378137.0
    
     /**
     * 计算两个坐标的距离(粗略计算,单位:米)
     * 计算公式参照 google map 的距离计算
     *
     * @param lat1 坐标1纬度
     * @param lng1 坐标1经度
     * @param lat2 坐标2纬度
     * @param lng2 坐标2经度
     * @return
     */
    public static double distance(double lat1, double lng1, double lat2, double lng2) {

        double radLat1 = Math.toRadians(lat1);
        double radLat2 = Math.toRadians(lat2);

        double a = radLat1 - radLat2;
        double b = Math.toRadians(lng1) - Math.toRadians(lng2);

        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
                Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));

        return Math.round(s * EARTH_RADIUS_WGS84);

    }
}
2. 测试用例
@Test
public void testDistance(){
    // 重庆机场到济南直线距离:  1252公里 778英里 676海里(网上查的粗略数据)
    double distance = CoordinateUtil.distance(29.689173, 106.608192, 36.675807, 117.000923);
    System.out.println(distance);
}

相关文章

网友评论

      本文标题:java计算两个GPS坐标之间的距离

      本文链接:https://www.haomeiwen.com/subject/fkvxvrtx.html