5

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

你能告诉我我该怎么做吗?是否有某个数学函数需要使用,或者 MySQL 中的某个函数之类的latitude_compare()

4

2 回答 2

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点:纬度经度

我的纬度/经度值以度为单位,如下所示:

德累斯顿:13.721067614881400 / 51.060033646337900

于 2013-04-17T14:54:21.257 回答
1

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

$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";
于 2013-05-15T07:09:37.683 回答