3

状況は次のとおりです。カスタム アノテーションを使用して、マップ上に画像を表示しています。すべて正常に動作しますが、AnnotationView のサイズを変更して視覚的に改善したいと思います。これにより、マップが縮小されると縮小されます。明らかに、より多くの注釈が画面を埋め尽くすので、それらが互いに重なりすぎず、ユーザーがより多くの注釈を表示できるように縮小する必要があるためです。(もちろん、地図を再度ズームインしたときに AnnotationViews を拡大したいと思います)。

regionDidChangeAnimated が呼び出されるたびに、マップからすべての注釈を削除して再度追加することで、これを達成しました。ただし、これらの画像はインターネットから読み込まれるため、(注釈が削除されているため) 画像を再度ダウンロードしても意味がないようです。

状況を十分に説明できたことを願っています。今後も SO に貢献できることを願っています。

前もって感謝します。

PS私はiOS 4.0で開発しています

4

2 に答える 2

1

あなたはすでに正しい道を進んでいるようで、唯一の本当の問題は画像のダウンロードです。それらを受け取ったときにドキュメントディレクトリ(またはアプリの終了時にそれらを移動させたい場合はキャッシュディレクトリ)に書き込んでキャッシュできない特別な理由はありますか?それらを表示する前に最初にそこを見てください。

于 2010-12-14T06:31:40.010 に答える
1

iOS 4.0 を使用しているため、MKAnnotationView の代わりに MKOverlay プロトコルに準拠するクラスを使用することをお勧めします。地図にズームをオーバーレイし、適切にスケーリングします。おそらく、1 つのオーバーレイを使用してすべての注釈を処理できます。Apple が 2010 年の WWDC で提供した HazardMap のデモをhttp://developer.apple.comで確認してください。

または、k 最近隣アルゴリズムのようなものを使用して、ズーム スケールごとに注釈をグループ化することもできます。ただし、多くの注釈がある場合は、少し遅くなる可能性があります。数千のアノテーションで 1 回試してみましたが、発生したパフォーマンス ヒットは気に入りませんでした。ただし、この方法では 1000 個未満のアノテーションで十分なパフォーマンスが得られると思います。

于 2010-12-14T06:18:32.967 に答える