当前位置:首页 » 编程语言 » java计算经纬度距离

java计算经纬度距离

发布时间: 2025-05-29 22:50:46

‘壹’ java,已知当前经纬度和距离,计算符合距离条件的经度最大值、最小值和纬度的最大值、最小值。

//拿走不谢
private final static double R = 6370996.81;
private final static double PI = 3.14159265;
private final static double RAD = Math.PI / 180.0;
/// <summary>
/// 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度
/// </summary>
/// <param name="lat">纬度</param>
/// <param name="lon">经度</param>
/// <param name="rais">半径(米)</param>
/// <returns></returns>
public static double[] GetAround(double lat, double lon, int rais)
{

Double latitude = lat;
Double longitude = lon;

Double degree = (24901 * 1609) / 360.0;
double raisMile = rais;

Double dpmLat = 1 / degree;
Double radiusLat = dpmLat * raisMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;

Double mpdLng = degree * Math.cos(latitude * (PI / 180));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng * raisMile;
Double minLng = longitude - radiusLng;
Double maxLng = longitude + radiusLng;
return new double[] { minLat, minLng, maxLat, maxLng };
}

/// <summary>
/// 根据提供的两个经纬度计算距离(米)
/// </summary>
/// <param name="lng1">经度1</param>
/// <param name="lat1">纬度1</param>
/// <param name="lng2">经度2</param>
/// <param name="lat2">纬度2</param>
/// <returns></returns>
public static double GetDistance(double lng1, double lat1, double lng2, double lat2)
{
double radLat1 = lat1 * RAD;
double radLat2 = lat2 * RAD;
double a = radLat1 - radLat2;
double b = (lng1 - lng2) * RAD;
double s = 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)));
s = s * R;
s = Math.round(s * 10000) / 10000;
return s;
}

‘贰’ java 经纬度转换米

在经线上,相差一纬度约为111km ,因此100m(0.1KM)在经线上对应约为0.1/111=0.0009度,这个度数和纬度没有关系


在纬线上,相差一经度约为111cosα(α为该纬线的纬度)因此100m(0.1KM)在该纬线上对应约为0.1/(111*cos23.14)=0.0009797度,这个度数和纬度有关,


如果要知道经纬度差和距离差的换算规律,请查阅连接中的回答。

http://..com/question/711399588905395965.html?oldq=1



‘叁’ 如何使用java和百度地图api 得到两点之间的路程(驾车行驶距离)

获取到两点的经纬度,再调用网络地图的api计算。我记得,有一个计算距离的api.

<scripttype="text/javascript">
//网络地图API功能
varmap=newBMap.Map("allmap");
map.centerAndZoom("重庆",12);//初始化地图,设置城市和地图级别。
varpointA=newBMap.Point(106.486654,29.490295);//创建点坐标A--大渡口区
varpointB=newBMap.Point(106.581515,29.615467);//创建点坐标B--江北区
alert('从大渡口区到江北区的距离是:'+(map.getDistance(pointA,pointB)).toFixed(2)+'米。');//获取两点距离,保留小数点后两位
varpolyline=newBMap.Polyline([pointA,pointB],{strokeColor:"blue",strokeWeight:6,strokeOpacity:0.5});//定义折线
map.addOverlay(polyline);//添加折线到地图上
</script>
热点内容
华为liteos编译 发布:2025-05-30 13:25:52 浏览:842
北森编程题 发布:2025-05-30 12:53:49 浏览:784
无法打开ftp 发布:2025-05-30 12:47:11 浏览:662
文件夹的资料 发布:2025-05-30 12:06:07 浏览:72
苹果手机服务器地址哪里获取 发布:2025-05-30 11:46:25 浏览:750
安卓系统开源谷歌怎么控制的 发布:2025-05-30 11:43:30 浏览:367
5m上传速度 发布:2025-05-30 11:43:25 浏览:239
c语言集合的并运算 发布:2025-05-30 11:41:11 浏览:824
云学生服务器 发布:2025-05-30 11:15:20 浏览:154
瑞恩源码 发布:2025-05-30 11:02:33 浏览:352