如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)

看标题就会明白,两个经纬度之间真实距离这个一般的地图API有自带方法,直接调用便可得到结果,一般结果都是以米为单位。最近在做android版上的GoogleMap,找了半天API发现没有此类方法,看来只能自己实现了,接下来我就把如何计算两点之间(经纬度)的真实距离的算法写下来,原则上在各种地图版本上都通用,方便大家使用。


Google Map API:https://developers.google.com/maps/documentation/android/



【本文适用于android,ios等各种平台下的地图经纬度测距】


自己实现距离算法:

[java]  view plain copy
  1.     /** 
  2.      * 计算两点之间距离 
  3.      * @param start 
  4.      * @param end 
  5.      * @return 米 
  6.      */  
  7.     public double getDistance(LatLng start,LatLng end){  
  8.         double lat1 = (Math.PI/180)*start.latitude;  
  9.         double lat2 = (Math.PI/180)*end.latitude;  
  10.           
  11.         double lon1 = (Math.PI/180)*start.longitude;  
  12.         double lon2 = (Math.PI/180)*end.longitude;  
  13.           
  14. //      double Lat1r = (Math.PI/180)*(gp1.getLatitudeE6()/1E6);  
  15. //      double Lat2r = (Math.PI/180)*(gp2.getLatitudeE6()/1E6);  
  16. //      double Lon1r = (Math.PI/180)*(gp1.getLongitudeE6()/1E6);  
  17. //      double Lon2r = (Math.PI/180)*(gp2.getLongitudeE6()/1E6);  
  18.           
  19.         //地球半径  
  20.         double R = 6371;  
  21.           
  22.         //两点间距离 km,如果想要米的话,结果*1000就可以了  
  23.         double d =  Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1))*R;  
  24.           
  25.         return d*1000;  
  26.     }  


举例:(我使用的百度地图的经纬度数据)

[java]  view plain copy
  1. LatLng start = new LatLng(39.95676116.401394);  
  2. LatLng end = new LatLng(36.63014,114.499574);  
  3. getDistance(start, end);  

log日志结果为:402.21321(km)



害怕不准确的话,可以打开百度地图首页,使用测距工具:

如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)_第1张图片

看图应该知道,应该没什么问题吧。




版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等))