映射数学和Javascript

5
经过广泛的研究和有趣的学习Google地图API,我正在构建一个数字天线地图应用程序。在此阶段,项目计划的下一步是基于用户地址输入构建一个内存地图副本,该地图显示数字电视台的位置。因此,我使用这个数学代码来计算中心点与数据库结果集中的lat/lng点之间的方位角。
我的问题是:如何完成数学运算以显示度数方位角?
以下是返回数组结果集的数学代码:
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);

我的计算好像有些问题。数据库表将经度值作为负数来表示地球的西北象限。

如果有任何建议可以帮我完成这个数学问题,那就太好了,我已经烧掉了一万亿个神经元。

根据将角度转换为弧度的建议,我修改了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);

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

页面底部的div是由两个数组返回的结果集,第一个数组保存距离,第二个数组保存方位角测量。

2个回答

6

谷歌地图返回的坐标是以度为单位的。当然,三角函数需要弧度作为参数。因此,您需要先将其转换为弧度:

function deg_to_rad(degrees) {
    return degrees * Math.PI / 180;
}

你的数学公式似乎是在尝试使用Haversine公式。我为你找到了一个javascript实现这里,让你可以检查你的代码是否正确。
你可以将结果与FCC的DTV工程地图进行比较。

4

在Seth的帮助下,利用我的清晨头脑(是的,我已经中年了,早上更聪明)。

我正在研究并且Seth提到的这里的链接是关键。我使用了博客文章中js文件中的代码,并将代码从面向对象的JavaScript概念转变为内联运行的脚本。

这是我的解决方案:

var lat1 = center.lat();
var lon1 = center.lng();
var lat2 = latitude;
var lon2 = longitude;

lat1 = lat1 * Math.PI / 180;
lat2 = lat2 * Math.PI / 180;
var dLon = (lon2-lon1) * Math.PI / 180;
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1)*Math.sin(lat2) - Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);

var bearing = Math.atan2(y, x) * 180 / Math.PI;
    if (bearing < 0){
           bearing = bearing + 360;
    }

    bearing = bearing.toFixed(0);

stationDistance.push(distance.toFixed(1));
stationBearing.push(bearing);

我正在运行演示谷歌地图,网址在这里
感谢您的帮助,现在我可以转向逻辑代码,为我的客户在此网址推荐正确的产品。
stackoverflow非常棒!
罗伯特

http://martinhansen.no/2011/04/14/getting-the-bearingheading-betweet-2-coordinates/ - Martin Hansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接