我有经度和纬度值,并且希望在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. 多个纬度/经度点的半径
- 6. 获取经度和纬度的限制
- 7. MySql的纬度和经度
- 8. JavaScript的纬度和经度
- 9. Googlemap和纬度和经度
- 10. 从给定点和半径计算经度和纬度
- 11. GMap.NET获取经度和纬度
- 12. Android:获取纬度和经度
- 13. 从GpsMyLocationProvider获取经度和纬度(OSMdroid)
- 14. 获取纬度和经度从PIN码
- 15. 从restfb获取纬度和经度
- 16. 通过GPS获取纬度和经度
- 17. 从PostCode获取经度和纬度
- 18. 无法获取经度和纬度android
- 19. 获取纬度和经度html js
- 20. 使用javascript获取纬度和经度
- 21. 纬度和经度问题
- 22. php exif;纬度和经度?
- 23. 纬度和经度地址
- 24. 获取特定城市的纬度和经度android
- 25. 近纬度经纬度
- 26. 地球纬度和经度在3D球体上的纬度和经度
- 27. 获取经纬度和纬度的距离
- 28. 如何让Maxspeed允许某个半径的纬度和经度?
- 29. HTML5地理位置中经度和纬度的半径
- 30. 获取经纬度从经纬度对象的Android
一句话,没有。 PHP没有那种内置函数。 – RamRaider