/**
* 计算两个坐标的距离
*
* @param lat1
* @param lng1
* @param lat2
* @param lng2
* @return 单位米
*/
public static double GetDistance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = rad(lat1)
double radLat2 = rad(lat2)
double a = radLat1 - radLat2
double b = rad(lng1) - rad(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)))
s = s * EARTH_RADIUS * 1000
s = new BigDecimal(s).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue()
return s
}
private static double rad(double d) {
return d * Math.PI / 180.0
}
public static double calculateLineDistance(double latitude1, double longitude1, double latitude2, double longitude2) {
try {
double var2 = longitude1
double var4 = latitude1
double var6 = longitude2
double var8 = latitude2
var2 *= 0.01745329251994329D
var4 *= 0.01745329251994329D
var6 *= 0.01745329251994329D
var8 *= 0.01745329251994329D
double var10 = Math.sin(var2)
double var12 = Math.sin(var4)
double var14 = Math.cos(var2)
double var16 = Math.cos(var4)
double var18 = Math.sin(var6)
double var20 = Math.sin(var8)
double var22 = Math.cos(var6)
double var24 = Math.cos(var8)
double[] var28 = new double[3]
double[] var29 = new double[3]
var28[0] = var16 * var14
var28[1] = var16 * var10
var28[2] = var12
var29[0] = var24 * var22
var29[1] = var24 * var18
var29[2] = var20
return (Math.asin(Math.sqrt((var28[0] - var29[0]) * (var28[0] - var29[0]) + (var28[1] - var29[1]) * (var28[1] - var29[1]) + (var28[2] - var29[2]) * (var28[2] - var29[2])) / 2.0D) * 1.27420015798544E7D)
} catch (Throwable var26) {
var26.printStackTrace()
return 0.0
}
}