'Google Maps API v2: How to make markers non-clickable?

I mean if i click marker OnMarkerClickListener is called, so the OnMapClickListener did not. Even if i set mMap.setOnMarkerClickListener(null); marker object still masks all click events for underlying map and objects. How can i set Marker transparent for all user interractions?



Solution 1:[1]

According to the docs about markers, if you add your own Listener and the onMarkerClick() method returns false, the default behaviour will be executed.

So, in the onMarkerClick() just return true and do nothing else to completely overwrite the default.

Solution 2:[2]

The only workaround I found for this issue is to execute the same code in OnMarkerClickListener that you have in OnMapClickListener and return false:

getMap().setOnMarkerClickListener(new OnMarkerClickListener() {

    public boolean onMarkerClick(Marker marker) {
        onMapClick(marker.getPosition());
        return true;
    }
});

Solution 3:[3]

You can skip setting Marker.Title and in this case the marker won't be clickable. Use Marker.Tag if you need to associate some data (like id or name) with the marker without an ability for end-user to tap and see that.

Solution 4:[4]

Make your class implementing Google Maps implement OnMarkerClickListener, i.e.:

public class GoogleMapFragment extends Fragment implements MapImplementation, OnMapReadyCallback,
    GoogleMap.OnMapClickListener, GoogleMap.OnMarkerClickListener {

and then implement method inside:

    @Override
    public boolean onMarkerClick(@NonNull Marker marker) {
        // Make Marker not clickable in practice
        return true;
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Steve Benett
Solution 2 Rodja
Solution 3 Alexey Strakh
Solution 4 basileus