我有一位客戶想要我計算城市之間的英里距離。我正在做項目在PHP中,JavaScript,我一直在閱讀一些長/緯度數據庫,但仍然無法找到從哪裏開始以及使用它。是否有任何Web服務可以通過傳遞兩個城市名稱來查詢,並且它可以以英里或公里返回距離?請幫助如何最好地計算兩個城市之間的距離(加拿大)?
回答
http://code.google.com/apis/maps/documentation/javascript/geometry.html#Distance
距離和麪積函數 兩點之間的距離是它們之間的最短路徑的長度。這條最短路徑稱爲測地線。在球體上,所有測地線都是大圓的一部分。要計算這個距離,請調用computeDistanceBetween(),並將其傳遞給兩個LatLng對象。
如果您有多個位置,則可改爲使用computeLength()來計算給定路徑的長度。
要計算多邊形區域的面積,請調用computeArea(),傳遞定義閉環的LatLng對象數組。
如果不希望保持GEO數據庫維護緯度/長到一個地方/城市,那麼你也可以使用谷歌API來獲取座標「地址」: http://code.google.com/apis/maps/documentation/javascript/services.html#GeocodingRequests
另一種選擇是使用JavaScript實現大圓計算器的變化,如果你不是一個谷歌的粉絲:http://williams.best.vwh.net/gccalc.htm
非API的解決方案。這有利於你不依賴於任何第三方,這可能會降低,或成本貴,或速度有限,響應速度慢等。
首先將您的位置轉換爲緯度/經度。你需要一分錢的城市和合作社,但我想這很容易找到。在英國,這些數據可以從各政府機構免費獲得。然後與合作伙伴,你可以計算它們之間的距離。以下是在Java中,而應該直截了當地移植到的JavaScript(或PHP):
public static double R_EARTH_EQUATORIAL = 6378137.0;
public static double R_EARTH_POLAR = 6356752.3;
// The shortest dist between two points on a globe. Lat/lngs are in RADIANS
public static double greatCircleDistance(double lat_1, double lng_1, double lat_2, double lng_2) {
double d_lat = lat_1 - lat_2;
double d_lng = lng_1 - lng_2;
double lat_ave = (lat_1 + lat_2)/2;
double h = haversin(d_lat) + Math.cos(lat_1) * Math.cos(lat_2) * haversin(d_lng);
return 2 * R_EARTH(lat_ave) * Math.asin(Math.pow(h, 0.5));
}
public static double haversin(Double x) {
return Math.pow(Math.sin(x/2),2);
}
// Returns radius of earth at a given latitude
public static double R_EARTH(double latitude) {
double a = R_EARTH_EQUATORIAL;
double b = R_EARTH_POLAR;
double x = latitude;
double p = Math.pow((Math.pow(a,2) * Math.cos(x)),2);
double q = Math.pow((Math.pow(b,2) * Math.sin(x)),2);
double r = Math.pow(a * Math.cos(x),2);
double s = Math.pow(b * Math.sin(x),2);
return Math.pow(((p + q)/(r + s)), 0.5);
}
結果數字代表什麼?如果它是英寸,它不符合谷歌的建議。 – John 2013-08-10 04:33:02
@John:我相信它是公里(從我寫和使用過這段時間以來)。確保經緯度以弧度表示 – 2013-08-29 11:07:09
- 1. 如何計算城市中兩個區域之間的距離
- 2. 如何計算兩個國家之間的距離以及國家與城市之間以及城市與城市之間的距離?
- 3. Android - 兩座城市之間的距離
- 4. 使用pl/sql計算兩個城市之間的最小距離
- 5. 如何通過PowerShell計算不同城市之間的距離?
- 6. 如何通過postgis計算城市之間的距離?
- 7. 城市列表之間的計算距離算法
- 8. 哪一個最好計算兩點之間的距離?
- 9. 如何計算兩個城市之間的旅行時間?
- 10. 序言:城市之間的距離
- 11. php中的兩個城市之間的距離
- 12. 如何計算兩個地址之間的距離
- 13. 如何計算兩個地理點之間的距離
- 14. 在計算與城市的距離時,如何計算城市的大小(實際面積)?
- 15. 計算400個城市之間的距離併爲其優化MySQL?
- 16. 如何計算谷歌地圖中兩點之間的距離?
- 17. 如何計算兩地之間的距離?
- 18. 如何使用php計算兩地之間的距離?
- 19. 計算兩次之間的距離
- 20. 最快的方法來計算兩個CGPoints之間的距離?
- 21. 最好的方式來存儲和檢索城市之間的距離?
- 22. 計算兩個任意形狀之間的最小距離
- 23. 計算兩個給定圓弧之間的最小距離
- 24. Android:計算兩個位置之間距離的最佳方法
- 25. 兩地的距離計算
- 26. Asp.net mvc計算兩個地址之間的距離
- 27. 計算兩個地理位置之間的距離
- 28. 如何在Prolog中查找城市之間的距離?
- 29. 計算兩條線和兩條弧之間的最小距離
- 30. 如何計算Processing中兩個因變量之間的距離?
我寧願谷歌的服務,也由於這樣的事實,主要的問題是要保持自己的數據庫與LON /緯度值和城市... – strauberry 2011-04-15 12:50:14
你能解釋我怎樣才能使用這些功能,而無需在我的網頁上的地圖我只有皮卡和下拉選擇框與他們的城市名稱 – 2011-04-15 12:54:32
使用谷歌API轉換完整的城市/國家以緯度/經度(以度或DMS格式),然後使用相同的API來計算距離。 – sdolgy 2011-04-15 12:58:24