我有一个数据库表,其中包含餐厅列表,包括它们的名称、纬度和经度。我想选择离我当前位置一定距离内的所有餐厅。当前位置在 php 文件中确定(现在我只使用静态 lat & lng)。我找到了计算距离的代码:
function findDist($lat, $lng){
$currLat = 33.777563;
$currLng = -84.389959;
$currLat = deg2rad ($currLat);
$sincurrLat = sin ($currLat);
$lat = deg2rad ($lat);
$currLng = deg2rad ($currLng);
$lng = deg2rad ($lng);
return round((7926 - 26 * $sincurrLat) * asin (min (1, 0.707106781186548 * sqrt ((1 - (sin ($lat) * $sincurrLat) - cos ($currLat) * cos ($lat) * cos ($lng - $currLng))))),4);
}
但是我如何将它合并到我的选择查询中?我试过这个:
$query = "SELECT *
FROM
eateries E
WHERE
EXISTS
(
SELECT *
FROM
eateries_hours EH, eateries_type ET
WHERE
EH.eateries_id = E.id AND ET.eateries_id = E.id
AND findDist(E.lat, E.lng) <= .5
)";
但当然这不起作用,因为它无法识别该功能。我可以先对 lats 和 lngs 进行单独的查询,计算距离,然后以某种方式将其与上述查询结合起来吗?有任何想法吗?
谢谢。