我有餐馆的数据库及其确切的地址,现在当用户从他的移动设备搜索餐馆时,我想以距他当前位置的距离的顺序向他展示餐馆,以便非常接近的餐厅在结果。这样做的最佳方式是什么?
答案 0 :(得分:0)
您可以使用所谓的Haversine formula。
以下示例适用于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
是您的点的坐标,而lat / lng是您的表格列。以上将列出5 nm范围内的位置。将3959
替换为6371
以更改为公里。
此链接可能很有用:https://developers.google.com/maps/articles/phpsqlsearch_v3
您可以添加order by
子句,按distance
订购结果。