0

私のアプリでは、多くの目印を描画し、それらの場所を継続的に更新する (または古くなった場合は削除する) 必要があります。現在、いくつかのカスケード ループとシーケンシャル ループを使用していますが、これが最も効率的な方法ではないのではないかと心配しています。これが私が今までこの仕事をする方法です:

  1. 描画する目印ごとに、最初に MapKit 注釈配列 (作成日と一意の識別子を追加したカスタム MKPlacemark によって作成) で、描画する目印の一意の ID を検索します。目印が見つかった場合はその場所のみを更新し、そうでない場合は地図に新しい注釈を追加します。
  2. MapKit 注釈配列内の各目印について、現在から作成日までの経過時間が 10 秒を超えているかどうかを確認し、10 秒を超えている場合は、その注釈を地図から削除します。

この 2 つのループを 2 秒ごとに繰り返します。

問題は、20 個以上の目印を管理すると、ループに時間がかかりすぎて、更新と削除のプロセスが期待どおりに機能しないことです。

アノテーション配列を操作する最速の方法はどれですか? 各注釈を削除してすべて再描画する方が速いですか?

4

1 に答える 1

0

問題を解決しました。私は正しい方法でそれをしていました。唯一残った問題は、マップ更新中に画面がフリーズすることでした。このため、別のスレッドで更新/削除プロセスを実行することを解決しました。これは、目印を更新または削除する準備ができたら、バックグラウンド スレッドがメイン スレッドで地図の更新を呼び出す必要があることを意味します (地図はメイン スレッドで更新する必要があります)。

于 2012-12-16T20:44:07.987 に答える