我正在android GoogleMap
項目中工作。我有用戶的位置(經度和緯度)Geo
。我想在用戶的5公里範圍內計算該地區的座標,以便我可以過濾用戶周圍的數據庫中的地點。有什麼建議麼?計算指定區域的緯度範圍
1
A
回答
2
緯度和經度都是度數,所以您需要使用簡單的平坦地球投影。 重要提示:下列公式中的所有緯度/經度值應以弧度表示,而不是度數!因爲你的半徑是5公里,所以使用平坦的地球是足夠的。地平投影是:
var R = 6371; // km
var x = (lon2-lon1) * Math.cos((lat1+lat2)/2);
var y = (lat2-lat1);
var d = Math.sqrt(x*x + y*y) * R;
現在LAT1/lon1是基準位置,在你的情況下,用戶的位置。 Lat2/lon2將成爲您測試的重點。變量'd'是距離。由於'R'以公里爲單位,因此'd'將以公里爲單位。
如果'd'小於5(即小於5km),則該點在圓內。
-1
可以得到點(在座標)與圓周的:
(X - x_o)^ 2 +(Y - y_o)^ 2 = R^2
在哪裏x_0和y_0是用戶的座標,r是你想考慮的半徑,你的點是x和y。
因爲你要比較圓的座標位置的座標,你可以把X和Y的地點座標,看看這些解決disequation:
(X - x_o )^ 2 +(Y - y_o)^ 2 < = r^2
0
第一個答案(TreyA)似乎顯示你的半正矢功能的精簡版。下面是我給予實現Haversine函數的人的JS代碼,並將十進制值轉換爲弧度。
// Convert Degress to Radians
function Deg2Rad(deg) {
return deg * Math.PI/180;
}
// Get Distance between two lat/lng points using the Haversine function
// First published by Roger Sinnott in Sky & Telescope magazine in 1984 (「Virtues of the Haversine」)
//
function Haversine(lat1,lon1,lat2,lon2)
{
var R = 6372.8; // Earth Radius in Kilometers
var dLat = Deg2Rad(lat2-lat1);
var dLon = Deg2Rad(lon2-lon1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Deg2Rad(lat1)) * Math.cos(Deg2Rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
// Return Distance in Kilometers
return d;
}
下面是對文件的直接下載鏈接: http://www.opengeocode.org/download/haversine/haversine.js
相關問題
- 1. 如何計算Google Map for iOS SDK的經度/緯度範圍?
- 2. 指定區域的緯度/經度指數
- 3. 計算公制區域內的所有緯度和經度
- 4. 如何計算谷歌地圖中選定區域的經度和緯度?
- 5. 計算給定經度和緯度的地球凸包多邊形區域
- 6. 在一定的經緯度範圍內獲取社區位置。
- 7. 獲取緯度範圍在指定的半徑在C#
- 8. 如何從點數據計算區域的覆蓋範圍?
- 9. 計算經緯度
- 10. 1英里範圍內的所有經度和緯度範圍
- 11. 與緯度/經度計算
- 12. 確定一定範圍內的經度和緯度
- 13. 通過C#獲取Excel中指定區域的範圍.net
- 14. 經緯度長度在經緯度範圍內
- 15. 立體聲 - 深度範圍計算
- 16. 子集長和緯度值的範圍
- 17. 谷歌地圖的經緯度範圍
- 18. 如何定義區域設置範圍?
- 19. 獲取距離給定的緯度和經度在5km範圍內的緯度和緯度
- 20. 計算,下一個緯度
- 21. PHPExcel打印範圍區域
- 22. 追逐,區域範圍
- 23. 計數列值的範圍指定 - SQL
- 24. 僅在蒙面區域計算梯度
- 25. 計算IP的IP範圍
- 26. 計算GMSPolygon區域
- 27. 指令中的角度隔離範圍指的是父範圍
- 28. GPS計算器轉換,計算新點的緯度/經度值
- 29. 銫 - 如何計算點擊位置周圍指定區域的最高點,最低點,平均海拔高度?
- 30. 如何限制Worksheet_Calculate()僅在計算指定範圍時執行
這是行不通的。經度和緯度以度爲單位,半徑以公里爲單位。 – TreyA
在Google地圖中,座標以雙重格式顯示,如笛卡爾圖形。 R不是公里,只是表示圓的半徑的數字,取決於X和Y的值。 – FdT
座標可能是雙格式,但經度和緯度均以度爲單位。如何將5公里轉換成度? – TreyA