0

是否有任何數學函數來計算2個座標之間有多少公里,而不使用谷歌地圖。2個座標間距離多少公里

所以等

FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325

如何獲得公里beetween這2個座標?

是一個這樣或複雜的微笑公式嗎?

+3

這可能會幫助你:http://www.movable-type.co.uk/scripts/latlong.html –

+0

你還記得代數的斜率公式嗎?美好時光。使用它來查找以deg爲單位的距離,然後將deg轉換爲km。 – dandavis

+1

這是一個很好的和有效的問題,但嚴重的問題和答案更糟糕。 – Archer

回答

1

你想要兩點之間所謂的「great-circle distance」。這基本上是球體表面上兩點之間的最短路徑。 (地球不是相當於球體,但它足夠接近。)

無論如何,重點是要找到從球體中心到每個點的兩條線之間的角度。乘以球體的半徑,這就是你的距離。

其中最基本的公式是基於「球形餘弦法則」。

angle = acos((sin(lat1)*sin(lat2)) + cos(lat1)*cos(lat2)*cos(abs(lat2-lat1)))

(謝謝,維基百科!:))

φφ表示的兩個點的緯度,和Δλ之間的差別在經度。 Δσ是兩點之間的角度;假設它是以弧度表示的,則可以將其乘以球體的半徑,然後給出連接它們的弧的長度。

在JavaScript:

function arc_distance(loc1, loc2) { 
    var rad = Math.PI/180, 
     earth_radius = 6371.009, // close enough 
     lat1 = loc1.lat * rad, 
     lat2 = loc2.lat * rad, 
     dlon = Math.abs(loc1.lon - loc2.lon) * rad, 
     M = Math; 

    return earth_radius * M.acos(
     (M.sin(lat1) * M.sin(lat2)) + (M.cos(lat1) * M.cos(lat2) * M.cos(dlon)) 
    ); 
} 

當此公式的計算機上首次使用,它真的吸短的距離。但是當時的數字還是比較小。由於JS中的數字是64位,所以精確度比一些人提醒的要好得多。它可以輕鬆處理小於一公里的距離,即使在不到一米的距離上,也可以合理地接近其他方法。

+0

所以這將是這樣的:http://jsfiddle.net/sYq9S/2/ –

+0

@MarkWest:非常多。儘管你的座標就像'var coords1 = {lat:33.4444,lon:34.5454545};'。 – cHao

+0

是的,但不要返回任何東西:) http://jsfiddle.net/sYq9S/5/ –

0

我覺得你需要旅行的話。對?以下鏈接中的公式僅給出從一點到另一點的直線句子。

http://www.movable-type.co.uk/scripts/latlong.html

,如果您需要確切的旅遊distence從一個點到另一個點使用谷歌距離矩陣。 你可以找到它https://developers.google.com/maps/documentation/distancematrix/

也回答這個問題。 working out distances between two points using google maps api?

+0

http://jsfiddle.net/sYq9S/ –

+0

@MarkWest再次,這不是一個「寫我的代碼」網站。 – iConnor

+0

好吧,我將刪除這個問題 –

相關問題