2010-09-01 17 views
12

Come posso disabilitare la funzionalità di panning/zoom di un MapView (non i controlli di zoom, voglio una mappa completamente statica)?Disabilita pan/zoom in com.google.android.maps.MapView

Ho anche notato che toccare la mappa non sembra attivare il MapView onClickListener, qualcuno potrebbe spiegare perché?

+0

Questa soluzione può aiutare a http://stackoverflow.com/questions/6439811/can-panning -zooming-be-disabled-in-an-android-mapview-while-allow-users-to-cl/9405201 # 9405201 – Dwayne

risposta

11

Utilizzare android:clickable="false" nel file di layout.

+0

Oh, vedo cosa sta succedendo ora, sembra che i miei tentativi di impostareOnClickListener sulla mapView stessero causando scorrendo nonostante android: clickable = "false" impostato nel file di layout – Juliusz

+0

Rimane ancora il problema di OnClickListener su una mappaView – Juliusz

+0

@Julius: 'MapView' è closed source. Non c'è nessuno che risponda alla tua domanda 'onClickListener'. – CommonsWare

1

ho avuto la stessa domanda e la seguente soluzione è la migliore che ho trovato e che ha soddisfatto le mie esigenze:

mapView.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if(event.getPointerCount() > 1) { 
       return true; 
      } 
      return false; 
     } 
    }); 

Come pubblicato da Alexander Stolz qui:

How to disable pinch in Android MapView

E qui è il motivo:

E non disabilita cliccando sul MapView completamente - si afferra solo & impedisce due dita (per lo zoom avete bisogno di due dita) - toccando sulla mappa (ad esempio in materia di overlay) funziona ancora.

0

questo è il modo giusto

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) 
{ 
    switch (ev.getAction()&MotionEvent.ACTION_MASK) 
    { 
     case (MotionEvent.ACTION_DOWN): 
     { 
      // do what you want 
      // you may scroll map where you want 
      // don't use 'break', the same in case pointer events; 

      //break; 
      return true; 
     } 
    } 
    // 'super' go to the mapView procedures and scroll map in own algorithm 
    return super.dispatchTouchEvent(ev); 
} 
20

Per la versione 2 della API di Google Maps per Android, questo è il modo:

map.getUiSettings().setScrollGesturesEnabled(false); 
+1

l'OP deve aggiornare la risposta al proprio :) grazie bro – cesarferreira

+0

non disabilita tutti i gesti. Controlla la mia risposta – Taranfx

13

Questo è gauranteed a lavorare

mapView.getMap().getUiSettings().setAllGesturesEnabled(false); 
+0

Nota che la domanda è da v1 di Maps API v1. Questa risposta è per API v2. – laalto

+2

@laalto Chiunque lo controlli ora è su v2. Aiuterà chiunque veda le risposte oggi – Taranfx

+0

Questo funziona per me – Vinayak

0

sul tuo metodo onMapReady, aggiungi queste righe di codice

gMap.getUiSettings().setZoomGesturesEnabled(false); 

per disabilitare tutte le guesures

gMap.getUiSettings().setAllGesturesEnabled(false); 

felice di codifica :)