2013-05-13 66 views
1

非常驚訝這已經很難搜索。我的追捕只顯示我使用CLGeocoder以用戶友好的格式顯示信息。如何搜索特定半徑的位置?

我正在構建一個基於位置的應用程序,並且我具有保存位置(到服務器)並將它們列在表格視圖中的功能。但是,當我無法過濾和安排與我所在地區相關的位置時,這一點幾乎沒有用處。

我應該在設備或PHP中設置位置半徑嗎?

我目前的解決方案的想法是隻發送一個JSON字符串的座標到一個php腳本,通過MySQL數據庫查找位置字段小於X遠離用戶位置的每個條目(通過粗略的'其中X < 34.23049823 AND X> 34.44789874 AND Y < ...)類型的東西。我不認爲這是實現附近位置搜索功能的最簡單或最快捷的方式。

回答

1

當然,你可以在iOS中做到這一點。

// Given NSArray *locations as an array of CLLocation* that you wish to filter 

// and given a radius... 
CLLocationDistance radius = kSomeRadius; 

// and given a target you want to test against... 
CLLocation* target = [[CLLocation alloc] initWithLatitude:someLat longitude:someLon]; 


NSArray *locationsWithinRadius = [locations objectsAtIndexes: 
           [locations indexesOfObjectsPassingTest: 
            ^BOOL(id obj, NSUInteger idx, BOOL *stop) { 

             return [(CLLocation*)obj distanceFromLocation:target] < radius; 

            }]]; 

[target release]; 

源 - Objective-c search locations with radius

+0

這是很好的,直到我不希望每個數據點存儲在一個單一的陣列做。關於如何最好地將它應用於選擇30+以上的任何想法 - 來自5000+的(遠程)數據庫的結果?按照緯度/經度順序列出我的數據庫條目是否最符合時間? – user 2013-05-13 01:31:22

+0

按lat/long列出的是一種方法,或者對於用戶來說更自然的是相對於其當前位置增加的距離排序的地點,其中最接近的地方首先列出。或者其他任何啓發式的,如某些地方可能會被該用戶的朋友(如果您有這種信息)經常訪問,因此將它顛覆到頂端。 – 2013-05-13 02:07:41

+0

那麼,我的意思是在數據庫中。當然,我打算在應用程序中顯示最近的位置。但是我試圖想象我應該如何構建我的數據庫來搜索位置,以及根據用戶位置查詢數據庫的最有效方法。 – user 2013-05-13 15:05:19