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

时间:2012-06-03 06:59:50

标签: java geolocation latitude-longitude

我有一个给定的点(经度,纬度),我想得到所有的点范围,比如给定点5英里半径?

1 个答案:

答案 0 :(得分:5)

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

代码背后可能会有一些聪明的做法......

  1. 获取用户当前位置
  2. 找到当前位置所在的郊区(或找不到该城市)。还可以找到与此相邻的所有周边郊区。
  3. 查找这些郊区内的所有地点,并计算它们离当前用户位置的距离
  4. 这种过程是这些服务可以采用的一种潜在方法。这涉及地点比较的小子集,其执行起来相对较快。此外,地图上的地方通常还有一个与他们相关的郊区/城市,因此对地点的数据库查找会相当快,因为​​会有一个涉及郊区的索引。

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

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