我试图根据到指定纬度/经度坐标的距离从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
我知道这已经被问到了,但我仍然需要完全理解,所以我可以在我的代码中提出这个问题,非常感谢你提前做出回应并为任何不愉快道歉
答案 0 :(得分:0)
$ lat和$ lng是焦点坐标,15是最大范围(在你的例子中为1)。 Lat和Long是表中的列名称,称为“carpark”。 我不确定计算距离的单位。
编辑:看起来这个计算方法是英里数。要按公里而不是里程搜索,请将3959替换为6371
希望有所帮助。