2012-02-18 118 views
1

我的iPhone應用程序中有大約800個地理座標作爲平面文件。我正在尋找一種有效的方法來找到一個將採用當前用戶位置的算法,循環遍歷所有這800個座標,並只拉動10英里附近的座標。這可以做得多有效?也請分享鏈接,讓我對這背後的數學有基本的瞭解。查找離我目前GPS位置最近的座標

+1

你或許可以看到這個問題http://stackoverflow.com/questions/913576/finding-the-closest-point-to-a-given-point他們提供了一個簡單的例子,雖然它不是用Objective-C編寫。 – 2012-02-18 00:30:49

+0

我認爲你已經得到了與鏈接問題不同的問題,因爲它試圖找到_the closest_,並且你正試圖在指定的距離內找到_all_,對嗎? – sarnold 2012-02-18 00:46:36

回答

4

這是一個link的問題,其中OP的最終代碼可以幫助您瞭解如何從座標創建位置以及如何計算它們之間的距離。

這裏是如何創建一個位置:

CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; 

這裏是如何找到兩個位置之間的距離:

CLLocationDistance distance = [locationA distanceFromLocation:locationB]; //CLLocationDistance is a double 

但是你不必位置排序。只需循環遍歷它們並將附近的位置添加到數組中即可。

2

首先,我認爲每個人都同意計算距離,你需要使用Haversine函數。

Finding the closest point to a given point

如果搜索的時間是一個問題(迭代你所提到的800個數據點),那麼怎麼樣二維散列?只需根據lat/long將數據集加載到存儲桶或區域中 - 那麼您不必搜索整個數據集 - 只有可能包含匹配的存儲桶。

Good hash function for a 2d index

+0

這正是我正在尋找的感謝.. – dreampowder 2013-12-21 20:11:21

+0

如果我在地圖上有10點。我想找到給定的「目標」點的最近點。我得到我的尺子並計算從「目標」到每個點的距離。我不會找到最近的點嗎?爲什麼我需要沙灘車? – dimitris93 2016-05-18 23:28:23

相關問題