2012-06-03 162 views
0

我有一個給定的點(經度,緯度),我想要得到所有的點範圍可以說給定點的5英里半徑?如何計算給定點(經度,緯度)給定半徑內的所有點(經度,緯度)?

+0

我認爲你應該更具體...這是一個Java的問題吧? –

+2

[你有什麼嘗試?](http://www.whathaveyoutried.com/)我的意思是*除了*問在網上隨機的陌生人爲你做。 –

+1

這與Java沒有任何關係,它是一個基本的球形幾何問題,它是SO的離題。順便說一句,「所有點」將消耗比整個宇宙中現有的更多的內存。 –

回答

5

我只是猜測在這裏,但我認爲你需要找到一種不同的方法。如果您正在嘗試使用Foursquare,Google地圖等查找您當前位置5英里半徑範圍內的地點,我想您會發現這些服務並不是計算的所有點半徑,然後將它們匹配到這些點的位置。

有可能會是做這樣的事情的代碼背後的一些智慧...

  1. 獲取用戶當前位置
  2. 查找郊區(或做不到這一點,覺得這個城市),目前位置存在。還可以找到與此相鄰的所有周邊郊區。
  3. 找到這些郊區內的所有地方,並計算出它們是從當前用戶位置

這種過程是可以通過這些服務可以採用一個潛在的方法有多遠。這涉及地點比較的一小部分,這相對較快地執行。此外,地圖上的地點通常還有與之相關的郊區/城市,因此對地點的數據庫查詢將非常快速,因爲會有涉及郊區的索引。

如果你的目標是做這樣的事情,我會試圖找出一個不同的方式來比較點,而不是簡單地試圖計算你的半徑的一切。

當然,也會有很多具體的算法來計算這個更好,但這不是我的專業領域,並且會更適合於另一個論壇。我並不是想說這是做這件事的最好方式,但還有很多其他方法可以依靠已知的位置數據,這些數據會比您的建議要求更快,更明智。

相關問題