【java】已知两点经纬度,求AB两地的距离
提示:以下是本篇文章正文内容,下面案例可供参考
一、已知两点经纬度,求AB两地的距离 单位(m)
根据两个经纬度点,计算两个点之间的距离 单位(m)
代码如下(示例):
/**
* 求AB两地的距离 单位(m)
* 1000(m) = 1公里(km)
* @param lng_a a经度
* @param lat_a a纬度
* @param lng_b b经度
* @param lat_b b纬度
*/
public static double getDistance(double lng_a, double lat_a, double lng_b, double lat_b) {
double tt = 0;
try{
double pk = 180 / 3.14169;
double a1 = lat_a / pk;
double a2 = lng_a / pk;
double b1 = lat_b / pk;
double b2 = lng_b / pk;
double t1 = Math.cos(a1) * Math.cos(a2) * Math.cos(b1) * Math.cos(b2);
double t2 = Math.cos(a1) * Math.sin(a2) * Math.cos(b1) * Math.sin(b2);
double t3 = Math.sin(a1) * Math.sin(b1);
tt = Math.acos(t1 + t2 + t3);
}catch (Exception e){
e.printStackTrace();
}
return 6371000 * tt;
}
public static void main(String[] args) {
double lng_a = 111.67251974;
double lat_a = 23.91962368;
double lng_b = 111.67201012;
double lat_b = 23.91760211;
double distance = getDistance(lng_a,lat_a,lng_b,lat_b);
System.out.println("distance:"+distance);
}
输出结果(单位米):
distance:230.6867379813376
二、已知两点经纬度,求AB两地的距离 (单位千米)
根据两个经纬度点,计算两个点之间的距离 (单位千米)
代码如下(示例):
/**
* 求AB两地的距离 单位(km)
* @param lng_a a经度
* @param lat_a a纬度
* @param lng_b b经度
* @param lat_b b纬度
*/
public static double getDistance2(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 c = 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)));
c = c * 6378.137;// 6378.137赤道半径
return Math.round(c * 10000d) / 10000d;
}
private static double rad(double d) {
return d * Math.PI / 180.0;
}
public static void main(String[] args) {
double lng_a = 111.67251974;
double lat_a = 23.91962368;
double lng_b = 111.67201012;
double lat_b = 23.91760211;
double distance2 = getDistance2(lng_a,lat_a,lng_b,lat_b);
System.out.println("distance2:"+distance2);
}
输出结果(单位米):
distance2:0.2309