我有一个Google Maps V2,在我的setUpMap()方法中,我将GoogleMap附加了一个infoWindowAdapter,如下所示:
ClusterManager<OffersMarker> rentClusterManager = new ClusterManager<OffersMarker>(this, gmap);
gmap.setInfoWindowAdapter(rentClusterManager.getMarkerManager());
还有更多代码,但要点是它可以工作,并且当我单击标记时可以看到infoWindow。
由于我有两个ClusterManager,所以我有一个问题:
ClusterManager<OffersMarker> rentClusterManager = new ClusterManager<OffersMarker>(this, gmap);
ClusterManager<OffersMarker> saleClusterManager = new ClusterManager<OffersMarker>(this, gmap);
gmap.setInfoWindowAdapter(rentClusterManager.getMarkerManager()); //<-- THIS DOESN'T WORK
gmap.setInfoWindowAdapter(saleClusterManager.getMarkerManager()); //<-- ONLY THIS WORKS
我的问题是,如何将多个ClusterManager.getMarkerManager()附加到infoWindowAdapter安装程序?
对于侦听器,我使用了MultiListener,但是我还没有找到MultiAdapter或类似的东西。
谢谢!
最佳答案
您只能将单个InfoWindowAdapter
设置为GoogleMap
对象。您的情况被saleClusterManager.getMarkerManager()
覆盖
但是,作为解决方法,您可以将呼叫转发给相应的集群管理器。
gmap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter()
{
@Override
public View getInfoWindow(Marker marker)
{
View view = rentClusterManager.getMarkerManager().getInfoWindow(marker);
if( view == null )
view = saleClusterManager.getMarkerManager().getInfoWindow(marker);
return view;
}
@Override
public View getInfoContents(Marker marker)
{
View view = rentClusterManager.getMarkerManager().getInfoContents(marker);
if( view == null )
view = saleClusterManager.getMarkerManager().getInfoContents(marker);
return view;
}
});
关于android - Android-使用多个群集管理器将InfoWindowAdapter附加到Google Map,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38973510/