gpt4 book ai didi

android - 如何使用 Cluster Manager 更改标记在 Google Map 上的可见性? (安卓)

转载 作者:搜寻专家 更新时间:2023-11-01 09:26:55 24 4
gpt4 key购买 nike

我有一个简单的应用程序,可以在 map (Google Map) 上显示很多标记。目前我有超过 3,000 个标记,并且随着数据库变大,这个数字还在不断增加。

我还有一些复选框,用于指示要显示的标记,反之亦然。

最初我是这样添加每个标记的(在遍历每个位置的循环中)

Marker marker;
marker = mMap.addMarker (markerOptions);
mMarkerArrayList.add(marker);

然后当用户与复选框交互时,我只是让标记可见/不可见。这样可以更快地删除和重新添加标记。Checkbox Change Listener 中的代码是这样的:

for (Marker marker : mMarkerArrayList) {
if (condition) {
marker.setVisible(false);
}
}

然后在复选框的另一个更改上再次使可见。

但是,一开始单独添加所有这些标记需要很长时间(1-2 秒),并且由于只能在 UI 线程中添加标记,因此卡住了 UI(包括我的进度条)时间。

经过大量研究,一无所获,我唯一能做的就是使用 ClusterManager(android-maps-utils 库)添加标记。这加载速度是原来的两倍,并且不会阻塞我的 UI。添加代码是这样的(这里的 myLocation 是我的 MyLocation 类的对象,它保存每个点的 lcoation 和相关数据)。

for (MyLocation myLocation : mMyLocationArrayList) {
mClusterManager.addItem(myLocation)
}

现在的问题是将复选框链接到这些 ClusterItem 对象。我在库中找不到任何方法或字段来更改这些标记 (ClusterItem) 的可见性。在以前的方法中(改变可见性)几乎是瞬时的(速度足够快,用户不会感觉到任何滞后)。但是,现在,我每次都需要添加和删除这些标记,并且存在滞后,并且对用户来说非常明显。

有人有什么建议吗?

最佳答案

您应该能够使用 mClusterManager.getMarkerCollection().getMarkers() 来获取标记集合,然后以与之前相同的方式隐藏某些标记:

Collection<Marker> markerCollection = mClusterManager.getMarkerCollection().getMarkers();

for (Marker marker : markerCollection) {
if (condition) {
marker.setVisible(false);
}
}

关于android - 如何使用 Cluster Manager 更改标记在 Google Map 上的可见性? (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com