MySQL / PHP在范围之间选择Lat long

时间:2017-07-09 14:43:37

标签: php mysql geolocation range distance

我希望,我的英语足以解释我的问题。

我想创建一个循环搜索。用户输入特定半径并接收影响此半径的所有条目。为此,我在我的数据库中指定了纬度和经度。但是,现在我不知道如何在我的MySQL查询中加载正确的条目,这些条目也应按距离排序。

在互联网上,我发现了这段代码,我不明白。但也许你可以帮我把它改成我需要的东西(我是MySQL和PHP的初学者)。

来自用户实际位置的参数被赋予脚本的功能$user_lat$user_long

以下是我在网上找到的一些代码,但我不知道如何将其应用于我的情况:

SELECT F.*,K.ort,
((ACOS(SIN(K2.lat * PI() /180) * SIN(K.lat * PI() /180) + COS(K2.lat * PI() /180) * COS(K.lat * PI() /180) * COS((K2.lon - K.lon) * PI() /180)) *180 / PI()) *60 * 1.1515 * 1.609344) AS distance
FROM geodb_firmen AS F
JOIN geodb_koordinaten AS K ON K.plz=F.plz
LEFT JOIN geodb_koordinaten AS K2 ON K2.plz='$plz'
HAVING distance <= $dist
ORDER BY distance

表格结构:

+---+-------------+--------------+
| # |    Name     |     Type     |
+---+-------------+--------------+
| 1 | id          | int(11)      |
| 2 | user_id     | int(11)      |
| 3 | lati        | varchar(100) |
| 4 | longi       | varchar(100) |
| 5 | signup_date | timestamp    |
+---+-------------+--------------+

A picture representation of the table structure can also be found here

0 个答案:

没有答案