工具类
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;
}
}
在接口中传入经纬度,调用该方法即可计算两点间的距离。