我有經度和緯度值,並且希望在50英里處找到另一個緯度長度值。怎麼做?任何公式或自定義函數,以獲得在PHP?參照特定的經度和緯度獲取半徑50英里處的經度和緯度
0
A
回答
1
在php中,你可以通過獲取記錄並使用下面的公式來實現。 但我想你使用查詢來解決這個問題。它更高效。
function getNearestUsers($givenLat,$givenLng)
{
$res = [];
$recs = getAllTheRecordsFromDb();
foreach($recs as $r)
{
$distance = sqrt(POW((69.1 * ($r['lat'] - $givenLat)),2) + POW((69.1 * ($givenLng - $r['lng']) * cos($r['lat']/57.3)),2));
if($distance<=50) //50 miles
{
//some code
}
}
}
假設您的用戶表具有userId,緯度和經度。以下是sql查詢,獲取距離給定經度和緯度的半徑爲50英里的用戶。
SELECT userId, latitude, longitude, SQRT(
POW(69.1 * (latitude - [givenLat]), 2) +
POW(69.1 * ([givenLng] - longitude) * COS(latitude/57.3), 2)) AS distance
FROM TableName HAVING distance < 50 ORDER BY distance;
你可以從參考以下鏈接獲得更多回答: latitude/longitude find nearest latitude/longitude - complex sql or complex calculation
1
這種查詢方法是在谷歌地圖商店定位器API的基礎。
請參考以下網站:
讓說你的緯度和郎可變 $緯度; $ lng;
讓我們假設那些變量有它的座標。
在查詢做到這一點:
SELECT ID,緯度,經度(3959 * ACOS(COS(弧度($ LAT))* COS(弧度(LAT))* COS(弧度(LNG) - 弧度($ lng))+ sin(弧度($ lat))* sin(弧度(lat))))距標記的距離距離< = 50 ORDER BY距離;
結果將返回小於或等於50英里的id,lat和lng座標。
P.S 3959是返回里程的單位。
相關問題
- 1. 緯度和經度半徑
- 2. (緯度,經度)從半徑
- 3. 獲取緯度和經度
- 4. 獲取經度和緯度
- 5. Bing WPF半徑經度和緯度點
- 6. 獲取附近的景點,給定經度,緯度和半徑
- 7. 多個緯度/經度點的半徑
- 8. 從給定的緯度,經度和半徑值中查找java中的最大和最小緯度和緯度
- 9. 獲取mapbox.js中的緯度和經度
- 10. 獲取地址的緯度和經度
- 11. 獲取經度和緯度的限制
- 12. JavaScript的緯度和經度
- 13. MySql的緯度和經度
- 14. Googlemap和緯度和經度
- 15. 從給定點和半徑計算經度和緯度
- 16. mySQL經度和緯度查詢x英里半徑內的其他行
- 17. 無法獲取經度和緯度android
- 18. 獲取經度和緯度值更快
- 19. 從國名獲取經度和緯度
- 20. 從GpsMyLocationProvider獲取經度和緯度(OSMdroid)
- 21. 獲取緯度和經度html js
- 22. 獲取緯度和經度從PIN碼
- 23. 使用javascript獲取緯度和經度
- 24. GMap.NET獲取經度和緯度
- 25. Android:獲取緯度和經度
- 26. 從PostCode獲取經度和緯度
- 27. 從restfb獲取緯度和經度
- 28. 獲取位置(經度和緯度)
- 29. 獲取經度和緯度值
- 30. 通過GPS獲取緯度和經度
一句話,沒有。 PHP沒有那種內置函數。 – RamRaider