如何在 android 中获得 ClusterManager 点击和 ClusterManager 项目点击

Posted

技术标签:

【中文标题】如何在 android 中获得 ClusterManager 点击和 ClusterManager 项目点击【英文标题】:How to get ClusterManager click and ClusterManager item click in android 【发布时间】:2018-02-13 20:56:39 【问题描述】:

我正在开发基于地图的应用程序,我使用集群来安排标记。它工作正常。现在,我需要在单击 clusterManager 时显示一条消息,并且在单击 item(只有一个标记)时显示一条消息,以便我可以在它们之间做出差异。

这是我的代码,setOnClusterClickListenersetOnClusterItemClickListener 没有被调用,请问我的代码出了什么问题。

    mClusterManager = new ClusterManager<MyItem>(this, getMap());

    getMap().setOnCameraChangeListener(mClusterManager);
    try 
        readItems();
     catch (JSONException e) 
        Toast.makeText(this, "Problem reading list of markers.", Toast.LENGTH_LONG).show();
    

    mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<MyItem>() 
        @Override
        public boolean onClusterClick(Cluster<MyItem> cluster) 
            Log.d("cluster","clicked");
            return true;
        
    );
    mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MyItem>() 
        @Override
        public boolean onClusterItemClick(MyItem item) 
            Log.d("cluster item","clicked");
            return true;
        
    );
    getMap().setOnMarkerClickListener(mClusterManager);

【问题讨论】:

【参考方案1】:

你应该在 setOnClusterClickListener 和 setOnClusterItemClickListener 之前调用 setOnMarkerClickListener

mClusterManager = new ClusterManager<MyItem>(this, getMap());
getMap().setOnMarkerClickListener(mClusterManager); // 
getMap().setOnCameraChangeListener(mClusterManager);
try 
    readItems();
 catch (JSONException e) 
    Toast.makeText(this, "Problem reading list of markers.", Toast.LENGTH_LONG).show();


mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<MyItem>() 
    @Override
    public boolean onClusterClick(Cluster<MyItem> cluster) 
        Log.d("cluster","clicked");
        return true;
    
);
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MyItem>() 
    @Override
    public boolean onClusterItemClick(MyItem item) 
        Log.d("cluster item","clicked");
        return true;
    
);

【讨论】:

以上是关于如何在 android 中获得 ClusterManager 点击和 ClusterManager 项目点击的主要内容,如果未能解决你的问题,请参考以下文章

如何获得在android中停止服务的意图

如何在Android中获得气压高度?

在android中,如何实时获得正确的频率值?

如何通过点击在 Android 中获得准确的 GPS 位置

如何在颤动中获得 android drawables

如何在android中获得相机的权限。(特别是棉花糖)