Centro de aplicaciones de Google Maps V2 Ubicación actual en pantalla

Estoy tratando de lograr esta tarea simple, que parecía ser bastante sencillo, pero todavía no funciona como se supone que debe hacer. Estoy utilizando el método de abajo, pero el teléfono se amplía en el centro de la ciudad, a unos 2 km de donde mi punto de ubicación azul es.

public void setUpMap() { mGoogleMap.setMyLocationEnabled(true); String context = Context.LOCATION_SERVICE; LocationManager locationManager = (LocationManager)mContext.getSystemService(context); Criteria criteria = new Criteria(); String provider = locationManager.getBestProvider(criteria, true); Location myLocation = locationManager.getLastKnownLocation(provider); double latitude = myLocation.getLatitude(); double longitude = myLocation.getLongitude(); LatLng latLng = new LatLng(latitude, longitude); mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10)); } 

He intentado fijar diversos valores del zumbido, pero nada cambia mucho. No estoy seguro de si debería configurar un nuevoLatLngBounds o no, ya que todo el mundo dice que este es el camino correcto. Parece que no estoy recibiendo mi ubicación actual, pero la ubicación de mi ciudad.

Nueva Respuesta: –

 mMap.setMyLocationEnabled(true); Location myLocation = mMap.getMyLocation(); if (myLocation != null) { mMap.animateCamera(CameraUpdateFactory.newLatLngZoom( new LatLng(myLocation.getLatitude(), myLocation .getLongitude()), 14)); } 

Esto viene un poco demasiado tarde, pero hay 2 maneras de hacerlo.

API de FusedLocation

Implementar la API de FusedLocation (consulte Cómo conocer la ubicación de la aplicación ), úsela para configurar una solicitud de ubicación y obtener una corrección de ubicación. Cuando obtiene el objeto Ubicación en la devolución de llamada, utilícelo para establecer la ubicación en el objeto GoogleMap.

 @Override public void onLocationChanged(Location location) { mCurrentLocation = location; mMap.animateCamera(CameraUpdateFactory.newLatLngZoom( new LatLng(location.getLatitude(), location.getLongitude()), 15)); } 

OnMyLocationChangeListener

La clase GoogleMap tiene un OnMyLocationChangeListener, que puede implementar de la misma manera para una sola corrección:

 mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() { @Override public void onMyLocationChange(Location location) { mMap.animateCamera(CameraUpdateFactory.newLatLngZoom( new LatLng(location.getLatitude(), location.getLongitude()), 15)); mMap.setOnMyLocationChangeListener(null); } }); 

El problema es que la interfaz está marcada como obsoleta y Google recomienda usar la API FusedLocation. Podría usarlo si realmente desea, pero tenga en cuenta los futuros cambios en la API que hacen inutilizable y romper su aplicación.

  • Comparando dos ubicaciones usando sus longitudes y latitud
  • Android onLocationChanged location.getTime () devuelve el tiempo incorrecto
  • Administrador de ubicación quita el permiso de actualizaciones
  • Calcular la velocidad de una aplicación de navegación sin el método getSpeed ​​()
  • Cómo obtener la ubicación actual latitud y longitud en android
  • ¿Cómo conseguir la ubicación gruesa usando Wifi o GSM o GPS, lo que esté disponible?
  • LocationManager's getBestProvider devolver null
  • ¿Cómo obtener la ubicación con Wifi en Android?
  • Servicios de Google Play: ¿cómo comprobar si hay una devolución de llamada pendiente pendiente "activa" registrada en las actualizaciones de ubicación / reconocimiento de actividad?
  • Prácticas recomendadas para informar de la ubicación del usuario continuamente
  • Selección de la API de Google Places sólo determinados tipos de lugares
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.