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

  • Obtenga los sitios de inicio y trabajo de los usuarios de Google
  • Problema de contexto en el ejemplo de Android "Google Map View"
  • Obtención de desviaciones de la ruta establecida de google maps?
  • Android Google Maps no se muestra en firmado apk V2
  • La superposición de información de tráfico se muestra siempre encima de otras polilíneas en el mapa de google en android
  • ¿Cuál es la forma sugerida de implementar superposiciones en v2 de la API de Google Maps para Android?
  • ¿Por qué Android LocationManager tiene un gran retraso antes de que las actualizaciones de ubicación se inicien si la precisión del ajuste
  • Android studio v0.3.2, gradle, google maps v2.0 No encontró la clase "com.google.android.gms.maps.MapFragment
  • Android - No se pudo encontrar el estilo 'mapViewStyle' en el tema actual
  • Google Maps Android V2 - Pantalla en blanco
  • Cómo enfocar el marcador de Google por marcador de título?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.