ClusterClick Listener不在Android中

时间:2015-11-10 05:52:24

标签: android google-maps

我正在创建一个应用程序,我在地图上聚集多个请求。 我能够在地图上集群请求,但我想在集群上获得点击事件。我尝试使用 setOnClusterItemClickListener ,但我无法在该方法中捕获click事件。我在地图中也有 OnCameraChangeListener ,当我点击群集时会运行。 这是因为听众还是我做错了导致问题。

这是我的听众代码

map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition cameraPosition) {
            cameraChangeHandler.removeCallbacks(throttledRunnable);
            cameraChangeHandler.postDelayed(throttledRunnable, 300);
            if (marker != null) {
                marker.remove();
                mClusterManager.clearItems();
            }
            LatLng latLng = cameraPosition.target;
            appSharedPreference.setLatitude(String.valueOf(latLng.latitude));
            appSharedPreference.setLongitude(String.valueOf(latLng.longitude));
            marker = map.addMarker(new MarkerOptions().position(latLng));
            submitData();
        }
    });
    map.setOnMarkerClickListener(mClusterManager);
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MyItem>() {
@Override
public boolean onClusterItemClick(MyItem myItem) {
    Toast.makeText(getActivity(),"Hello",Toast.LENGTH_LONG).show();
    return false;
}

});

1 个答案:

答案 0 :(得分:0)

使用提供的链接,我可以使用以下代码实现此工作:

map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
            @Override
            public void onCameraChange(CameraPosition cameraPosition) {
                if (marker != null) {
                    marker.remove();
                    mClusterManager.clearItems();
                }
                LatLng latLng = cameraPosition.target;
                appSharedPreference.setLatitude(String.valueOf(latLng.latitude));
                appSharedPreference.setLongitude(String.valueOf(latLng.longitude));
               // marker = map.addMarker(new MarkerOptions().position(latLng));
                submitData();
                pDialouge.hide();

            }
        });
        mClusterManager.setRenderer(new MyClusterRenderer(getActivity(), map, mClusterManager));
        map.setOnMarkerClickListener(mClusterManager);
        mClusterManager
                .setOnClusterClickListener(new ClusterManager.OnClusterClickListener<MyItem>() {
                    @Override
                    public boolean onClusterClick(Cluster<MyItem> cluster) {
                        clickedCluster = cluster;
                        return false;
                    }
                });
        mClusterManager
                .setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MyItem>() {
                    @Override
                    public boolean onClusterItemClick(MyItem item) {
                        clickedClusterItem = item;
                        return false;
                    }
                });