【问题标题】:How to take marker Tag when used cluster Algorithm in Android在Android中使用集群算法时如何获取标记标签
【发布时间】:2017-03-16 18:34:23
【问题描述】:
        Marker marker = mMap.addMarker(markerOptions);
        marker.setTag(poi.getKey());
        marker.hideInfoWindow();
        builder.include(marker.getPosition()); 

此代码可以正常工作,因为我将其设置为 manuel。我做了一切marker.tag()。我使用哈希键来检索我的密码。

mClusterManager.addItem()我想用这个方法。但我也想带标记标签。所以我不想添加到地图为Marker marker = mMap.addMarker(markerOptions);

我该如何解决这个问题?

我想解释更多细节。

public class PoiItem implements ClusterItem{
private final LatLng mPosition;
private String mTitle;
private String mSnippet;
private String tag;
private ResponsePoi pois;

public PoiItem(ResponsePoi poi,double lat, double lng,String tag) {
    mPosition = new LatLng(lat, lng);
    pois = poi;
    mTitle = poi.getName();
    mSnippet = poi.getAddress();
    this.tag = tag;
}


 private void setMyCluster(){
        mClusterManager = new ClusterManager<PoiItem>         (MainActivity.this,mMap);
        mMap.setOnCameraIdleListener(mClusterManager);
        mMap.setOnMarkerClickListener(mClusterManager);
    }

    setMyCluster();
    for(HashMap.Entry<String, ResponsePoi> poi : pois.entrySet()) {
        MarkerOptions markerOptions = new MarkerOptions()
                .snippet(poi.getValue().getAddress())
                .title(poi.getValue().getName())
                .position(new LatLng(poi.getValue().getLocation().getL().get(0),poi.getValue().getLocation().getL().get(1)))
                .icon(BitmapDescriptorFactory.fromBitmap(smallMarker));
        /*
        Marker marker = mMap.addMarker(markerOptions);
        marker.setTag(poi.getKey());
        marker.hideInfoWindow();
        builder.include(marker.getPosition());  */

        mClusterManager.addItem(new   PoiItem(poi.getValue(),poi.getValue().getLocation().getL().get(0),poi.getValue().getLocation().getL().get(1),poi.getKey()));
    }

【问题讨论】:

    标签: java android google-maps dictionary marker


    【解决方案1】:

    您可以在自定义 MyItem 类中添加一个标记标签字段。

    例如:

    public class MyItem implements ClusterItem {
        private final LatLng mPosition;
        private final String mTitle;
        private final String mSnippet;
        private final String mTag; // <- This is the tag
    
        public MyItem(double lat, double lng, String t, String s, String tg) {
            mPosition = new LatLng(lat, lng);
            mTitle = t;
            mSnippet = s;
            mTag = tg;
        }
    
        @Override
        public LatLng getPosition() {
            return mPosition;
        }
    
        public String getTitle(){
            return mTitle;
        }
    
        public String getSnippet(){
            return mSnippet;
        }
    
        public String getTag(){
            return mTag;
        }
    }
    

    然后在使用addItem()方法时将标签交给MyItem构造函数:

    MyItem item = new MyItem(lat, lng, "title", "snippet", poi.getKey());
    mClusterManager.addItem(item);
    

    确保集群管理器正在处理集群项目的点击事件:

    mClusterManager.setOnClusterItemClickListener(mClusterItemClickListener);
    mMap.setOnMarkerClickListener(mClusterManager);
    

    然后定义你的ClusterManager.OnClusterItemClickListener,当集群项(Marker)被点击时,你可以在其中访问标签:

    public ClusterManager.OnClusterItemClickListener<MyItem> mClusterItemClickListener = new ClusterManager.OnClusterItemClickListener<MyItem>() {
    
        @Override
        public boolean onClusterItemClick(MyItem item) {
            if (item.getTag().equals("SomeValue")) {
                //Do something!
            }
            return true;
        }
    };
    

    【讨论】:

    • 首先,非常感谢您的回答。我也这么认为。但我的标签是哈希值。所以我不知道哪一个等于其他。你能给我什么建议?
    • 我现在明白了。完美答案!谢谢@DanielNugent
    • ClusterManager.OnClusterItemClickListener 由于 onMarkerClick(标记标记)而不起作用。我在哪里调用这个方法?
    • @TeyteyLan 确保您在致电mClusterManager.setOnClusterItemClickListener(mClusterItemClickListener); 之前致电mMap.setOnMarkerClickListener(mClusterManager);
    • 另外,有关更多信息(包括 InfoWindow 的内容),请在此处查看我的其他答案:stackoverflow.com/a/30959578/4409409
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多