Oczywiste jest przez ten punkt 3 lata później, że nie ma sposobu, aby pozwól, aby kliknięcia znaczników przeszły przez samą mapę (OnMapClickListener). Markery będą zawsze przechwytywać to zdarzenie, chociaż możesz wyłączyć domyślne zachowanie z kliknięcia (jak pokazuje powyższa odpowiedź). Poniższe informacje są zamieszczane na wypadek, gdyby ktoś mógł nadal potrzebować lepszego rozwiązania.
Aby obejść to ograniczenie, istnieją dwie opcje. Zaimplementowałem oba i mogę oczyścić i udostępnić kod na żądanie.
1.) Utwórz mapę bitową GroundOverlay, która ma punkty na drodze, którymi nie chcesz się malować na niej. Używasz obiektu Projektu GoogleMap do konwersji z ekranu Punkty na LatLng i obliczenia, gdzie umieścić Bitmapę, aby punkty trasy pojawiały się w odpowiednim miejscu. Jest dość skomplikowany w obsłudze rotacji, dopełniania map i kilku innych problemów. Podczas powiększania znaczniki punktów orientacyjnych powiększają się, a następnie w zdarzeniu onCameraIdle, ponownie tworzysz bitmapę i zmieniasz położenie GroundOverlay, jeśli to konieczne. Jest to metoda, której używam w produkcji. Przesuwanie, obracanie i powiększanie są bardzo płynne, a ponieważ nakładki naziemne można ustawić tak, aby obsługiwały lub nie obsługują odczepów, rozwiązuje to problem. Nie byłem w stanie wymyślić, jak wykonać tę pracę z pochyleniem. Same punkty trasy nie pozostają zwrócone w kierunku północnym podczas obrotu, ale można je obracać w pionie po odtworzeniu GroundOverlay. Po włączeniu funkcji onCameraIdle na mapie pojawia się krótka pauza/brak reakcji.
2.) Utwórz obiekt View obejmujący cały ekran i maluje znaczniki punktów na drodze w metodzie onDraw widoku. Ponownie użyj obiektu projekcyjnego GoogleMap, aby obliczyć miejsce malowania znaczników. Wywołaj funkcję unieważniającą() w widoku podczas zdarzenia onCameraMove, aby znaczniki były rysowane ponownie na nowych pozycjach na ekranie. Główną zaletą jest prostota. Obracanie, pochylanie, przesunięcia mapy są obsługiwane za Ciebie. Główną wadą jest to, że jeśli unieważnisz na każdym zdarzeniu onCameraMove, jest to zbyt intensywne cpu (przypuszczam), a panoramowanie/powiększanie mapy może stać się niestabilne. Jeśli unieważnisz co 3 lub 5 zdarzeń ruchu, punkty orientacyjne będą się odbijać podczas przesuwania/powiększania, ponieważ nie są odświeżane w ich nowej pozycji wystarczająco często. Jednak nie ma opóźnienia na końcu ruchu mapy. Ostatecznie, ze 100-200 punktami na mapie, problemy z wydajnością "while-panning" były dla mnie zbyt widoczne.
Mam nadzieję, że to komuś pomaga. Daj mi znać, jeśli potrzebujesz pomocy związanej z kodem.
Jeśli chcesz wyłączyć wydarzenie click rynku, to myślę, że to nie jest poprawna odpowiedź. – Kedarnath
zadziałało. ale mam wiele znaczników. czy wyłączenie jednego kliknięcia znacznika jest możliwe.? – Aparichith
http://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html doc mówi, że metoda zwraca wartość true, jeśli nie chcemy domyślnego zachowania – Wishmaster