Google Maps API v2 invoca el comportamiento de hacer clic en mylocationbutton

Tengo un GoogleMap completamente funcional y puedo mostrar mi ubicación de usuario con la llamada

 mMap.setMyLocationEnabled(true); 

Lo que quiero lograr es la funcionalidad del clic actual en el botón que ahora aparece en el GoogleMap (es decir, animar el mapa al usuario con el zoom correcto, etc.).

La funcionalidad ya está en el objeto GoogleMap, ¿cómo lo utilizo?

No quiero usar un LocationListener o tal para lograr esto, sólo quiero "llamar al mismo código" que se llama cuando hago clic en el botón en el mapa. ¿Puede ser así de simple?

Gracias por adelantado.

EDITAR:

Lo que básicamente quiero hacer es centrar el mapa en la ubicación del usuario, exactamente de la misma forma en que GoogleMap se centra en la ubicación del usuario cuando hago clic en el botón. Me gusta esto:

  GoogleMap mMap = this.getMap(); if(mMap != null) { mMap.setMyLocationEnabled(true); //TODO center the map on mylocation } 

EDITAR:

Al parecer, Google está trabajando en esto. http://code.google.com/p/gmaps-api-issues/issues/detail?id=4644

No estoy muy seguro de por qué las otras respuestas están hablando de OnMyLocationChangeListener s. Esto no es lo que se preguntó en el PO. Lo que se preguntó fue cómo replicar el comportamiento exacto de hacer clic en MyLocationButton, que es realmente más complejo que sólo animar la cámara a la ubicación del usuario. El botón hace diferentes cosas dependiendo del nivel de zoom en el que esté actualmente.

Por ejemplo, al alejarse, hacer clic en el botón le animará a su ubicación mientras lo hace zoom , mientras que si ya está en ciertos niveles de zoom, al hacer clic en el botón sólo le animará a su ubicación mientras mantiene la actual nivel de zoom.

En lugar de esforzarse por replicar este comportamiento, ¿no sería genial si pudiéramos simplemente obtener una referencia al MyLocationButton y simplemente, ya sabes, hacer clic en él? Bueno, esta es la mejor manera actual que he encontrado para hacer precisamente eso:

 @OnClick(R.id.fabMyLocation) public void onMyLocationClick(FloatingActionButton fabMyLocation) { View myLocationButton = ((View) mapFragment.getView().findViewById(Integer.parseInt("1")).getParent()) .findViewById(Integer.parseInt("2")); myLocationButton.performClick(); } 

Sí, no es bonito, y depende de IDs codificados que pueden cambiar en futuras versiones de la API de Google Maps. Sin embargo, este método de recuperar el botón se basa en esta respuesta altamente calificada de 2013 y hasta ahora, como de Google Play Services 8.4.0, todavía funciona sin problemas.

Esto es lo que hago para navegar hasta el centro del mapa cuando obtenemos la primera actualización de ubicación.

mi encabezado de clase:

 public class FragActivity extends SherlockFragmentActivity implements OnMyLocationChangeListener private GoogleMap mMap; 

mi configuración de mMap:

  if (mMap == null) { // Try to obtain the map from the SupportMapFragment. mMap = customMapFragment.getMap(); // Check if we were successful in obtaining the map. if (mMap != null) setUpMap(); } 

método setUpMap:

 private void setUpMap() { mMap.setMyLocationEnabled(true); mMap.setOnMyLocationChangeListener(this); } 

y mi onlocationchange:

 @Override public void onMyLocationChange(Location lastKnownLocation) { CameraUpdate myLoc = CameraUpdateFactory.newCameraPosition( new CameraPosition.Builder().target(new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude())).zoom(6).build()); mMap.moveCamera(myLoc); mMap.setOnMyLocationChangeListener(null); } 

Funciona de maravilla

Actualización Febrero de 2013:

Esto ahora es posible. Ahora puede configurar OnMyLocationChangeListener del mapa. Reciba una actualización como desee y mueva la cámara en consecuencia.

Esto no es posible. He encontrado que GoogleMap en Android es bastante limitado en la información que te da. Simplemente no le da acceso directo a las actualizaciones de ubicación del usuario o al botón que el usuario puede presionar (sólo puede habilitarlo / deshabilitarlo, no simular una prensa).

Debe implementar las interfaces LocationSource y LocationListener y utilizar un LocationManager para obtener actualizaciones del dispositivo y utilizarlas para enviarlas al mapa.

A continuación, puede agregar su propio botón personalizado a la superposición para replicar el botón predeterminado y utilizar su propia cámara y controles de zoom para simular la funcionalidad.

Fuente: horas de búsqueda

  • Cómo implementar google maps búsqueda por dirección en Android?
  • Google map android api v2 falla en la aplicación
  • Error al obtener Google Maps en android
  • Aplicación móvil de Android: mapas interiores, direcciones para caminar
  • GooglePlayServicesUtil error botón de diálogo no hace nada
  • Forma de círculo antialise Google Maps V2 Android
  • INSTALL_FAILED_MISSING_SHARED_LIBRARY un proplem de emulador de android
  • Error de Google maps: la posición del marcador no se actualiza después de arrastrar
  • Botón My-Location de GoogleMaps v2 Android, no se muestra
  • Cómo obtener mapas renderizados dentro de un CardView
  • Cómo dibujar una ruta utilizando diferentes valores long lat?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.