找出最近的用户MySQL

时间:2012-05-27 16:20:43

标签: php mysql geolocation

我有一个名为users的数据库,其列latitudelongitude,我想找出最近的用户(users表中的用户)距离$_POST提供的某个纬度和经度半径50公里范围内。

你能告诉我怎么做吗?是否需要使用某个数学函数,或MySQL中的函数如latitude_compare()或其他什么?

2 个答案:

答案 0 :(得分:2)

您可以这样做:

SELECT *,

(ACOS((SIN(RADIANS(ref_latitude))*SIN(RADIANS(latitude))) + 
(COS(RADIANS(ref_latitude))*COS(RADIANS( latitude ))*COS(RADIANS( longitude)
-RADIANS(ref_longitude)))) * 6371) AS distance

FROM table
ORDER BY distance ASC

A点: ref_latitude ref_longitude

B点: 纬度 经度

我的Lat / Lon值以度为单位,如下所示:

德累斯顿:13.721067614881400 / 51.060033646337900

答案 1 :(得分:1)

这是我一直在使用的代码,这是以英里为单位。它选择给定半径内的所有lat和lng。

$q = "SELECT * ( 3959 * acos( cos( radians($current_lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($current_lng) ) + sin( radians($current_lat) ) * sin( radians( lat )))) AS distance FROM users HAVING distance < $radius";