java根據(jù)經(jīng)緯度獲取距離

<pre>
// 開發(fā)附近的人需要用到計(jì)算兩點(diǎn)距離。
// 網(wǎng)上找到一個(gè),是Google給出的一個(gè)公式:
</pre>

<pre>

/ **

  • @project 項(xiàng)目:< >
  • @class 類名:<DistanceUtil>
  • @author 創(chuàng)建人:< >
  • @date 創(chuàng)建時(shí)間:<2017下午1:02:51>
  • @comments: 說明:<距離計(jì)算>
    */

public class DistanceUtil {
private static final double EARTH_RADIUS = 6378137;//赤道半徑
private static double rad(double d){
return d * Math.PI / 180.0;
}

/ **
 * 經(jīng)緯度獲取距離
 * @param lon1 第一個(gè)經(jīng)度
 * @param lat1 第一個(gè)緯度
 * @param lon2  
 * @param lat2
 * @return
 */

public static double getDistance(double lon1,double lat1,double lon2, double lat2) {
    double radLat1 = rad(lat1);
    double radLat2 = rad(lat2);
    double a = radLat1 - radLat2;
    double b = rad(lon1) - rad(lon2);
    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;    
   return s/1000;//單位千米
}

public static void main(String[] args){  
    double distance = getDistance(自己的經(jīng)度,自己的緯度,對(duì)方的經(jīng)度,對(duì)方的緯度);  
    System.out.println("Distance is:"+distance);  
}  

}

</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容