2012-06-03 122 views
0

我有一个给定的点(经度,纬度),我想要得到所有的点范围可以说给定点的5英里半径?如何计算给定点(经度,纬度)给定半径内的所有点(经度,纬度)?

+0

我认为你应该更具体...这是一个Java的问题吧? –

+2

[你有什么尝试?](http://www.whathaveyoutried.com/)我的意思是*除了*问在网上随机的陌生人为你做。 –

+1

这与Java没有任何关系,它是一个基本的球形几何问题,它是SO的离题。顺便说一句,“所有点”将消耗比整个宇宙中现有的更多的内存。 –

回答

5

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

有可能会是做这样的事情的代码背后的一些智慧...

  1. 获取用户当前位置
  2. 查找郊区(或做不到这一点,觉得这个城市),目前位置存在。还可以找到与此相邻的所有周边郊区。
  3. 找到这些郊区内的所有地方,并计算出它们是从当前用户位置

这种过程是可以通过这些服务可以采用一个潜在的方法有多远。这涉及地点比较的一小部分,这相对较快地执行。此外,地图上的地点通常还有与之相关的郊区/城市,因此对地点的数据库查询将非常快速,因为会有涉及郊区的索引。

如果你的目标是做这样的事情,我会试图找出一个不同的方式来比较点,而不是简单地试图计算你的半径的一切。

当然,也会有很多具体的算法来计算这个更好,但这不是我的专业领域,并且会更适合于另一个论坛。我并不是想说这是做这件事的最好方式,但还有很多其他方法可以依靠已知的位置数据,这些数据会比您的建议要求更快,更明智。

相关问题