已知两点经纬度,计算偏移角(正北为0,顺时针为正,逆时针为负)

function getAngle(preCoord,currCoord){
	var ret
     var w1 = preCoord.lat/180 * Math.PI
     var j1 = preCoord.lng/180 * Math.PI

     var w2 = currCoord.lat/180 * Math.PI
     var j2 = currCoord.lng/180 * Math.PI

     ret = 4 * Math.pow(Math.sin((w1 - w2) / 2), 2) - Math.pow(Math.sin((j1 - j2) / 2) * (Math.cos(w1) - Math.cos(w2)), 2);
     ret = Math.sqrt(ret);

     // var temp = Math.sin(Math.abs(j1 - j2) / 2) * (Math.cos(w1) + Math.cos(w2));
     var temp = Math.sin((j1 - j2) / 2) * (Math.cos(w1) + Math.cos(w2));
     // console.log(temp)
     ret = ret/temp;

     ret = Math.atan(ret) / Math.PI * 180 ;
     ret += 90;

     // 这里用如此臃肿的if..else是为了判定追踪单个点的具体情况,从而调整ret的值
     if(j1-j2 < 0){
         // console.log('j1<j2')
         if(w1-w2 < 0){
             // console.log('w1<w2')
             ret;
         }else{
             // console.log('w1>w2')
             ret = -ret+180;
         }
     }else{
         // console.log('j1>j2')
         if(w1-w2 < 0){
             // console.log('w1<w2')
             ret = 180+ret;
         }else{
             // console.log('w1>w2')
             ret = -ret;
         }
     }
     return ret ;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值