【问题标题】:How to make markers clickable and clusters not clickable? [duplicate]如何使标记可点击而集群不可点击? [复制]
【发布时间】:2015-01-05 13:25:05
【问题描述】:

我正在开发我的应用程序,它使用谷歌地图上的标记。然后我使用聚类来收集太近的标记。这是我的代码的一部分:

MapViewer.java

public class MapViewer extends Activity implements OnInfoWindowClickListener {

    private GoogleMap map;
    private ClusterManager<MyItem> mClusterManager;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapviewer);

        try {
            map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
            if (map != null) {
                map.setMyLocationEnabled(true);
                map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                map.getUiSettings().setRotateGesturesEnabled(false);


                mClusterManager = new ClusterManager<MyItem>(this, map);
                mClusterManager.setRenderer(new MyClusterRenderer(this, map, mClusterManager));

                map.setOnCameraChangeListener(mClusterManager);
                map.setOnMarkerClickListener(mClusterManager);

                map.setInfoWindowAdapter(new ClusterInfoWindow(getLayoutInflater()));
                map.setOnInfoWindowClickListener(this);

                addItems();
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onInfoWindowClick(Marker marker) {
        // My code
    }

    public void addItems() {
        // My code
    }
}

ClusterInfoWindow.java

public class ClusterInfoWindow implements InfoWindowAdapter {
    LayoutInflater inflater = null;

    public ClusterInfoWindow(LayoutInflater inflater) {
        this.inflater = inflater;
    }

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

    @Override
    public View getInfoContents(Marker marker) {
        View popup = inflater.inflate(R.layout.infowindow, null);

        TextView tv = (TextView)popup.findViewById(R.id.title);

        tv.setText(marker.getTitle());
        tv = (TextView)popup.findViewById(R.id.snippet);
        tv.setText(marker.getSnippet());

        return(popup);
    }
}

如果我单击单个标记,它会显示一个包含一些详细信息的弹出窗口。如果我单击一个集群,也会发生同样的情况。如何使集群不可点击?当用户单击集群时,我不想显示任何内容。 谢谢。

【问题讨论】:

标签: android google-maps cluster-computing marker clickable


【解决方案1】:

基于谷歌地图的文档:

If you want to add specific functionality in response to a marker click event, set the map's OnMarkerClickListener() to the ClusterManager, since ClusterManager implements the listener.

因此,您可以将其更改为以下内容,而不是 map.setOnMarkerClickListener(mClusterManager);

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                marker.showInfoWindow();
                return false;
            }
       });

【讨论】:

    【解决方案2】:

    你想实现 ClusterManager.OnClusterItemClickListener 或 ClusterManager.OnClusterItemInfoWindowClickListener

    【讨论】:

      猜你喜欢
      • 2021-11-25
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多