php - mysql 选择最接近特定位置的纬度/经度

标签 php mysql

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/

相关文章:

php - 通过 PDO ODBC 将 PHP 连接到 MSSQL

php - 如何使用子查询为选定列使用 where 条件?

php - 连接两个表列

php - 惰性类别名?

php - 使用地理定位查找最近的城市

php - 从ajax请求中获取数据,这可能吗?

php - mySQL:从多行获取所有位置的值

java - 为什么 INSERT 查询在此 HttpServer 代码中不起作用

php - 如何使用复选框(PHP)从 mysql 表中选择一行

mysql - 我们如何在MySQL工作台模式部分查看在phpmyadmin中创建的数据库/表?