2011-07-23 129 views
0

我有一個NSDictionaries數組。這些字典有經度和緯度鍵。是否有可能通過該數組搜索位於特定位置的特定半徑內的所有字典。因此,例如,我可以指定「houston,tx」或「77381」和500英里的半徑,它會搜索? 謝謝。半徑搜索位置(可可觸摸)

回答

1

你的確可以做到這一點,是的。可能有一個更簡單的方法,但我看到和使用的方法是創建CLLocation實例,使用經度和緯度進行初始化,然後使用CLLocation Class Reference中的distanceFromLocation:方法。由於您的比較位置有一個CLLocation實例,因此您可以設置if語句來查詢返回的值是否小於您指定的距離。只是一定要釋放臨時CLLocation s,以免有任何內存泄漏

+0

幾乎正是我在找什麼!謝謝。你知道我如何將城市/郵政編碼轉換爲CLLocation嗎?謝謝! – rungademangoes

+0

這是在Core Location或MapKit框架中沒有完全覆蓋的標準選項。但這是可能的。實際上,我最新的應用程序只是爲特定的部分做的。您需要做的是使用[Google地理編碼API](http://code.google.com/apis/maps/documentation/geocoding/)。該網站有助於解釋發生了什麼。基本上,您將通過「NSConnection」和「NSURLRequest」發送請求,然後根據您的偏好使用XML或JSON解析返回的數據。如果你遇到麻煩,我很樂意嘗試引導你沿着 – justin

+0

好吧!感謝你的幫助 – rungademangoes

0

我不知道任何捆綁的功能來做到這一點。

只需對數組進行迭代/枚舉即可。 有十幾種方法。

for (NSDictionary *withLatLong in arrayOfDicts) { 
// do work… 
} 

[arrayOfDicts enumerateObjectsUsingBlock:^(id x, NSUInteger index, BOOL *stop){ 
    NSDictionary *withLatLong = (NSDictionary *)x; 
    // do work… 
}]; 

NSMutableArray newArray = [arrayOfDicts mutableCopy]; 
[newArray filterUsingPredicate:predicate];