映射数学和Javascript

映射数学和Javascript,javascript,api,google-maps,math,Javascript,Api,Google Maps,Math,在对Google的MappingAPI进行了广泛的研究和有趣的学习之后,我正在构建一个数字天线地图应用程序。此时,项目计划的下一步是构建google地图的内存地图复制,该地图根据用户地址的输入定位数字电视台。所以,我用这个数学代码来计算谷歌地图中心的方位和数据库结果集中的纬度/液化天然气点 我的问题是:我怎样才能完成数学以度表示方位 此代码是返回以下数组结果集的数学表达式: 1.21 1.10 1.10 1.10 1.10 2.62 -0.29 -1.17 0.1

在对Google的MappingAPI进行了广泛的研究和有趣的学习之后,我正在构建一个数字天线地图应用程序。此时,项目计划的下一步是构建google地图的内存地图复制,该地图根据用户地址的输入定位数字电视台。所以,我用这个数学代码来计算谷歌地图中心的方位和数据库结果集中的纬度/液化天然气点

我的问题是:我怎样才能完成数学以度表示方位

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

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);
我的计算似乎遗漏了什么。db表将经度值保存为负数,以表示地球的上西方象限

任何完成我的数学的建议都可以节省一百万元,我已经消耗了一万亿元

根据从度到弧度的建议,我修改了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是从两个数组返回的结果集,第一个数组保存距离,第二个数组保存方位测量值。

谷歌地图以度为单位返回坐标。当然,trig函数需要弧度。因此,首先要转换为弧度:

function deg_to_rad(degrees) {
    return degrees * Math.PI / 180;
}
你的数学看起来像是在做同样的事情。我找到了一个javascript实现供您检查代码


你可以在赛斯的帮助下,利用我清晨的大脑(是的,我是中年人,早上更聪明)检查你的结果

我正在研究和赛斯提到的链接是关键。我在博客条目中使用了js文件中的代码,并将代码从OOJavaScript概念变形为内联运行的脚本

这是我的解决方案:

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);
var-lat1=center.lat();
var lon1=center.lng();
var lat2=纬度;
var lon2=经度;
lat1=lat1*Math.PI/180;
lat2=lat2*Math.PI/180;
变量dLon=(lon2-lon1)*Math.PI/180;
变量y=数学sin(dLon)*数学cos(lat2);
var x=数学cos(lat1)*数学sin(lat2)-数学sin(lat1)*数学cos(lat2)*数学cos(dLon);
var轴承=数学atan2(y,x)*180/数学PI;
如果(轴承<0){
轴承=轴承+360;
}
轴承=轴承。固定(0);
静止距离推(距离固定(1));
工位轴承。推(轴承);
我正在运行谷歌地图演示

感谢您的帮助,现在我可以开始使用逻辑代码,为客户的客户推荐正确的产品

堆积如山的岩石

罗伯特