如何计算给定点(经度,纬度)给定半径内的所有点(经度,纬度)?

我有一个给定的点(经度,纬度),我希望得到所有的点范围,让我们说在给定点5英里半径?

我只是在这里猜测,但我认为你需要找到一种不同的方法。 如果你想尝试像Foursquare,谷歌地图等那样找到你当前位置5英里半径范围内的地方,我想你会发现这些服务并没有计算出该半径范围内的所有点数。然后将它们匹配到那些点的位置。

代码背后可能会有一些聪明的东西,这样做……

  1. 获取用户当前位置
  2. 找到当前位置所在的郊区(或找不到该城市)。还可以找到与此相邻的所有周边郊区。
  3. 查找这些郊区中的所有地点,并计算它们离当前用户位置的距离

这种过程是这些服务可以采用的一种潜在方法。 这涉及地点比较的小子集,其执行起来相对较快。 此外,地图上的地方通常还有一个与他们相关的郊区/城市,因此对地点的数据库查找会相当快,因为​​会有一个涉及郊区的索引。

如果你的目标是做这样的事情,我会尝试找出一种不同的比较点的方法,而不是简单地尝试计算你的半径中的所有东西。

当然,还有很多特定的算法可以更好地计算,但这不是我的专业领域,而且更适合其他论坛。 我并不是说这是最好的方法,但还有很多其他方法可以依赖已知的位置数据,这些数据会比您建议的要求更快更智能。