基于lat lon坐标距离的sql搜索

时间:2014-12-11 10:55:23

标签: mysql

我试图根据到指定纬度/经度坐标的距离从mysql数据库中选择信息。

表中的所有值都有一个lat / lon列,所以使用用户当前的lat和lon我想得到表中的所有结果,让我们说在1英里内接近指定的坐标。

我找到了这段代码,但我希望有人能用非常简单的术语解释它,例如我把lat和lon值放在哪里我想成为我的焦点,如何确定搜索半径有多大以及查询中的每个值是什么?

SELECT *, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(long) - radians('".$lng."')) + sin(radians('".$lat."')) * 
sin(radians(lat)))) 
AS distance 
FROM carpark WHERE distance < 15 ORDER BY distance

我知道这已经被问到了,但我仍然需要完全理解,所以我可以在我的代码中提出这个问题,非常感谢你提前做出回应并为任何不愉快道歉

1 个答案:

答案 0 :(得分:0)

$ lat和$ lng是焦点坐标,15是最大范围(在你的例子中为1)。 Lat和Long是表中的列名称,称为“carpark”。 我不确定计算距离的单位。

编辑:看起来这个计算方法是英里数。要按公里而不是里程搜索,请将3959替换为6371

希望有所帮助。