如何使用Android Maps实用程序库展示InfoWindow

我正在使用 Google Maps Android API Utility Library,以便以集群的方式在地图中显示几个标记.
我按照说明进行操作,以及查看库中的示例,但是当单击标记时,我无法弄清楚如何显示InfoWindow.

我猜getMap().setonMarkerClickListener(mClusterManager);是管理onClick事件的一个,如果注释掉,我可以使用getMap()来覆盖它.setInfoWindowAdapter(new InfoWindowAdapter(){));但我无法访问我的自定义标记对象.
然而,如果我使用getMap().setonMarkerClickListener(mClusterManager);我没有找到一个方法显示InfoWindow当一个标记被点击.

有没有人知道如何实现这一点?

非常感谢!

解决方法

您需要扩展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));

相关文章

Android 通过adb shell命令查看内存,CPU,启动时间,电量等...
Monkey Android app稳定性测试工具之Monkey使用教程 by:授客...
Android 常见adb命令 by:授客 QQ:1033553122 1、 查看所有已...
这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...