距离他们的距离最近的10个目的地

时间:2016-07-30 10:53:23

标签: php mysql phpmyadmin geolocation coordinates

嘿,有没有办法按照距离的顺序得到最近10个目的地的列表,我的MySQL数据库具有用户和地点的经纬度。我不想指定用户和地点之间的距离,即没有最大或最小距离,只是我需要的最近的10。用户和地点共享同一个表。

1 个答案:

答案 0 :(得分:2)

您可以使用Haversine公式:

SELECT t.*, (6371 * ACOS(COS(RADIANS(lat_user)) * COS(RADIANS(lat)) *
            COS(RADIANS(lng) - RADIANS(lng_user) ) + SIN( RADIANS(lat_user)) *
            SIN(RADIANS(lat)))) AS distance    -- distance in kilometers
FROM yourTable
ORDER BY distance ASC
LIMIT 10

在上面的查询中,我假设lat_userlng_user是用户的纬度和经度。 latlng是给定地点(记录)的纬度和经度。

阅读this SO question了解详情。