2012-12-07 9 views
5

Markerは、Parcelable,Serializableインターフェイスを実装していませんが、アクティビティ/onResumeの間にそれを維持する必要があります。どうすればそれを維持できますか?どのように私は現在のすべてのマーカーリストを取得することができます(どこでもgetMarkers()メソッドを見つけることができません)?Google API Android v2のマーカーを永続化するにはどうすればよいですか?

次のケースを想像してください。私はMarkerを追加し、AsyncTaskを開始して、マーカーの長期実行タスクと更新ビューを実行しました。タスクが進行中で、向きが変わると、アクティビティが再現されます。タスクが完了したら、マーカーをどのように更新できますか?私はマーカーのIDを維持することができますとマーカーは自動的にフラグメントによって保存されます(想像してください)、どのように私はidを使用して見つけることができますか?

答えて

4

Marker s「はUIの状態」の一部ではないので、設定の変更に保存/復元するべきではありません。

コンフィグレーションを変更すると、最初に表示されたGoogleMapと同じコードを使用して、すべてMarkerを再作成します。

あなたは本当に(ビューFO私の視点から、本当に悪い考えである)、それらを保持したい場合は、これはonSaveInstance(Bundle outState)


編集に手動でそうすることによっても可能です:"Deep Dive Into Android State Restoration"

+1

マーカーはUIの一部で、アイコン、タイトル、スニペット、可視性の各プロパティが含まれています。フラグメントが保持されていたと仮定して、方向を変更した後、すべてのマーカーを更新する必要があります。私はgetMarkerById()メソッドを持たず、後でそれを復元するために永続化することができないので、どうすればいいですか? – 4ntoine

+1

それを再生して数日後、私はそれを見つける/保持する方法がないので、マーカーを傷つけていると告白することができます。 **フラグメント/アクティビティを再作成し、マーカーを再度追加する**唯一の回避策だと思われます – 4ntoine

+0

@ 4ntoine保持フラグメントは、アクティビティリークにつながるため、悪い考えです –

9

を参照してください。 Parcelableであるため、MarkerOptionsオブジェクトを保持してから、Markerオブジェクトを再作成することができます。

+0

これは絶対に正しい答えです。ありがとうございます! – avalancha

+0

あなたの答えに感謝私はMarkerオブジェクトまたはMarkerOptionsオブジェクトを保存しようと考えていましたが、あなたは私に答えを与えました。 –

0

マーカーオブジェクト(Android googleマップ用)は、Marker.setTag()を使用してマーカー付きの任意のデータオブジェクトを保存し、Marker.getTag()を使用してデータオブジェクトを取得するようになりました。

これにより、たとえば、特定のマーカーのクリック数を追跡することができます。または、追加のデータを保存してから、それをカスタムInfoWindowに表示することができます。

Marker Data.

関連する問題