Android- 使用多个 ClusterManager 将 InfoWindowAdapter 附加到 GoogleMap
Android- attaching InfoWindowAdapter to GoogleMap with multiple ClusterManagers
我有一个 Google Maps V2,在我的 setUpMap() 方法中,我附加了 GoogleMap 一个 infoWindowAdapter,如下所示:
ClusterManager<OffersMarker> rentClusterManager = new ClusterManager<OffersMarker>(this, gmap);
gmap.setInfoWindowAdapter(rentClusterManager.getMarkerManager());
还有更多代码,但关键是它可以工作,当我点击标记时我可以看到信息窗口。
由于我有两个 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;
}
});
我有一个 Google Maps V2,在我的 setUpMap() 方法中,我附加了 GoogleMap 一个 infoWindowAdapter,如下所示:
ClusterManager<OffersMarker> rentClusterManager = new ClusterManager<OffersMarker>(this, gmap);
gmap.setInfoWindowAdapter(rentClusterManager.getMarkerManager());
还有更多代码,但关键是它可以工作,当我点击标记时我可以看到信息窗口。
由于我有两个 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;
}
});