onClusterItemInfoWindowClick在Android中不需要谷歌地图

onClusterItemInfoWindowClick在Android中不需要谷歌地图,android,google-maps,google-maps-markers,Android,Google Maps,Google Maps Markers,编辑:这个问题是关于Android上的谷歌地图的 我正在尝试为带有集群的标记创建自定义信息窗口。我按照这里的指示做了 我做了这些: 将群集管理器设置为充当信息窗口适配器 // Setting custom cluster marker manager for info window adapter map.setInfoWindowAdapter(mClusterManager.getMarkerManager()); mClusterManager.getMarkerColle

编辑:这个问题是关于Android上的谷歌地图的

我正在尝试为带有集群的标记创建自定义信息窗口。我按照这里的指示做了

我做了这些:

将群集管理器设置为充当信息窗口适配器

// Setting custom cluster marker manager for info window adapter
    map.setInfoWindowAdapter(mClusterManager.getMarkerManager());
    mClusterManager.getMarkerCollection().setOnInfoWindowAdapter(new MyLocationInfoWindowAdapter());
为clusterItem信息窗口设置单击侦听器

mClusterManager.setOnClusterItemInfoWindowClickListener(new ClusterManager.OnClusterItemInfoWindowClickListener<LocationMarker>() {
        @Override
        public void onClusterItemInfoWindowClick(LocationMarker locationMarker) {
            Toast.makeText(context, "info window Click", Toast.LENGTH_SHORT).show();
        }
    });

我找到了解决办法。我把它贴在这里,以便其他人能发现它有用

似乎即使将InfoWindowAdapter设置为自定义ClusterManager的MarkerManager,如下所示:

map.setInfoWindowAdapter(mClusterManager.getMarkerManager())

信息窗口的单击侦听器仍然与
映射
对象一起,而不是与
mClusterManager
一起

因此,为了响应信息窗口的单击,我需要将其设置为
map
对象,如下所示:

map.setOnInfoWindowClickListener(新的MyMarkerInfoWindowClickListener())


这里要说明的是,信息窗口单击不会在cluster manager中注册,而只会在map中注册。

这是针对android的吗?是的,是针对android的。很抱歉,我不清楚是否要编辑此问题。您也可以通过显式调用ClusterManager上的
onInfoWindowClick(marker)
函数,调用ClusterManager上的
OnClusterInfoWindowClickListener
OnClusterInfoWindowClickListener
,可能在地图对象的
OnInfo窗口中单击Listener
private class MyLocationInfoWindowAdapter implements GoogleMap.InfoWindowAdapter {
    @Override
    public View getInfoWindow(Marker marker) {
        return null;
    }

    @Override
    public View getInfoContents(Marker marker) {
        TextView helloTextView = new TextView(getContext());
        helloTextView.setText("Hello Info contents");
        helloTextView.setClickable(false);
        return helloTextView;
    }
}