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?
This is indeed a "limitation" of markers as of 3.1.59 version of the library.
If you really need them to be markers, please post a feature request on gmaps-api-issues for MarkerOptions.clickable
and Marker.setClickable
.
If you can, consider using other visual objects, e.g. GroundOverlay
. The only problem is they all scale with map, unlike markers. The closest would be Circle
with zero radius and 20-50 dp stroke width, but that's only a single color dot.
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.
onMapClick(marker.getPosition());
–
Liz 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;
}
});
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.
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;
}
© 2022 - 2024 — McMap. All rights reserved.
onMarkerClick(Marker arg0) {return true;}
butonMapClick
is still not called. I think docs's explanation means that if I returntrue
no default behavior will occure (infoWindow), only my code, wich i post inonMarkerClick
– Neigh