根据两点经纬度获取两点距离

根据两点经纬度获取两点距离

import java.awt.geom.Point2D;


public class AmapUtils {
    private static final double EARTH_RADIUS = 6371393; // 平均半径,单位:m
    public static void main(String[] args) {
        // 地点一
        Point2D pointDD = new Point2D.Double(123.463274, 41.806984);
        // 地点二
        Point2D pointXD = new Point2D.Double(123.464215, 41.801535);
        System.out.println(getDistance(pointDD, pointXD));
    }

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

        // 公式中“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); // 反余弦值
        //int km= EARTH_RADIUS * acos;
        Double b=EARTH_RADIUS * acos/1000;
        return String.format("%.1f", b); // 最终结果 保留以为小数

    }

}

你可能感兴趣的:(根据两点经纬度获取两点距离)