显示自定义信息窗口的Andr​​oid地图实用程序库为Android [英] Showing custom InfoWindow for Android Maps Utility Library for Android

查看:185
本文介绍了显示自定义信息窗口的Andr​​oid地图实用程序库为Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用该库谷歌地图实用程序的Andr​​oid 它允许创建集群诠释他映射和我需要显示自定义的信息窗口,但我找不到任何方法来做到这一点。 为了显示信息窗口,我有下面的类,并且在方法 onClusterItemRendered 是我可以访问标记的信息:

I'm using the library Google Maps Utility for Android which allows to create clustering int he maps and I need to show a custom InfoWindow but I can't find any method to do this. In order to show the info window, I have the following class, and in the method onClusterItemRendered is where I have access to the info of the marker:

class MyClusterRenderer extends DefaultClusterRenderer<MarkerItem> {

    public MyClusterRenderer(Context context, GoogleMap map,
            ClusterManager<MarkerItem> clusterManager) {
        super(context, map, clusterManager);
    }

    @Override
    protected void onBeforeClusterItemRendered(MarkerItem item,
            MarkerOptions markerOptions) {
        super.onBeforeClusterItemRendered(item, markerOptions);
        markerOptions.title(String.valueOf(item.getMarkerId()));
    }

    @Override
    protected void onClusterItemRendered(MarkerItem clusterItem,
            Marker marker) {
        super.onClusterItemRendered(clusterItem, marker);
    }
}

有没有人谁使用图书馆,并知道如何显示自定义的信息窗口比如它是在谷歌地图中使用的方法是什么?像:

Is there anybody who has used the library and knows how to show a custom InfoWindow such as the way it was used in the Google Maps? Like:

getMap().setInfoWindowAdapter(new InfoWindowAdapter() {

@Override
public View getInfoWindow(Marker arg0) {
    return null;
}

@Override
public View getInfoContents(Marker arg0) {
    return null;
}
});

感谢很多提前!

Thanks a lot in advance!

推荐答案

是的,这是可以做到。 ClusterManager 维护两个 MarkerManager.Collections

Yes, this can be done. ClusterManager maintains two MarkerManager.Collections:

  • 一个用于集群的标志,并且
  • 一个用于单个项目标记

您可以设置自定义的 InfoWindowAdapter 为每一个类型的独立标志的。

You can set a custom InfoWindowAdapter for each of these kinds of markers independently.

首先,安装ClusterManager的MarkerManager作为地图的InfoWindowAdapter:

First, install your ClusterManager's MarkerManager as the map's InfoWindowAdapter:

ClusterManager<MarkerItem> clusterMgr = new ClusterManager<MarkerItem>(context, map);
map.setInfoWindowAdapter(clusterMgr.getMarkerManager());

接下来,安装您的自定义 InfoWindowAdapter 为一个或两个标记集的适配器:

Next, install your custom InfoWindowAdapter as the adapter for one or both of the marker collections:

clusterMgr.getClusterMarkerCollection().setOnInfoWindowAdapter(new MyCustomAdapterForClusters());
clusterMgr.getMarkerCollection().setOnInfoWindowAdapter(new MyCustomAdapterForItems());

最后一块被映射的原始标记的对象,你会在你的自定义接收InfoWindowAdapter的回调到 ClusterItem 您添加到摆在首位的图,对象(S)。这可以通过使用onClusterClick和onClusterItemClick听众来实现,如下所示:

The final piece is mapping the raw Marker object that you'll receive in your custom InfoWindowAdapter's callback to the ClusterItem object(s) that you added to the map in the first place. This can be achieved using the onClusterClick and onClusterItemClick listeners, as follows:

map.setOnMarkerClickListener(clusterMgr);
clusterMgr.setOnClusterClickListener(new OnClusterClickListener<MarkerItem>() {
    @Override
    public boolean onClusterClick(Cluster<MarkerItem> cluster) {
        clickedCluster = cluster; // remember for use later in the Adapter
        return false;
    }
});
clusterMgr.setOnClusterItemClickListener(new OnClusterItemClickListener<MarkerItem>() {
    @Override
    public boolean onClusterItemClick(MarkerItem item) {
        clickedClusterItem = item;
        return false;
    }
});


现在,你有你需要的组合您的自定义信息窗口的内容在各自适配器的一切!例如:


Now you have everything you need to assemble your custom InfoWindow content in your respective Adapters! For example:

class MyCustomAdapterForClusters implements InfoWindowAdapter {
    @Override
    public View getInfoContents(Marker marker) {
        if (clickedCluster != null) {
            for (MarkerItem item : clickedCluster.getItems()) {
                // Extract data from each item in the cluster as needed
            }
        }
        // build your custom view
        // ...
        return view;
    }
}

这篇关于显示自定义信息窗口的Andr​​oid地图实用程序库为Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆