Cómo hacer Google hacer en el centro cuando se utiliza doble Pulsar y pellizcar para acercar el androide?

Tengo la búsqueda para el centro del mapa de google mientras que amplía usando el golpecito doble y pellizco para hacer zoom. He encontrado una solución para aquí , esto es sólo para dos toques para ampliar la solución.

TouchableWrapper

public class TouchableWrapper extends FrameLayout { GestureDetectorCompat mGestureDetector; public TouchableWrapper(Context context) { super(context); mGestureDetector = new GestureDetectorCompat(context, mGestureListener); } private final GestureDetector.SimpleOnGestureListener mGestureListener = new GestureDetector.SimpleOnGestureListener() { @Override public boolean onDoubleTap(MotionEvent e) { Log.e("GestureDetector", "Executed"); //Notify the event bus (I am using Otto eventbus of course) that you have just received a double-tap event on the map, inside the event bus event listener EventBus_Singleton.getInstance().post(new EventBus_Poster("double_tapped_map")); return true; } }; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { mGestureDetector.onTouchEvent(ev); return super.onInterceptTouchEvent(ev); } } 

He utilizado Otto para activar eventos.

 public class EventBus_Singleton { private static final Bus BUS = new Bus(); public static Bus getInstance() { return BUS; } public EventBus_Singleton() { } public void post(String s) { BUS.post(s); } } 

EventBus_Poster

 public class EventBus_Poster { public final String string; EventBus_Poster(String string) { this.string = string; } } 

En Mi actividad de mapa he utilizado el método de recepción de eventos para ampliar el mapa en la misma ubicación.

  @Subscribe public void EventBus_singleton(EventBus_Poster event) { Log.e("EventBus_singleton", "Executed"); if (event != null && event.string.equals("double_tapped_map")) { if (mapFragment != null) { mapFragment.getMap().getUiSettings().setZoomGesturesEnabled(false); mapFragment.getMap().getUiSettings().setRotateGesturesEnabled(false); mapFragment.getMap().setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { LatLng lng = cameraPosition.target; Log.e("LatLng", "" + lng); } }); mapFragment.getMap().animateCamera(CameraUpdateFactory.zoomIn(), 400, null); } } } 

He intentado utilizar ScaleGestureDetector.SimpleOnScaleGestureListener para hacer pellizcar el zumbido pero didnt trabajan y también a veces está rezagado. ¿Puede alguien ayudarme a hacer pinch zoom en google map?

Bueno, he encontrado que al intentar hacer esto, un exitoso pinch-to-zoom implica la velocidad y la condición de la escala . La velocidad se mide para determinar si realmente deseas ampliar el zoom dependiendo de lo rápido que movías los dos dedos lejos o más cerca uno del otro, puedes probar esto dentro de Google Maps y dentro de la aplicación de Uber, realmente puedes mover los dedos de distancia o Más cerca el uno del otro, pero tan lentamente que no se dispara un zoom in / out evento en el mapa!

Así que definitivamente implica velocidad cuando se trata de determinar un gesto de pellizco completo. Segundo, por supuesto, necesitas escala también, y he imprimido el valor de la escala y siempre es menor que exactamente 1,0 cuando empieces a pellizcar para alejar y siempre mayor que 1,0 cuando empieces a pellizcar para acercar.

Combinación de estos dos sin duda obtendrá mejores resultados, ver la velocidad primero Yo diría

 private final ScaleGestureDetector.OnScaleGestureListener mScaleGestureListener = new ScaleGestureDetector.SimpleOnScaleGestureListener() { /** * This is the active focal point in terms of the viewport. Could be a local * variable but kept here to minimize per-frame allocations. */ float startingSpan; float startFocusX; float startFocusY; @Override public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) { startingSpan = scaleGestureDetector.getCurrentSpan(); startFocusX = scaleGestureDetector.getFocusX(); startFocusY = scaleGestureDetector.getFocusY(); return true; } @Override public boolean onScale(ScaleGestureDetector scaleGestureDetector) { float scale = scaleGestureDetector.getCurrentSpan() / startingSpan; mVelocityTracker.computeCurrentVelocity(1000); Log.d("VELOCITY", "X vel : " + mVelocityTracker.getXVelocity()); Log.d("VELOCITY", "Y vel : " + mVelocityTracker.getYVelocity()); if (scale <= 1.0) { EventBus_Singleton.getInstance().post(new EventBus_Poster("pinched_map", "out")); } else { EventBus_Singleton.getInstance().post(new EventBus_Poster("pinched_map", "in")); } return true; } }; 
  • Android Google Maps V2 cambiar Mi ubicación Icono
  • Android: para dibujar una ruta entre dos puntos geográficos
  • ¿Qué algoritmo utilizan los mapas de Google para calcular la dirección entre 2 puntos?
  • Com.google.android.maps.MapView muestra los mosaicos desactualizados
  • Mapa no funciona después de instalar desde la tienda de juegos en android
  • Com.google.android.gms.maps.MapFragment: No se puede resolver el símbolo "maps"
  • Google Map en dispositivos móviles
  • Generación del mapa de Google Clave de la API de lanzamiento
  • MapActivity no se puede resolver con un tipo, ni siquiera con el objetivo de API de Google
  • Problema de exactitud de Google maps
  • No se puede ejecutar la aplicación con mapas en el dispositivo Android que ejecuta 4.0.3 ICS
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.