根据经纬度计算两点间的距离

工具类

import java.awt.geom.Point2D;

public class CalculateDistance {

    // 平均半径,单位:m
    private static final double EARTH_RADIUS = 6371393;

    /**
     * 通过AB点经纬度获取距离
     * 
     * @param pointA A点(经,纬)
     * @param pointB B点(经,纬)
     * @return 距离(单位:米)
     */
    public static double getDistance(Point2D pointA, Point2D pointB) {
        // 经纬度(角度)转弧度。弧度用作参数,以调用Math.cos和Math.sin
        // A经弧度
        double radiansAX = Math.toRadians(pointA.getX());
        // A纬弧度
        double radiansAY = Math.toRadians(pointA.getY());
        // B经弧度
        double radiansBX = Math.toRadians(pointB.getX());
        // B纬弧度
        double radiansBY = Math.toRadians(pointB.getY());

        // 公式中“cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2”的部分,得到∠AOB的cos值
        double cos = Math.cos(radiansAY) * Math.cos(radiansBY) * Math.cos(radiansAX - radiansBX)
                + Math.sin(radiansAY) * Math.sin(radiansBY);
        // 反余弦值
        double acos = Math.acos(cos);
        // 最终结果
        return EARTH_RADIUS * acos;
    }

}

在接口中传入经纬度,调用该方法即可计算两点间的距离。

猜你喜欢

转载自blog.csdn.net/weixin_41146000/article/details/88392760
今日推荐