如何根据纬度和经度获得给定范围内的所有点?

时间:2016-01-06 05:40:09

标签: php mysql math mysqli

场景:我有一个包含三个表,用户,位置,股票的数据库;

我拥有的用户:id, name, email

我所在的地点:id, place, lati, logi

我有股票:id, user_id, product, total_count, location_id

我很新,我设法加入所有表格:

$qry = "
SELECT COUNT(id)
  FROM stock
  LEFT
  JOIN users 
   ON stock.user_id= users.id
  LEFT
  JOIN locations
   ON stock.location_id= locations.id ";

但我希望能够做的是使用lati和logi按距离对其进行排序。因此,例如,我想要25英里内的所有内容,最接近最远的一切。

我如何解决这个问题?

我做了一些谷歌搜索,但我发现的一切都告诉我如何才能获得两点之间的距离,但我希望能够使用一组点,并获得X英里范围内的所有内容?

不确定这一切是否有意义?

1 个答案:

答案 0 :(得分:1)

我已经提出了以下简化的公式来计算我的应用程序:

pow(CentralLati - LatitudeofCircle, 2) + pow(CentralLongi - LongitudeofCircle, 2) <= 4

其中,

CentralLati,CentralLongi =&gt; A点的坐标

LatitudeofCircle,LongitudeofCircle =&gt; A点周围25kms点的坐标。

您可以调整上述公式以匹配您的数据库命名约定。

希望我能正确理解你的要求。