映射数学和Javascript

rjs*_*ard 5 javascript api math google-maps

经过广泛的研究和有趣的了解Google的映射api,我正在构建一个数字天线地图应用程序.此时,项目计划的下一步是构建谷歌地图的内存映射复制,该地图根据用户地址的输入定位数字电视台.所以,我使用这个数学代码来表示谷歌地图中心的方位和数据库结果集中的纬度/经度点.

我的问题是:我如何完成数学计算以度数表示轴承?

此代码是返回以下数组结果集的数学:

1.21  
1.10  
1.10  
1.10  
1.10  
2.62  
-0.29  
-1.17  
0.12  
3.04  

var y = Math.sin(longitude-center.lng()) * Math.cos(latitude);
var x = Math.cos(center.lat())*Math.sin(latitude) - Math.sin(center.lat())*Math.cos(latitude)*Math.cos(longitude-center.lng());
var bearing = (Math.atan2(y, x)).toFixed(2);
Run Code Online (Sandbox Code Playgroud)

在我的计算中似乎缺少一些东西.db表将经度值保持为负数,以表示地球的西上象限.

任何完成我数学的建议都会节省一百万个nuerons,我已经烧掉了一万亿.

考虑到弧度建议,我修改了javascript代码:

 var radLat1 = center.lat() * Math.PI / 180;
 var radLat2 = latitude * Math.PI / 180;
 var radLng1 = center.lng() * Math.PI / 180;
 var radLng2 = longitude * Math.PI / 180;

 var y = Math.sin(radLng2- radLng1) * Math.cos(radLng2);
 var x = Math.cos(radLat1)*Math.sin(radLat2) -        Math.sin(radLat1)*Math.cos(radLat2)*Math.cos(radLng2-radLng1);
 var bearing = (Math.atan2(y, x)).toFixed(2);
Run Code Online (Sandbox Code Playgroud)

测试项目网站的网址:点击这里

页面底部的div是从2个阵列返回的结果集,第一个保持距离,第二个保持轴承测量.

Set*_*eth 6

Google地图以度为单位返回坐标.当然,trig函数需要弧度.所以你首先要转换为弧度:

function deg_to_rad(degrees) {
    return degrees * Math.PI / 180;
}
Run Code Online (Sandbox Code Playgroud)

你的数学看起来像是在尝试使用Haversine公式.我在这里找到了一个javascript实现,供您检查代码.

您可以根据FCC的DTV工程地图查看结果.