通过两个位置的经纬度,计算两地之间的距离

 

通过两经纬度计算两地之间的距离

友情提示:

  该计算若用于考勤打卡时,使用流量定位的经纬度将是基站的经纬度,使用无线网络定位的经纬最为准确!

 

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;
  }
}

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