2012-01-16 7 views
2

クラスEventOnMapのオブジェクトを含む配列リストがあります。すべてのオブジェクトは、メンバー変数eventLatitude,eventLongitude、およびeventTypeを(他のメンバーの中でも)持っています。リストは1秒に数回まで規則的に更新されます(オブジェクトの挿入や削除など)。リストは大きすぎず、最大50個の要素を含んでいます。オブジェクトのリストからマップオーバーレイを作成/更新する

私のmapViewこれで、リストに応じてすべてのイベントのオーバーレイを動的に作成して更新したいと考えています。リストはオーバーレイのステータスを表します。つまり、対応する経度/緯度の値がリスト内で変更されたときに、オーバーレイの位置を更新したいということです。

誰かがこれを行う方法を知っていますか? ありがとうございます!

答えて

2

この場合は、配列内のすべての項目のオーバーレイを作成するよりも良い場合があるItemizedOverlayクラスをご覧ください。

もっと大きな問題は、間隔が実際には小さいためです。 ItemizedOverlayが頻繁に更新されると、そのパフォーマンスがどうなっているのか分かりません。オーバーレイ上のアイテムは編集できません。アイテムの位置を変更するには、削除してItemizedOverlayに再度追加し、populate()を呼び出します。しかし、これはすべてのアイテムを再び処理します。

おそらく、地図上のすべてのアイテムを扱うカスタムオーバーレイを作成する方がよいでしょう。

+0

ありがとう、Flo!これは良い考えです!そのようなカスタムオーバーレイはどのように見えますか?あなたは私にヒントを与えることができますか? – Palund

+0

オーバーレイクラスから継承するクラスを実装する必要があります。クラスでは、描画メソッドをオーバーライドして、配列のアイテムの描画を実装する必要があります。カスタムオーバーレイクラスを実装する方法を知るには、この項目をチェックしてください。 http://stackoverflow.com/questions/4428730/creating-custom-overlay-on-the-mapもちろん、ItemizedOverlayを試すこともできますが、おそらく十分高速です。 – Flo

関連する問題