Mam na myśli, jeśli kliknę znacznik OnMarkerClickListener
, a więc OnMapClickListener
nie. Nawet jeśli ustawię obiekt mMap.setOnMarkerClickListener(null);
znacznik nadal maskuje wszystkie zdarzenia kliknięcia dla podstawowej mapy i obiektów. Jak ustawić przezroczystość Marker
dla wszystkich interakcji użytkownika?Google Maps API v2: jak unieruchomić znaczniki?
Odpowiedz
To jest rzeczywiście "ograniczenie" znaczników z wersji 3.1.59 biblioteki.
Jeśli naprawdę potrzebujesz, aby były markery, opublikuj żądanie funkcji na gmaps-api-issues dla MarkerOptions.clickable
i Marker.setClickable
.
Jeśli możesz, możesz rozważyć użycie innych obiektów wizualnych, np. GroundOverlay
. Jedynym problemem jest to, że wszystkie są skalowane na mapie, w przeciwieństwie do znaczników. Najbliższy będzie Circle
z zerowym promieniem i szerokością skoku 20-50 dp, ale to tylko kropka jednokolorowa.
Zgodnie z docs o markerach, jeśli dodasz własny Listener, a metoda onMarkerClick() zwróci wartość false, zostanie wykonane zachowanie domyślne.
Tak więc, w onMarkerClick() po prostu zwraca true i nie robi nic innego, aby całkowicie nadpisać domyślne.
Jedyne obejście znalazłem tego problemu jest wykonanie tego samego kodu w OnMarkerClickListener
że masz w OnMapClickListener
i powrócić false
:
getMap().setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
onMapClick(marker.getPosition());
return true;
}
});
To rozwiązanie nie działa, ponieważ onMarkerClick podaje lokalizację znacznika, który określa najbliższy kliknięciom, a nie miejscu kliknięcia. – Justin
My próbował 'onMarkerClick (Marker arg0) {return true;}' ale 'onMapClick' nadal nie jest wywoływane. Myślę, że wyjaśnienie docsa oznacza, że jeśli zwrócę 'true', nie pojawi się domyślne zachowanie (infoWindow), tylko mój kod, który będę publikował w' onMarkerClick' –
Spróbuj tego: w onMarkerClick dodaj linię 'onMapClick (marker.getPosition()) ; ' –
Myślałem o tym. W tym przypadku byłby to wielki błąd. Zrobię to w ten sposób, jeśli żadne inne rozwiązanie nie zostanie znalezione –