Possible Duplicate:
Nearest locations with latitude and longitude
我的数据库上有超过 1000 个位置(纬度、经度),我想根据特定位置 a(纬度、经度)选择 5 个最近的位置!谁能告诉我如何做到这一点!我不想进行测试来计算 a 和其他位置之间的所有距离,这会花费太多时间!
这是我想做的,但我不确定!!
$lat = round (48.89463, 3);
$lng = round (2.33739,2);
$sql=mysql_query("SELECT *
FROM tbl z
WHERE ROUND(z.lat,3) LIKE $lat AND ROUND(z.long,2) LIKE $lng
LIMIT 0,5") or die(mysql_error());
while($row=mysql_fetch_assoc($sql))
{
echo $row[lat].";".$row[long]."<br>";
}
谢谢!
最佳答案
您可以使用great-circle distance .
$lat = round (48.89463, 3);
$lng = round (2.33739,2);
$sql=mysql_query("SELECT *
FROM tbl z
ORDER BY ACOS(COS(RADIANS($lat))*COS(RADIANS(z.lat))*COS(RADIANS(z.long)RADIANS($lng))+SIN(RADIANS($lat))*SIN(RADIANS(z.lat))
WHERE ROUND(z.lat,3) LIKE $lat AND ROUND(z.long,2) LIKE $lng
LIMIT 0,5") or die(mysql_error());
while($row=mysql_fetch_assoc($sql))
{
echo $row[lat].";".$row[long]."<br>";
}
关于php - mysql 选择最接近特定位置的纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8701449/