带 InfoWindowAdapter 的 ClusterManager 不工作
ClusterManager with InfoWindowAdapter doesn't work
我正在使用 google's android Map Utils,下面是我用来尝试生成信息的代码 window。
/*
* Set the Google Marker Cluster Manager.
*/
mClusterManager = new ClusterManager<>(this, mGoogleMap);
mGoogleMap.setOnCameraIdleListener(mClusterManager);
mGoogleMap.setInfoWindowAdapter(mClusterManager.getMarkerManager());
mGoogleMap.setOnMarkerClickListener(mClusterManager.getMarkerManager());
mGoogleMap.setOnInfoWindowClickListener(mClusterManager);
mGoogleMap.setInfoWindowAdapter(mPlaceInfoWindowAdapter);
mGoogleMap.setOnMarkerClickListener(mClusterManager);
GoogleMap.InfoWindowAdapter infoWindowAdapter = new GoogleMap.InfoWindowAdapter()
{
@Override
public View getInfoWindow(Marker marker)
{
Toast.makeText(MainActivity.this, "getInfoWIndow", Toast.LENGTH_SHORT).show();
return null;
}
@Override
public View getInfoContents(Marker marker)
{
View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.map_infowindow_layout, null);
Toast.makeText(MainActivity.this, "getInfoContents", Toast.LENGTH_SHORT).show();
return v;
}
};
mClusterManager.getMarkerCollection().setOnInfoWindowAdapter(infoWindowAdapter);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowAdapter(infoWindowAdapter);
mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<MapMarker>()
{
@Override
public boolean onClusterClick(Cluster<MapMarker> cluster)
{
Toast.makeText(MainActivity.this, "cluster click", Toast.LENGTH_SHORT).show();
return false;
}
});
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MapMarker>()
{
@Override
public boolean onClusterItemClick(MapMarker mapMarker)
{
Toast.makeText(MainActivity.this, "cluster item click", Toast.LENGTH_SHORT).show();
return false;
}
});
下面是点击地图上的标记时的结果图像。
永远不会调用 InfoWindowAdapter 的方法。
我也试过设置 mGoogleMap.setOnMarkerClickListener(mClusterManager)
但这也不起作用。我是做错了什么还是 google 的代码存在错误?
我通过从 onClusterItemClick
方法返回 false
来解决这个问题。如果设置为 true,信息 window 不会显示。
我正在使用 google's android Map Utils,下面是我用来尝试生成信息的代码 window。
/*
* Set the Google Marker Cluster Manager.
*/
mClusterManager = new ClusterManager<>(this, mGoogleMap);
mGoogleMap.setOnCameraIdleListener(mClusterManager);
mGoogleMap.setInfoWindowAdapter(mClusterManager.getMarkerManager());
mGoogleMap.setOnMarkerClickListener(mClusterManager.getMarkerManager());
mGoogleMap.setOnInfoWindowClickListener(mClusterManager);
mGoogleMap.setInfoWindowAdapter(mPlaceInfoWindowAdapter);
mGoogleMap.setOnMarkerClickListener(mClusterManager);
GoogleMap.InfoWindowAdapter infoWindowAdapter = new GoogleMap.InfoWindowAdapter()
{
@Override
public View getInfoWindow(Marker marker)
{
Toast.makeText(MainActivity.this, "getInfoWIndow", Toast.LENGTH_SHORT).show();
return null;
}
@Override
public View getInfoContents(Marker marker)
{
View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.map_infowindow_layout, null);
Toast.makeText(MainActivity.this, "getInfoContents", Toast.LENGTH_SHORT).show();
return v;
}
};
mClusterManager.getMarkerCollection().setOnInfoWindowAdapter(infoWindowAdapter);
mClusterManager.getClusterMarkerCollection().setOnInfoWindowAdapter(infoWindowAdapter);
mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<MapMarker>()
{
@Override
public boolean onClusterClick(Cluster<MapMarker> cluster)
{
Toast.makeText(MainActivity.this, "cluster click", Toast.LENGTH_SHORT).show();
return false;
}
});
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MapMarker>()
{
@Override
public boolean onClusterItemClick(MapMarker mapMarker)
{
Toast.makeText(MainActivity.this, "cluster item click", Toast.LENGTH_SHORT).show();
return false;
}
});
下面是点击地图上的标记时的结果图像。 永远不会调用 InfoWindowAdapter 的方法。
我也试过设置 mGoogleMap.setOnMarkerClickListener(mClusterManager)
但这也不起作用。我是做错了什么还是 google 的代码存在错误?
我通过从 onClusterItemClick
方法返回 false
来解决这个问题。如果设置为 true,信息 window 不会显示。