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 }