2013-07-26 25 views
7

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

4

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.

4

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.

+0

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' –

+0

Spróbuj tego: w onMarkerClick dodaj linię 'onMapClick (marker.getPosition()) ; ' –

+1

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 –

4

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

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