需要计算地图上两个点的直线距离,查了下百度的官方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; }
需要传入的四个值就是经度纬度经度纬度