Вы находитесь на странице: 1из 3

Geolocalización En Android Studio

OBJETIVO:

 Obtener la ubicación actual, mostrarla en un mapa de Google Maps, a través de markers y


monitorear los cambios de posición en el mapa.

 PASO 01:
Crear un objeto marker para el marcador y declaramos dos variables para la latitud y longitud, de
nuestra posición actual.
//PRIMERO AGREGAMOS UN MARCADOR
private GoogleMap mMap;
private marker marcador;
//DECLARAMOS LAS VARIABLES
double lat = 0.0;
double lng = 0.0;

 PASO 02:
Creamos un método que nos servirá para agregar un marcador en el mapa, crearemos un objeto
LatLng, en el cual incluiremos la latitud y la longitud, luego utilizando el elemento CameraUpdate,
centraremos la cámara a la posición de nuestro marker.
public void agregarMarcador(double lat, double lng){
LatLng coordenadas = new LatLng(lat,lng);
CameraUpdate miUbicacion = CameraUpdateFactory.newLatLngZoom(coordenadas,16);

if(marcador!=null)marcador.remove();
marcador=mMap.addMarker(new MarkerOptions()
.position(coordenadas)
.title("MI POSICIÓN ACTUAL")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher))
);
mMap.animateCamera(miUbicacion);
}
 PASO 03:
Crear un método que servirá para obtener la latitud y longitud de nuestra posición actual, utilizando
para ello métodos proporcionados por la clase Location, y la cual utilizaremos como parámetro de
nuestro método.
Comprobamos si la localización recibida es diferente null, antes de asignar el valor a las variables,
para así evitar que la app se nos vaya aceptar al ejecutarla.
private void actualizarUbicacion(Location location){
if(location!=null){
lat = location.getLongitude();
lng = location.getLongitude();
agregarMarcador(lat,lng);
}
}

 PASO 04:
Implementamos un objeto de tipo LocationListener, el cual tiene la función de estar siempre atento
a cualquier cambio de localidad recibido por el GPS del dispositivo, como podemos ver al
instanciar este objeto, nos crea automáticamente una serie de métodos asociados a los distintos
eventos que podamos recibir de nuestro proveedor de localización.
El mas interesante de todo será el onLocationChanged, el cual se lanza cada vez que recibe una
actualización de la posición, dentro de este método llamaremos a nuestro método
actualizarUbicacion(), para poder refrescar la posición actual en el mapa.
LocationListener locListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
actualizarUbicacion(location);
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

@Override
public void onProviderEnabled(String provider) {

@Override
public void onProviderDisabled(String provider) {

}
};

 PAS0 05:
Creamos un método, en el cual, en el cual haremos referencia a la clase LocationManager, la cual
es utilizada para obtener servicios de geo posicionamiento en el dispositivo. Mediante el método
geoLastKnowLocation obtenemos la última posición conocida, luego llamamos a nuestro método
actualizarUbicacion, mediante el método requestLocationUpdates, solicitamos al GPS
actualizaciones de posición cada 15 segundos.
@RequiresApi(api = Build.VERSION_CODES.M)
private void miUbicacion() {
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
return;
}
LocationManager locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
Location location =
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
actualizarUbicacion(location);

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,15000,0,locListener
);
}
 PASO 06:
El método miUbicacion lo colocalmos dentro del onMapReady.

Вам также может понравиться