通過兩個位置的經緯度,計算兩地之間的距離

 

通過兩經緯度計算兩地之間的距離

友情提示:

  該計算若用於考勤打卡時,使用流量定位的經緯度將是基站的經緯度,使用無線網絡定位的經緯最爲準確!

 

public class CountJinWeiDistanceUtils {

  private static double EARTH_RADIUS = 6378.137; //地球赤道半徑


  private static double rad(double d) {
    return d * Math.PI / 180.0;
  }


  /**
  * 根據兩個位置的經緯度,來計算兩地的距離(單位爲M)
  * 參數爲String類型
  * @param lat1 用戶經度
  * @param lng1 用戶緯度
  * @param lat2 中心經度
  * @param lng2 中心緯度
  * @return
  */
  public static String getDistance(String lat1Str, String lng1Str, String lat2Str, String lng2Str) {
    Double lat1 = Double.parseDouble(lat1Str);
    Double lng1 = Double.parseDouble(lng1Str);
    Double lat2 = Double.parseDouble(lat2Str);
    Double lng2 = Double.parseDouble(lng2Str);

    double radLat1 = rad(lat1);
    double radLat2 = rad(lat2);
    double difference = radLat1 - radLat2;
    double mdifference = rad(lng1) - rad(lng2);
    double distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(difference / 2), 2)
        + Math.cos(radLat1) * Math.cos(radLat2)
        * Math.pow(Math.sin(mdifference / 2), 2)));
    distance = distance * EARTH_RADIUS;
    distance = Math.round(distance * 10000) / 10;
    String distanceStr = distance+"";
    distanceStr = distanceStr.
    substring(0, distanceStr.indexOf("."));
    return distanceStr;
  }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章