【问题标题】:Work out the nearest users MySQL找出最近的用户 MySQL
【发布时间】:2012-06-02 06:40:44
【问题描述】:

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

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

【问题讨论】:

标签: php mysql geolocation


【解决方案1】:

你可以这样做:

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_longitude

B点: 纬度 经度

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

德累斯顿:13.721067614881400 / 51.060033646337900

【讨论】:

    【解决方案2】:

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

    $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";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 2013-07-11
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2017-05-22
      • 1970-01-01
      相关资源
      最近更新 更多