2011-01-27 37 views
2

在我的應用程序中,我有4個地方的經度和高度(給定)。現在我想找到離用戶最近的地方。如何計算用戶最近的位置?

所以任何人都可以告訴我它的解決方案或爲我提供一些源代碼或演示。

感謝所有

+1

你還沒有接受任何問題的答案,直到現在 - 請改變這一點。從常見問題解答開始:當您決定哪個答案對您最有幫助時,請通過單擊答案左側的複選框提綱將其標記爲接受的答案。這讓其他人知道你已經收到了你的問題的一個很好的答案。這樣做很有幫助,因爲它向其他人表明您從社區中獲得價值。 (如果你不這樣做,人們會經常禮貌地要求你回去接受更多問題的答案!) – oezi 2011-01-27 14:22:35

回答

3

創建點的CLLocation:

CLLocation* locationx = [[CLLocation alloc] initWithLatitude:lat longitude:lon]; 

而且點與比較:

double distance = [userposition distanceFromLocation:locationx]; 

保持最近的位置。

編輯: 如果你真的是「經度和高度」,那麼我不知道如何。

-1

例如,用戶位於x = 0,y = 0 通過執行計算距離:SquareRoot(x2^2 & y2^2) 你會得到一個距離。期待通過所有點,並比較其距離最短

+0

這真的不是那麼容易,因爲地球不平坦 - 所以我們必須使用http://en.wikipedia.org/wiki/Geographic_coordinate_system ...它不像一張方紙上的計算距離。 (對於很小的距離,這是可能的工作,但這是錯誤的,我們不知道Priyankas距離有多大) – oezi 2011-01-27 14:20:05

+0

這隻適用於2d歐幾里得空間。不是地球表面,而不是經度,緯度座標。它只會在低緯度和短距離內給出一個合理的數字。 – winwaed 2011-01-27 14:20:09

0

picknick描述了一種本地類方法。

這可能要使用Haversine公式(搜索Web或stackoverflow進行討論)來測量距離。 根據我的經驗,編寫自己的Haversine通常比使用系統/應用程序提供的更快,儘管這是在Windows上,COM開銷可能「存在問題」,因爲它是!

的半正矢(以及許多類似的幾何上的地球)的公式可以在這裏找到:

http://williams.best.vwh.net/avform.htm

(這是我幾年的其中一個書籤我回去參考定期根據!)

相關問題