獲取經緯度之間兩點間真實距離(適用於GoogleMap,BaiduMap,Amap等)


如何獲取經緯度之間兩點間真實距離(適用於GoogleMap,BaiduMap,Amap等)

看標題就會明白,兩個經緯度之間真實距離這個一般的地圖API有自帶方法,直接調用便可得到結果,一般結果都是以米為單位。最近在做Android版上的GoogleMap,找了半天API發現沒有此類方法,看來只能自己實現了,接下來我就把如何計算兩點之間(經緯度)的真實距離的算法寫下來,原則上在各種地圖版本上都通用,方便大家使用。

 

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

 

 

【本文適用於android,iOS等各種平台下的地圖經緯度測距】

 

自己實現距離算法:

/** 
     * 計算兩點之間距離 
     * @param start 
     * @param end 
     * @return*/  
    public double getDistance(LatLng start,LatLng end){  
        double lat1 = (Math.PI/180)*start.latitude;  
        double lat2 = (Math.PI/180)*end.latitude;  
          
        double lon1 = (Math.PI/180)*start.longitude;  
        double lon2 = (Math.PI/180)*end.longitude;  
          
//      double Lat1r = (Math.PI/180)*(gp1.getLatitudeE6()/1E6);  
//      double Lat2r = (Math.PI/180)*(gp2.getLatitudeE6()/1E6);  
//      double Lon1r = (Math.PI/180)*(gp1.getLongitudeE6()/1E6);  
//      double Lon2r = (Math.PI/180)*(gp2.getLongitudeE6()/1E6);  
          
        //地球半徑  
        double R = 6371;  
          
        //兩點間距離 km,如果想要米的話,結果*1000就可以了  
        double d =  Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1))*R;  
          
        return d*1000;  
    }  

 

舉例:(我使用的百度地圖的經緯度數據)

 
LatLng start = new LatLng(39.95676, 116.401394);  
LatLng end = new LatLng(36.63014,114.499574);  
getDistance(start, end);  

 

log日志結果為:402.21321(km)

 

害怕不准確的話,可以打開百度地圖首頁,使用測距工具:

看圖應該知道,應該沒什么問題吧。

 

公式推導過程見:https://blog.csdn.net/xiejm2333/article/details/73297004


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM