【问题标题】:How to show InfoWindow using Android Maps Utility Library for Android如何使用适用于 Android 的 Android 地图实用程序库显示 InfoWindow
【发布时间】:2014-02-19 09:52:55
【问题描述】:

我正在使用Google Maps Android API Utility Library 以便以集群方式在地图中显示多个标记。 我已按照说明使其工作,并查看了库中的示例,但我不知道如何在单击标记时显示 InfoWindow

我猜getMap().setOnMarkerClickListener(mClusterManager); 是管理onClick 事件的人,如果被注释掉,我可以使用getMap().setInfoWindowAdapter(new InfoWindowAdapter() {)); 覆盖它,但我无法访问我的自定义标记对象。 不过,如果我使用getMap().setOnMarkerClickListener(mClusterManager);,我找不到在单击标记时显示InfoWindow 的方法。

有人知道如何实现这一目标吗?

提前非常感谢!

【问题讨论】:

标签: android google-maps markerclusterer


【解决方案1】:

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

【讨论】:

  • 有什么办法可以定义一个自定义的InfoWindow来显示,还是只能显示默认的?
  • 谢谢。为什么你调用 super.onBeforeClusterItemRendered?除此之外,我想避免在点击时将项目/集群在屏幕中居中,所以我在 onClusterClick 和 onClusterItemClick 中返回 true。问题是,如果我返回 true,则不会显示信息窗口,但它是 false,会显示(但首先是居中的)。有什么帮助吗?提前致谢。
  • @RiccardoCiovati 在实施此操作后我没有看到任何信息窗口。曼努洛伦佐!你得到信息窗口了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2016-11-08
  • 1970-01-01
  • 2015-01-24
相关资源
最近更新 更多