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

前端之家收集整理的这篇文章主要介绍了如何使用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));
原文链接:https://www.f2er.com/android/313030.html

猜你在找的Android相关文章