是否有任何數學函數來計算2個座標之間有多少公里,而不使用谷歌地圖。2個座標間距離多少公里
所以等
FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325
如何獲得公里beetween這2個座標?
是一個這樣或複雜的微笑公式嗎?
是否有任何數學函數來計算2個座標之間有多少公里,而不使用谷歌地圖。2個座標間距離多少公里
所以等
FirstCoor = 33.45674,44.3453453 SecondCoor = 34.53434,45.345325
如何獲得公里beetween這2個座標?
是一個這樣或複雜的微笑公式嗎?
你想要兩點之間所謂的「great-circle distance」。這基本上是球體表面上兩點之間的最短路徑。 (地球不是相當於球體,但它足夠接近。)
無論如何,重點是要找到從球體中心到每個點的兩條線之間的角度。乘以球體的半徑,這就是你的距離。
其中最基本的公式是基於「球形餘弦法則」。
(謝謝,維基百科!:))
φ和φ表示的兩個點的緯度,和Δλ之間的差別在經度。 Δσ是兩點之間的角度;假設它是以弧度表示的,則可以將其乘以球體的半徑,然後給出連接它們的弧的長度。
在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位,所以精確度比一些人提醒的要好得多。它可以輕鬆處理小於一公里的距離,即使在不到一米的距離上,也可以合理地接近其他方法。
所以這將是這樣的:http://jsfiddle.net/sYq9S/2/ –
@MarkWest:非常多。儘管你的座標就像'var coords1 = {lat:33.4444,lon:34.5454545};'。 – cHao
是的,但不要返回任何東西:) http://jsfiddle.net/sYq9S/5/ –
我覺得你需要旅行的話。對?以下鏈接中的公式僅給出從一點到另一點的直線句子。
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?
這可能會幫助你:http://www.movable-type.co.uk/scripts/latlong.html –
你還記得代數的斜率公式嗎?美好時光。使用它來查找以deg爲單位的距離,然後將deg轉換爲km。 – dandavis
這是一個很好的和有效的問題,但嚴重的問題和答案更糟糕。 – Archer