2010-09-01 13 views
12

¿Cómo puedo desactivar la funcionalidad de panorámica/zoom de un MapView (no los controles de zoom, quiero un mapa totalmente estático)?Deshabilitar panorámica/ampliar com.google.android.maps.MapView

También he notado que tocar el mapa no parece activar el MapView onClickListener, ¿podría alguien explicar por qué?

+0

Esta solución puede ayudarle a http://stackoverflow.com/questions/6439811/can-panning -zooming-be-disabled-in-an-android-mapview-while-allow-users-to-cl/9405201 # 9405201 – Dwayne

Respuesta

11

Use android:clickable="false" en su archivo de diseño.

+0

Oh, veo lo que está sucediendo ahora, parece que mis intentos de establecer OnClickListener en el mapView estaban causando el desplazamiento a pesar android: clickable = "false" en el archivo de diseño – Juliusz

+0

Todavía existe el problema de OnClickListener en un mapView – Juliusz

+0

@Julius: 'MapView' es de fuente cerrada. No hay nadie que responda tu pregunta 'onClickListener'. – CommonsWare

1

que tenía la misma pregunta y la siguiente solución es la mejor que pude encontrar y que cumplió mis requisitos:

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

Como publicado por Alexander Stolz aquí:

How to disable pinch in Android MapView

Y aquí es la razón:

No desactiva clic en el MAPview por completo - que sólo toma & evita gestos con dos dedos (para el zoom se necesitan dos dedos) - toque en el mapa (por ejemplo, en superposiciones) todavía funciona.

0

esta es la forma correcta

@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

Para la versión 2 de la API de Google Maps para Android, esta es la forma:

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

OP debe actualizar la respuesta a la tuya :) gracias hermano – cesarferreira

+0

no deshabilita todos los gestos. Verifique mi respuesta – Taranfx

13

Este gauranteed para trabajar

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

Tenga en cuenta que la pregunta es de la era de Maps API v1. Esta respuesta es para API v2. – laalto

+2

@laalto Todos los que lo verifican ahora están en v2. Ayudará a todos los que vean respuestas hoy – Taranfx

+0

Esto funciona para mí – Vinayak

0

en su método onMapReady, agregue estas líneas de código

gMap.getUiSettings().setZoomGesturesEnabled(false); 

para desactivar todas las guesures

gMap.getUiSettings().setAllGesturesEnabled(false); 

feliz de codificación :)