是表中存储的项目半径范围内的当前位置?

时间:2011-12-02 08:22:00

标签: php mysql geolocation gps

我有一个表,每行存储lon / lat / radius(英里)。我想弄清楚的是如何只选择我当前点所在的行。

这与查询当前位置的给定半径内的位置相反,而实际上我想查询当前点所在的位置。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

这很容易成为数学问题。 2点(x1, y1)(x2, y2)之间的距离可以按如下方式计算:

statement

简单的毕达哥拉斯。查询您的数据库,第一点是您要查找的点,第二点是您从数据库中获得的点,如果上述语句的结果小于半径,则它在您的范围内。 (假设所有单位都匹配。你可能想要将纬度/经度差转换为km /你的半径是什么单位)

graph

答案 1 :(得分:1)

请注意,如果您希望对良好的ol'进行准确的半径计算。地球纬度/经度,你必须使用比接受答案中提到的简单的毕达哥拉斯距离更复杂的功能;寻找"大圆距离",例如已发布in another thread;然而,为了你的目的,毕达哥拉斯的距离应该足够接近我猜;它提供了一个相当不错的近似值,除非你的纬度/经度位置在极点附近。

而且,为了完整起见,您的问题实际上并不是与问题相反的问题"我所在位置周围某个半径的哪些位置?" - 它完全相同,只是从另一个方向 - 但由于距离计算是对称的,所以你检查的方向实际上并不重要!