2009-12-28 90 views
5

經過廣泛的研究和有趣的學習谷歌的映射api後,我正在構建一個數字天線地圖應用程序。在這一點上,項目計劃的下一步是建立一個基於用戶地址的輸入定位數字電視臺的谷歌地圖的內存映射覆制。因此,我使用這個數學代碼來表達谷歌地圖中心的方位和數據庫結果集中的緯度/經度。映射數學和Javascript

我的問題是:我如何完成數學以顯示軸承的度數?

這個代碼是返回下面的數組結果集數學:

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); 

似乎有東西在我的計算失蹤。數據庫表將經度值保持爲負數,以表示全球上西部象限。

任何建議來完成我的數學將節省一百萬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); 

URL測試項目選址:click here

在頁面底部的DIV是返回的結果集從2個陣列中,第一個保持距離,第二個保持軸承測量。

+0

謝謝賈斯汀 – rjsteward

回答

6

Google地圖返回度數座標。當然,trig函數需要弧度。所以,你要轉換爲弧度第一:

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

你的數學看起來像它試圖做的the Haversine formula。我發現一個JavaScript實現here讓你檢查你的代碼。

您可以按照the FCC's DTV engineering maps檢查結果。

+0

是的,我已經看過FCC的網站。謝謝。 – rjsteward

3

在賽斯的幫助下,用我清晨的大腦(是的,我是中年人,我早上更聰明)。

我正在研究的關於here的鏈接和Seth提到的是關鍵。我使用博客條目中js文件的代碼,並將代碼從oo 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); 

我運行演示谷歌地圖here

感謝您的幫助,現在我可以進入邏輯代碼,在​​上爲我的客戶的客戶推薦正確的產品。

計算器巖....

羅伯特

+0

三角巖! – Seth

+0

謝謝,這有助於我獲得正確的方位。 –

+0

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