最近做了个小东东,需要计算两点经纬度间的距离,搜不少资料,这个经过多次试修改
验证明是比较准的,现在把方法列出如下
注意:
- 其中Lat1 Lng1 表示A点经纬度,Lat2 Lng2 表示B点经纬度
- a=Lat1 – Lat2 为两点纬度之差 b=Lng1 -Lng2 为两点经度之差
- 6378.137为地球半径,单位为千米;计算出来的结果单位为千米
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 * 10000) / 10