private Double get_distanse(locate a,locate b){
Double result=0.00;
Double ra=6378140.0;
Double rb=6356755.0;
Double lat_a=Math.toRadians(a.getLatitude());
Double lat_b=Math.toRadians(b.getLatitude());
Double lon_a=Math.toRadians(a.getLongitude());
Double lon_b=Math.toRadians(b.getLongitude());
double pa = Math.atan(rb / ra * Math.tan(lat_a));
double pb = Math.atan(rb / ra * Math.tan(lat_b));
double x = Math.acos(Math.sin(pa) * Math.sin(pb) + Math.cos(pa) * Math.cos(pb) * Math.cos(lon_a - lon_b));
double c1 = (Math.sin(x) - x) * Math.pow((Math.sin(pa) + Math.cos(pb)), 2) / Math.pow(Math.cos(x / 2), 2);
double c2 = (Math.sin(x) - x) * Math.pow((Math.sin(pa) - Math.cos(pb)), 2) / Math.pow(Math.cos(x / 2), 2);
double flatten = (ra - rb) / ra;
double dr = flatten / 8 * (c1 - c2);
result=ra*(x+dr);
result=result/1000;
return result;
}
经纬度转换为距离
最新推荐文章于 2022-07-22 11:40:45 发布