我使用Google Maps Android API Utility Library是为了以集群的方式在地图中显示几个标记。我遵循了使其正常工作的说明,并查看了库中的示例,但我不知道如何在单击标记时显示InfoWindow。
我猜getMap().setOnMarkerClickListener(mClusterManager);是管理onClick事件的那个人,如果注释掉了,我可以使用getMap().setInfoWindowAdapter(new InfoWindowAdapter() {));覆盖它,但是我没有访问自定义标记对象的权限。尽管如此,如果我使用getMap().setOnMarkerClickListener(mClusterManager);,我无法找到一种方法来显示InfoWindow时,一个标记已经被点击。
有没有人知道如何做到这一点?
提前谢谢!
发布于 2014-02-19 10:19:38
您需要扩展DefaultClusterRenderer类并重写onBeforeClusterItemRendered,将标题附加到作为参数传递的MarkerOptions对象。
之后,您可以将您的实现传递给ClusterManager。
示例:
class MyItem implements ClusterItem {
private LatLng mPosition;
private String mTitle;
public MyItem(LatLng position){
mPosition = position;
}
@Override
public LatLng getPosition() {
return mPosition;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
}
class MyClusterRenderer extends DefaultClusterRenderer<MyItem> {
public MyClusterRenderer(Context context, GoogleMap map,
ClusterManager<MyItem> clusterManager) {
super(context, map, clusterManager);
}
@Override
protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) {
super.onBeforeClusterItemRendered(item, markerOptions);
markerOptions.title(item.getTitle());
}
@Override
protected void onClusterItemRendered(MyItem clusterItem, Marker marker) {
super.onClusterItemRendered(clusterItem, marker);
//here you have access to the marker itself
}
}然后你可以用这样的方式:
ClusterManager<MyItem> clusterManager = new ClusterManager<MyItem>(this, getMap());
clusterManager.setRenderer(new MyClusterRenderer(this, getMap() ,clusterManager));https://stackoverflow.com/questions/21876809
复制相似问题