【发布时间】:2015-09-29 23:03:24
【问题描述】:
我正在尝试找到一种在我的代码中正确实现getMapAsync() 的方法,我将不得不与谷歌Marker 打交道。您可能知道getMapAsync() 在onMapReady 中准备好时返回一个非空映射。
所以基本上我将不得不对onMapReady 中的标记做所有事情。问题是,在我的代码的各个部分中,我用map.addMarker(new MarkerOptions()) 调用我在onMapReady 中初始化的谷歌标记,但我不知道这些标记是否已经初始化(我可以在@987654329 中添加boolean @ 知道我的 Marker 是否在哪里初始化,但如果这个布尔值是 false 我该怎么办?对我的标记什么都不做?)。
所以基本上我希望能够获得与同步getMap() 方法相同的行为但是我肯定会获得非空映射。因为我很确定我不能在我的主线程上添加“服务员”(例如CountdownLatch),所以我找不到等待地图准备好的方法,然后再继续执行其余代码我的主线。谢谢
【问题讨论】:
-
明显的解决方案从两个地方调用“添加代码”(创建标记和onMapReady)......在“添加代码”中检查地图是否准备好,如果没有,将标记存储在一些标记变量列表中(字段)...如果地图准备好添加标记并从列表中添加所有标记,清除列表...当然添加一些线程竞赛检查
-
if not, store marker in some list of markers variable(field)使用map.addMarker(new MarkerOptions())检索标记实例,如果我想拥有Marker实例,则需要初始化map。 -
嗯,好的,好的……所以存储 MarkerOptions 列表或创建它们所需的其他数据……但是你明白了吗?您需要诸如待定标记(或用于创建它们的数据)之类的东西来添加...
-
我就是这么做的。但想象一下我这样做:
myMarkerOption.icon(xx)在我的MarkerOption实例上,我认为它不会自动触发到地图上适当的Marker(无论它是否已初始化),是吗? -
将
MarkerOption存储在 var 中对我来说是不可行的,因为使用它的设置器不会反映Marker上的更改
标签: android google-maps-android-api-2