2016-02-03 34 views
3

这是一个后续行动,我刚才的问题:ClusterManager isn't redrawing MarkersClusterManager.clearItems()不明确的项目

我已经做了一些调查,发现一些有趣的事情。 ClusterManager.clearItems()并不总是清除项目。

添加一个标记为ClusterManager后,我运行此块:

mClusterManager.clearItems(); 
Log.d(TAG, "Marker list is empty: " + String.valueOf(mClusterManager.getMarkerCollection().getMarkers().isEmpty())); 
for (Marker m : mClusterManager.getMarkerCollection().getMarkers()) { 
    Log.d(TAG, m.getId() + "| " + m.getPosition()); 
} 

它提供了以下的输出:

02-03 12:30:52.953 14328-14328/com.app.mobile D/app:MapsActivity: Marker list is empty: false 
02-03 12:30:52.954 14328-14328/com.app.mobile D/app:MapsActivity: m7| lat/lng: (33.2980945,-111.953964) 

这是从来没有,尽管明确的被称为空。这里发生了什么?

如果它从不清空,是否将m7 Marker更新为ClusterManager忽略?

Link to Google's implementation of clearItems()

+0

您可以尝试使用'updateItem(Item)'方法更新api。这是添加项目的同一个实例,但具有更新的属性。请参阅[参考]的链接(https://github.com/googlemaps/android-maps-utils/issues/168)。 – abielita

+0

@abielita链接中的代码恰恰是我在本问题顶部链接的原始问题中的代码。 – nukeforum

回答

0

最后我发现,我在执行的Marker我重写实施hashCode()是造成通常的更换/删除/清除功能故障。

我的解决方案是删除我的hashCode()的实现,并解决了我对自定义哈希解决方案的需求。

4

在clearItems()之后调用cluster()函数

+0

在我身边没有任何区别 –