计算两个经纬度的距离

GPS设备得到的经(dddmm.mmmm)纬(ddmm.mmmm)需要将分转换为度
在线转换工具地址:http://www.storyday.com/wp-content/uploads/2008/09/latlung_dis.html

以下参数的经纬度,单位为度

  /** 计算两个经纬度的距离
 * @param lat1
 *            维度1
 * @param lon1
 *            经度1
 * @param lat2
 *            维度2
 * @param lon2
 *            经度2
 * @return 距离(单位米)
 */
double distance(double lat1, double lon1, double lat2, double lon2) {
    double theta = lon1 - lon2;
    double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2))
            + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
    dist = Math.acos(dist);
    dist = rad2deg(dist);
    double miles = dist * 60 * 1.1515;
    // 转换成公里,乘以1.609344
    // LogUtil.info("distance=" + miles * 1.609344 * 1000+"(m)");// 英里
    return miles * 1.609344 * 1000/* miles */;
}

// 将角度转换为弧度
static double deg2rad(double degree) {
    return degree / 180 * Math.PI;
}

// 将弧度转换为角度
static double rad2deg(double radian) {
    return radian * 180 / Math.PI;
}

测试代码:

public static void main(String args[]) { GPSUtil gpsUtil = new GPSUtil(null); System.out.println(gpsUtil.distance(22.97940, 113.89693, 22.97950, 113.89716)); //结果为26.037684117133875 }

你可能感兴趣的:(计算两个经纬度的距离)