2010-10-01 208 views
16

我有兩個GEO位置。我如何計算它們之間的距離?兩個GEO位置之間的距離

+1

http://堆棧溢出。com/questions/1420045 /如何找到距離緯度和經度的兩個位置 – ArK 2010-10-01 11:31:15

回答

8

GPS座標是WGS84橢球體上的地理座標。在這個模型下,Vincenty的公式給出了亞毫米級精度的結果。對於大多數應用來說,這或者是矯枉過正或者實際上是欺騙性的,因爲地球表面不是由WGS84建模的。

可以比較的距離計算on this page的各種方法accurracy(斷開鏈接;檢查source code代替)。正如你所看到的,球面和微分近似(後者使用具有正確局部度量的畢達哥拉斯定理)在很多情況下是不準確的。

其餘方法中,第一種方法使用球體的平均半徑從地理緯度轉換爲地心緯度,而第二種方法使用餘弦規則在「小」距離的情況下獲得更精確的結果(其中'小'主要取決於緯度的差異)。

僅包含這兩種方法can be found here一個單獨的腳本,它提供了一個名爲distance()和期望四個參數函數:兩個緯度,經度差(所有單位爲弧度)和指示該距離是否是「小」一個布爾標誌。

+0

如何使用此distance.js腳本? – powtac 2011-03-17 10:10:24

+0

@powtac:將示例代碼添加到http://mercurial.intuxication.org/hg/js-hacks/raw-file/tip/geo/distance.js;如果您發現更方便的話,可以隨意修改腳本以包含緯度/經度轉換... – Christoph 2011-03-17 22:00:58

+0

此文章中的所有鏈接現在都已被刪除。 – 2014-05-09 19:55:03

8

This page擁有用於計算兩個地理位置之間距離的JavaScript代碼,如果這就是您所追求的。

3

這取決於你想要的準確度。

你可以通過基本的三角形三角操作來解決它 - 即找出它們的經度之間的差異,這是一方;然後是緯度之間的差異,那是第二個。現在你可以很容易地用初中數學計算第三方(即兩者之間的實際距離)。然而,這種方法忽略了地球表面的曲率,所以如果你需要考慮這一點,你需要開始變得更聰明一些。但是,除非距離相當大或者您需要非常高的準確度,否則您無需擔心。對於大多數用途來說,基本的trig方法很好。

另一點,當然是這些方法給你一個直線測量。這可能是你想要的,但你也可能想知道旅行的距離 - 即在路上。這是完全不同的,因爲你需要有一個所有相關道路的準確地圖。如果這是您需要的,那麼委託Google地圖服務(或其他幾個類似的替代方案)可能會更容易。

23

如果你使用谷歌地圖API第3版,你可以計算出距離如下:

附上谷歌地圖 JavaScript文件與幾何庫

http://maps.google.com/maps/api/js?sensor=true&libraries=geometry 

的距離可以現在通過使用computeDistanceBetween()方法測量:

var from = new google.maps.LatLng(49.004, 8.456); 
var to = new google.maps.LatLng(49.321, 8.789); 
var dist = google.maps.geometry.spherical.computeDistanceBetween(from, to); 
+0

不錯,但不要忘記,在你必須付費之後,每天要記錄25000個請求,所以當你在你的應用程序或網站上使用它時要小心。 – Matohawk 2014-07-08 01:36:53

+0

@Matohawk計算距離沒有查詢到G後端發送!因此,每天使用此功能超過25000次沒有限制。 – powtac 2014-07-08 16:20:01

+1

謝謝,我不知道它是有道理的,所以我們不需要google api。 我相信谷歌計算在他們的服務器上的值來優化計算。 – Matohawk 2014-07-09 21:22:18

相關問題