私はあなたが探しているものは次のとおりだと思います:
- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect
Appleのドキュメントを引用する:
このメソッドは、マップの特定の部分にある注釈オブジェクトをすばやく取得する方法を提供します。このメソッドは、アノテーションプロパティ内のオブジェクトを自分で線形検索するよりもはるかに高速です。
iOS 4.2以降でのみ利用可能であることに注意してください。以前のiOSバージョンには、カスタムコード以外の解決策はありません。
編集あなたのコメントについて:私の推測では、数千の注釈の場合、上記の方法でうまくいくはずMKAnnotation
です。軽量のプロトコルであり、座標でフィルタリングして配列をスキャンしても問題ありません。ただし、iPhone 4で動作する数千を追加しないように注意してくださいMKAnnotationView
。すでに追加されていますが、マップをスクロールすることはほとんどできません:)
それから私は提案します:
- その方法を使用して、コードをすばやく作成し、簡単に実行してから、デバイスでいくつかのパフォーマンステストを実行します
- パフォーマンスが十分でない場合....または以前のiOSバージョンをサポートする必要がある場合は、魔法を使わずに、独自のコードを記述してください。(それほど難しいことではありませんが、リージョンなどを変換するためのユーティリティメソッドがあります)
メモリについては、これらのデバイスにはアプリ用に少なくとも64MBの空きメモリがあり、そうでない場合でも一部のプロセスが強制終了されます。数Kのアノテーションに怖がらないでください。特にこのような集中的なプロセスでは、メモリリークに注意してください。