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

nai*_*ima 2 android google-maps google-maps-markers markerclusterer

我正在开发基于地图的应用程序,我使用集群来排列标记。效果很好。现在,当我单击 clusterManager 和单击 item(只有一个标记)时,我需要显示一条消息,以便我可以区分它们。

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

    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);
Run Code Online (Sandbox Code Playgroud)

小智 5

您应该在 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;
    }
});
Run Code Online (Sandbox Code Playgroud)