如何从Google API Android v2中坚持Marker?

时间:2012-12-07 11:26:34

标签: android google-maps

Marker未实现ParcelableSerializable接口,但我需要在活动onPause / onResume之间保留它,那么我该如何坚持它?我如何获得所有当前的标记列表(在任何地方找不到getMarkers()方法?)

想象一下下一个案例:我已添加Marker并启动AsyncTask以执行标记的长期运行任务和更新视图。任务正在进行中,我改变方向,重新创建活动。任务完成后如何更新该标记?让我们想象一下,我可以坚持标记的id和标记通过片段自动保存(只是想象),然后我怎样才能在重新创建活动后使用id找到它?

4 个答案:

答案 0 :(得分:10)

您可以保留MarkerOptions个对象,因为它们是Parcelable,然后从中重新创建Marker个对象。

答案 1 :(得分:4)

Marker不属于“UI状态”,因此不应在配置更改时保存/恢复。

在配置更改时,您只需使用与第一次显示Marker时填充的完全相同的代码重新创建所有GoogleMap

如果你真的想坚持下去(从我的观点来看这是一个非常糟糕的主意),这仍然可以通过onSaveInstance(Bundle outState)

手动完成。

修改:请参阅"Deep Dive Into Android State Restoration"

答案 2 :(得分:3)

答案 3 :(得分:1)

标记对象(适用于Android谷歌地图)现在支持使用Marker.setTag()使用标记存储任意数据对象,并使用Marker.getTag()检索数据对象。

例如,这允许跟踪特定标记上的点击次数。或者,存储其他数据,然后可以在自定义InfoWindow中显示。

请参阅Marker Data.