2013-01-23 243 views
0

可能重複:
How do I calculate distance between two latitude-longitude points?計算距離

如何可以計算在JavaScript地理位置之間米的距離?我發現這answer,但它是用Java實現的,我並不真正瞭解發生了什麼。

我使用HTML 5的地理位置功能並使用JavaScript計算距離。直到現在我有這個功能:

function calculateDistance(lat1, lat2, lng1, lng2) 
    { 
     return Math.sqrt(((lat1 + lat2)*(lat1 + lat2)) + ((lng1 + lng2)*(lng1 + lng2))); 
    } 

顯然這不是我需要的值。有人可以幫我嗎?

+0

您必須將其視爲球形幾何問題。也就是說,你必須找到的是球體表面上弧的長度(這不是很正確,但它更接近)。 – Pointy

+0

多一點谷歌搜索會顯示這[問題已被問]之前(http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude-points)。甚至在JavaScript中解決方案! – voithos

+0

@感謝voithos,當時投票結束這一個。 – Goaler444

回答

1
var R = 6371; // Earth radius in km 
var dLat = (lat2-lat1).toRad(); 
var dLon = (lon2-lon1).toRad(); 
var lat1 = lat1.toRad(); 
var lat2 = lat2.toRad(); 

var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
    Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c; 

這不是我的代碼。它取自:http://www.movable-type.co.uk/scripts/latlong.html 查看鏈接瞭解詳情。

0

也許this會很有幫助,而且這個answer也會有所幫助。