更新单个项目GoolgeMap Cluster

问题描述 投票:6回答:3

我正在使用this libray在Android中集群GoogleMap。我的问题是如何从昨天更新我通过谷歌的单个项目,没有解释更新单项的答案。我在我的项目中使用websocket所以我需要更新从websocket接收的项目数据。看下面我的实现。

我的概念是每当我从websocket接收数据时都会执行mClusterManager.remove(item)mClusterManager.add(item)+ mClusterManager.cluster()。

和hasmap一起识别循环上的对象,同时添加到集群中:qazxsw poi

现在,每当收到websocket数据时,我都会这样做,

hashmap.put(_id,mClusterItem[i]);

但是,上面的代码首先在第一个数据接收时起作用,然后从第二次起它将继续添加标记并且无法删除,这意味着找不到mClusterManager.remove(hasmap.get(_id))。而appClusterItem [0]是因为我不能使用hashmap.get(_id);在上面的情况下,因为它给出了预期的错误变量。无论如何要删除相同的对象并在该地方添加对象?

java android websocket hashmap markerclusterer
3个回答
1
投票

我还尝试通过mClusterManager.remove从集群中删除标记,并且遇到一些问题。所以在我的情况下,当我收到数据更改时,我做了这个:我删除了我需要从列表中删除的项目,清除群集上的所有标记与 onDataReceive(String _id,String name, double latlng, ....){ mClusterManager.remove(hashmap.get(_id)); appClusterItem[0] = new AppClusterItem(.....); mClusterManager.add(appClusterItem[0]) // Here how can I add item mClusterManager.cluster(); } 并将新数据放入群集。


1
投票

ClusterManager的mClusterManager.clearItems();定义如下

removeItem()

您需要传递可能从public void removeItem(T item) { mAlgorithmLock.writeLock().lock(); try { mAlgorithm.removeItem(item); } finally { mAlgorithmLock.writeLock().unlock(); } } 扩展的自定义Item对象。检查库类定义的ClusterItem中的方法文档。


0
投票

添加时,您是否尝试在重新删除和重新集群时重新集群?我想我用那个解决了我的问题。你的代码是:

here

让我知道它是否适合你!

© www.soinside.com 2019 - 2024. All rights reserved.