今天做公司任务的时候,出现了个问题,需要计算地图上两个点的直线距离,查了下百度的官方API都是计算路程距离,于是乎自己写一个,根据地球的半径等来计算两个经纬度点的直线距离,好了,废话不多说,直接上代码。
public Double Distance(double lat1, double lng1,double lat2, double lng2) {
Double R=6370996.81; //地球的半径
/*
* 获取两点间x,y轴之间的距离
*/
Double x = (lng2 - lng1)*Math.PI*R*Math.cos(((lat1+lat2)/2)*Math.PI/180)/180;
Double y = (lat2 - lat1)*Math.PI*R/180;
Double distance = Math.hypot(x, y); //得到两点之间的直线距离
BigDecimal bg = new BigDecimal(distance);
//保留两位小数
Double lenth = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return lenth;
}
需要传入的四个值就是经度纬度经度纬度,这就不说了。
好了,废话不多说了,就这样。