百度地图java计算2个坐标建距离_百度地图计算两坐标之间的距离

此博客介绍了BaiDuMap类中用于计算两点间距离的方法,包括适用于近距离的GetShortDistance()和适用于远距离的GetLongDistance()。通过经纬度转换和地球半径计算,提供了实用的距离计算工具。
摘要由CSDN通过智能技术生成

public class BaiDuMap {

static double DEF_PI = 3.14159265359; // PI

static double DEF_2PI= 6.28318530712; // 2*PI

static double DEF_PI180= 0.01745329252; // PI/180.0

static double DEF_R =6370693.5; // radius of earth

//适用于近距离

public static double GetShortDistance(double lon1, double lat1, double lon2, double lat2)

{

double ew1, ns1, ew2, ns2;

double dx, dy, dew;

double distance;

// 角度转换为弧度

ew1 = lon1 * DEF_PI180;

ns1 = lat1 * DEF_PI180;

ew2 = lon2 * DEF_PI180;

ns2 = lat2 * DEF_PI180;

// 经度差

dew = ew1 - ew2;

// 若跨东经和西经180 度,进行调整

if (dew > DEF_PI)

dew = DEF_2PI - dew;

else if (dew 

dew = DEF_2PI + dew;

dx = DEF_R * Math.cos(ns1) * dew; // 东西方向长度(在纬度圈上的投影长度)

dy = DEF_R * (ns1 - ns2); // 南北方向长度(在经度圈上的投影长度)

// 勾股定理求斜边长

distance = Math.sqrt(dx * dx + dy * dy);

return distance;

}

//适用于远距离

public static double GetLongDistance(double lon1, double lat1, double lon2, double lat2)

{

double ew1, ns1, ew2, ns2;

double distance;

// 角度转换为弧度

ew1 = lon1 * DEF_PI180;

ns1 = lat1 * DEF_PI180;

ew2 = lon2 * DEF_PI180;

ns2 = lat2 * DEF_PI180;

// 求大圆劣弧与球心所夹的角(弧度)

distance = Math.sin(ns1) * Math.sin(ns2) + Math.cos(ns1) * Math.cos(ns2) * Math.cos(ew1 - ew2);

// 调整到[-1..1]范围内,避免溢出

if (distance > 1.0)

distance = 1.0;

else if (distance 

distance = -1.0;

// 求大圆劣弧长度

distance = DEF_R * Math.acos(distance);

return distance;

}

public static void main(String[] args) {

double mLat1 = 39.90923; // point1纬度

double mLon1 = 116.357428; // point1经度

double mLat2 = 39.90923;// point2纬度

double mLon2 = 116.397428;// point2经度

double distance = BaiDuMap.GetShortDistance(mLon1, mLat1, mLon2, mLat2);

System.out.println(distance);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值