0

私は、とりわけ以下を含むデータ構造を持っています:

  • NSNumberPOI(関心のあるポイント)の重要性を示す
  • CLLocationPOIの座標を含む。

POIを重要度で並べ替えることができ、各POIに固有の重要度係数があるとすると、表示された領域内にあるPOIを含むサブアレイを取得するための最良の方法は何MKMapViewですか?

数千のPOIがある可能性があるため、すべてのPOIをチェックするだけでは非効率に思えます。ズームレベルが変更されるたびにこのプロセスを繰り返したいと思います(したがって、表示される領域では、最も重要な##のみを表示します)。

4

1 に答える 1

0

私はあなたが探しているものは次のとおりだと思います:

- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect

Appleのドキュメントを引用する:

このメソッドは、マップの特定の部分にある注釈オブジェクトをすばやく取得する方法を提供します。このメソッドは、アノテーションプロパティ内のオブジェクトを自分で線形検索するよりもはるかに高速です。

iOS 4.2以降でのみ利用可能であることに注意してください。以前のiOSバージョンには、カスタムコード以外の解決策はありません。

編集あなたのコメントについて:私の推測では、数千の注釈の場合、上記の方法でうまくいくはずMKAnnotationです。軽量のプロトコルであり、座標でフィルタリングして配列をスキャンしても問題ありません。ただし、iPhone 4で動作する数千を追加しないように注意してくださいMKAnnotationView。すでに追加されていますが、マップをスクロールすることはほとんどできません:)

それから私は提案します:

  1. その方法を使用して、コードをすばやく作成し、簡単に実行してから、デバイスでいくつかのパフォーマンステストを実行します
  2. パフォーマンスが十分でない場合....または以前のiOSバージョンをサポートする必要がある場合は、魔法を使わずに、独自のコードを記述してください。(それほど難しいことではありませんが、リージョンなどを変換するためのユーティリティメソッドがあります)

メモリについては、これらのデバイスにはアプリ用に少なくとも64MBの空きメモリがあり、そうでない場合でも一部のプロセスが強制終了されます。数Kのアノテーションに怖がらないでください。特にこのような集中的なプロセスでは、メモリリークに注意してください。

于 2011-04-17T09:22:14.767 に答える