2011-07-23 20 views
0

私はNSDictionariesの配列を持っています。それらの辞書には緯度と経度というキーがあります。指定された場所から特定の半径にあるすべての辞書を検索することは可能ですか?例えば、私は "houston、tx"または "77381"と500マイルの半径を指定することができ、それは検索するでしょうか?おかげさまで 半径(ココアタッチ)の場所を検索

答えて

1

本当にこれを行うことができます。より単純な方法があるかもしれませんが、私が見て使った方法は、CLLocationインスタンスを作成し、緯度と経度で初期化した後、CLLocation Class ReferenceにあるdistanceFromLocation:メソッドを使用します。比較場所としてCLLocationインスタンスがある場合、返される値が指定された距離よりも小さいかどうかを照会するifステートメントを設定できます。テンポラリCLLocationをリリースして、メモリリークが発生しないようにしてください。

+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];