已知两点的经纬度算两点的直线距离

球面距离算法(地球是圆的):地球半径可知

// 计算两点距离 返回单位:米 
private final double EARTH_RADIUS = 6378137.0;    
private double gps2m(double lat_a, double lng_a, double lat_b, double lng_b) {  
       double radLat1 = (lat_a * Math.PI / 180.0);  
       double radLat2 = (lat_b * Math.PI / 180.0);  
       double a = radLat1 - radLat2;  
       double b = (lng_a - lng_b) * Math.PI / 180.0;  
       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;  

   s = Math.Round(s * 10000d) / 10000d;  //银行家舍入法   d:代表double类型

       return s;  

    } 

lng经度:0.01 相当于865.11米

lat纬度:0.01 相当于1113.19米

sql中:

ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(#{lat} * PI() / 180 - dcs.latitude * PI() / 180) / 2
),
2
) + COS(#{lat} * PI() / 180) * COS(dcs.latitude * PI() / 180) * POW(
SIN(
(#{lng} * PI() / 180 - dcs.longitude * PI() / 180) / 2
),
2
)
)
) * 1000
) AS lengthTemp

你可能感兴趣的:(java后台知识)