E 'chiaro da questo punto di 3 anni più tardi, che non v'è alcun modo per lascia passare il marcatore per essere gestito dalla mappa stessa (OnMapClickListener). I marker intercetteranno sempre questo evento, sebbene sia possibile disabilitare il comportamento predefinito dal clic (come mostra la risposta sopra). Quanto segue è pubblicato nel caso in cui possa aiutare qualcuno che ha ancora bisogno di una soluzione migliore.
Per ovviare a questa limitazione, ci sono due opzioni. Ho implementato entrambi e posso pulire e condividere il codice su richiesta.
1.) Creare un Bitmap GroundOverlay con i waypoint su cui non si desidera gestire dipinti su di esso. Utilizzi l'oggetto Proiezione di GoogleMap per convertire da Punti schermo a LatLng e calcola dove posizionare la bitmap per far apparire i waypoint nella posizione corretta. È piuttosto complicato gestire la rotazione, il riempimento delle mappe e alcuni altri problemi. Mentre si ingrandisce, i marker dei waypoint aumentano di dimensioni e quindi nell'evento onCameraIdle, ricreare la bitmap e riposizionare GroundOverlay se necessario. Questo è il metodo che sto usando in produzione. La panoramica, la rotazione e lo zoom sono tutti estremamente fluidi e, poiché gli Overlay di base possono essere impostati per gestire o non gestire i tocchi, risolvono il problema. Non ero in grado di capire come farlo funzionare con l'inclinazione. I waypoint stessi non rimangono rivolti verso Nord durante la rotazione, ma possono essere ruotati verticalmente quando viene ricreato GroundOverlay. C'è una breve pausa/non-reattività della mappa dopo che onCameraIdle provoca la ri-creazione della sovrapposizione a terra.
2.) Creare un oggetto Visualizza che copre l'intero schermo e dipinge i marcatori di waypoint nel metodo onDraw della vista. Ancora una volta, utilizza l'oggetto di proiezione di GoogleMap per calcolare dove dipingere i marcatori. Chiama invalidate() sulla vista durante l'evento onCameraMove, in modo che i marcatori vengano ridisegnati nelle loro nuove posizioni sullo schermo. Il principale vantaggio di questo è la semplicità. Gli offset di rotazione, inclinazione, mappatura sono tutti gestiti per te. Lo svantaggio principale è che se invalidi su ogni evento onCameraMove, è un po 'troppo intensivo per la cpu (presumo) e il panning/zoom della mappa può diventare instabile. Se invalidi ogni 3 o 5 eventi di movimento, i waypoint sembrano rimbalzare mentre esegui il pan/zoom in quanto non vengono ridisegnati nella loro nuova posizione abbastanza frequentemente. Non c'è nessun ritardo alla fine della mossa della mappa, però. In definitiva, con 100-200 waypoint sulla mappa, i problemi di performance "while-panning" erano troppo evidenti per me.
Spero che questo aiuti qualcuno. Fammi sapere se hai bisogno di aiuto per il codice.
Se si desidera disabilitare l'evento click di mercato, suppongo che questa non sia la risposta corretta. – Kedarnath
ha funzionato. ma ho più marcatori. è possibile disabilitare un particolare marcatore cliccando? – Aparichith
http://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html il documento dice che il metodo restituisce true se non vogliamo il comportamento predefinito – Wishmaster