在我的项目中,我使用 Google Map V2 和 Map Utils 对来自该库的地图进行聚类:https ://github.com/googlemaps/android-maps-utils 。我在我的项目中使用了 STOMP,每当我收到新数据时,我都需要更新标记,我通过从集群管理器中删除所有标记并重新添加它们来完成它。但是现在我的问题是,每当用户单击标记时,就会向用户显示标记的 InfoWindow,然后如果我收到数据新数据,则 InfoWindow 将由于调用 mClusterManager.cluster() 而关闭;功能。现在,我的问题是如何在集群刷新后显示信息窗口。
以下是我的代码:
googleMap.setOnMarkerClickListener(mClusterManager);
addClusterMarkers(mClusterManager);
mClusterManager.getMarkerCollection().setOnInfoWindowAdapter(new CustomAdapterInfoWindow());
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<AppClusterItem>() {
@Override
public boolean onClusterItemClick(AppClusterItem appClusterItem) {
showingInfoWindowId = appClusterItem.getmId();
return false;
}
});
googleMap.setOnMarkerClickListener(mClusterManager);
//New Data Update
on NewDataReceived(String _id){
mClusterManager.clearItems();
addClusterMarkers(mClusterManager);
mClusterManager.cluster();
try {
Log.d(Constants.TAG, appClusterItemList.size() + "Showing Info Window" + activeDataKey.get(_id));
render.getMarker(appClusterItem[0]).showInfoWindow();
} catch (Exception e) {
Log.d(Constants.TAG, "" + e);
}
mClusterManager.cluster();
}
});
}
如果直到用户再次单击标记,我想在收到数据后显示 ShowInfoWindow()。(再次单击标记将隐藏 showInfoWindow(默认))
如果有人可以回答我之前的问题,我会很高兴,因为我希望它做得更好,只需更新单个项目。见这里:更新单项 GoolgeMap 集群