Как да направя маркерите да могат да се кликват, а клъстерите да не могат да се кликват?

Разработвам приложението си, което използва маркери на картата на Google. След това използвам групиране, за да събера маркери, които са твърде близо. Ето част от моя код:

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);
    }
}

Ако щракна върху единичен маркер, той показва изскачащ прозорец с някои подробности. Същото се случва, ако щракна върху клъстер. Как да направя клъстера да не може да се кликва? Не искам да показвам нищо, когато потребител кликне върху клъстер. Благодаря ти.


person smartmouse    schedule 05.01.2015    source източник
comment
Току-що получих работещо решение, което прави точно това, показва InfoWindows за маркери, но не и за клъстери. Погледнете тук: stackoverflow .com/questions/30958224/   -  person Daniel Nugent    schedule 21.06.2015


Отговори (2)


Въз основа на документацията от Google Maps:

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;
            }
       });
person ztan    schedule 05.01.2015

Искате да внедрите ClusterManager.OnClusterItemClickListener или ClusterManager.OnClusterItemInfoWindowClickListener

person Paul    schedule 29.11.2015