已知两点经纬度(百度地图),用js求解两点之间的角度
2016-08-31 00:00
1606 查看
摘要: 百度地图web端提供了两点之间的连线功能,却无法向移动点那样添加纹理,也就没法表示两点之间的方向.但是好在它为每一个Marker提供了角度参数.在已知两点经纬度的情况下,不能用简单的勾股定理来计算两点的角度,根据大家的方法,用js实现之
先贴代码,稍后再来整理
先贴代码,稍后再来整理
//获得角度的函数 function getAngle(n,next){ var ret var w1 = n.point.latitude/180 * Math.PI var j1 = n.point.longitude/180 * Math.PI var w2 = next.point.latitude/180 * Math.PI var j2 = next.point.longitude/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 ; } // 使用 for(var i=item.point.length;i > 0;i--){ ~function(i){//这里不需要用闭包,笔者手滑 var n = item.mapLineDetail[i]; var next = item.mapLineDetail[i-1] next.rotate = getAngle(next,n) }(i); }; item是一个对象,item.pointer是一个数组,每一项的数据结构如下 n = { point:{ latitude:***, longitude:*** } }
相关文章推荐
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- JS实现的根据经纬度计算地球上两点之间的距离
- 根据经纬度计算地球上两点之间的距离js实现代码
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 根据经纬度计算地球上两点之间的距离js实现代码
- iOS百度地图根据经纬度获取两点之间的距离
- js计算两点之间的经纬度
- android 实现计算百度地图两点之间旋转角度,多点有向连接
- 高德地图---已知两点经纬度坐标求距离和角度
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 已知用经纬度表示的两点,求两点之间的直线距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 已知用经纬度表示的两点,求两点之间的直线距离
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 已知用经纬度表示的两点,求两点之间的直线距离
- 关于已知两点经纬度求球面最短距离的公式推导
- Delphi 根据经纬度计算地球上两点之间的距离
- JavaScript 实现的根据经纬度计算地球上两点之间的距离