根据经纬度、半径、方位角获取下一个点经纬度,画线、画圆

//gis根据一个点的经纬度、方位角、半径求下个点的经纬度 再画线
var poine2=getLonAndLat(data[0].lng,data[0].lat,data[0].azimuth,data[0].radius);
var polyline = new BMap.Polyline([
new BMap.Point(data[0].lng,data[0].lat),//起始点的经纬度
new BMap.Point(poine2.lng,poine2.lat)//终止点的经纬度
], {strokeColor:“blue”,//设置颜色
strokeWeight:2, //宽度
strokeOpacity:0.7});//透明度
map.addOverlay(polyline);

            var circle = new BMap.Circle(point2,data[0].radius,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
            map.addOverlay(circle);

下面是经纬度获取脚本

/**

  • 度换成弧度
  • @param {Float} d 度
  • @return {[Float} 弧度
    /
    function rad (d){
    return d * Math.PI / 180.0;
    };
    /
    *
  • 弧度换成度
  • @param {Float} x 弧度
  • @return {Float} 度
    /
    function deg (x){
    return x
    180/Math.PI;
    };
    /**
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
方位角是指我们站在一个点上,指向另一个点的方向与正北方向之间的夹角。根据两个点的经纬度计算方位角的公式如下: 1. 计算两个点的经度和纬度之差 $$ \Delta\lambda = \lambda_2 - \lambda_1 \\ \Delta\phi = \phi_2 - \phi_1 $$ 2. 计算目标点相对于起始点的方位角 $$ \theta = \text{arctan2}(\sin\Delta\lambda\cdot\cos\phi_2, \cos\phi_1\cdot\sin\phi_2 - \sin\phi_1\cdot\cos\phi_2\cdot\cos\Delta\lambda) $$ 3. 如果计算出的角度为负数,则加上 $360^\circ$,得到最终的方位角。如果角度超过 $360^\circ$,则减去 $360^\circ$,得到最终的方位角。 其中 $\text{arctan2}(y,x)$ 是一个函数,返回的是 $[-\pi,\pi]$ 范围内的角度,表示向量 $(x,y)$ 与正 $x$ 轴之间的夹角。在计算方位角时,我们需要将结果转换为角度制,即将弧度乘以 $180/\pi$。 示例: 假设起始点的经度是 $-122.4324$,纬度是 $37.8017$,目标点的经度是 $-122.4318$,纬度是 $37.8025$。 1. 计算经度和纬度之差 $$ \Delta\lambda = -122.4318 - (-122.4324) = 0.0006 \\ \Delta\phi = 37.8025 - 37.8017 = 0.0008 $$ 2. 计算方位角 $$ \theta = \text{arctan2}(\sin(0.0006)\cdot\cos(37.8025), \cos(37.8017)\cdot\sin(37.8025) - \sin(37.8017)\cdot\cos(37.8025)\cdot\cos(0.0006)) \\ \theta \approx 1.7055 $$ 3. 将角度转换为角度制 $$ \theta = 1.7055 \cdot \frac{180}{\pi} \approx 97.80^\circ $$ 因此,从起始点指向目标点的方向大约是 $97.80^\circ$。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值