我有餐厅的数据库,其中包含确切地址,现在当用户从他的移动设备搜索餐厅时,我想按照与他当前位置的距离顺序向他显示餐厅,以便非常接近的餐厅在结果中排在第一位。最好的方法是什么?
您可以使用所谓的哈弗森公式。
下面的例子是针对PHP/MySQL的,但查询仍然是你需要的。
$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
其中$lat
和$lng
是点的坐标,纬度/液化天然气是表列。以上将列出 5 nm 范围内的位置。将3959
替换为6371
以更改为公里。
此链接可能很有用: https://developers.google.com/maps/articles/phpsqlsearch_v3
您可以添加 order by
子句以按 distance
对结果进行排序。