根据两个点的经纬度值计算这两个点之间的距离,返回距离单位米。
/**
* 地球半径,单位 km
*/
private static final double EARTH_RADIUS = 6378.137;
/**
* 计算两点之间的距离
*
* @param lon 第一个点的经度
* @param lat 第一个点的纬度
* @param dLon 第二个点的经度
* @param dLat 第二个点的纬度
* @return
*/
private double getDistance(double lon, double lat, double dLon, double dLat) {
// 纬度
double lat1 = Math.toRadians(lon);
double lat2 = Math.toRadians(dLon);
// 经度
double lng1 = Math.toRadians(lat);
double lng2 = Math.toRadians(dLat);
// 纬度之差
double a = lat1 - lat2;
// 经度之差
double b = lng1 - lng2;
// 计算两点距离的公式
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
// 弧长乘地球半径, 返回单位: 千米
s = s * EARTH_RADIUS;
double sMeter = s * 1000;
BigDecimal bd = new BigDecimal(sMeter);
double dis = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();//单位: 米
return dis;
}