Hoy os voy a enseñar cómo obtener localización utilizando React Native y Expo:
Vamos a utilizar la librería expo-location (https://docs.expo.dev/versions/latest/sdk/location/)
Primero la instalamos:
expo install expo-location
Esta librería añade automáticamente los permisos en Android Manifest (necesarios para utilizar localización):
ACCESS_COARSE_LOCATION
: for approximate device locationACCESS_FINE_LOCATION
: for precise device locationFOREGROUND_SERVICE
: to subscribe to location updates while the app is in use
Pero no añade el permiso para utilizar localización en segundo plano: ACCESS_BACKGROUND_LOCATION
. Si queremos añadir ese permiso, tendremos que hacerlo de forma manual en app.js.
Ahora importamos la librería para utilizarla en nuestro código:
import * as Location from 'expo-location';
Una vez importado, vamos al render y añadimos los métodos necesarios para obtener la localización.
const Component = ({ navigation }) => { //Estado dónde se va a guardar la localización obtenida const [location, setLocation] = useState(null); //Método para obtener permisos de localización y localización: const permisoLocalizacion = async () => { let { status } = await Location.requestForegroundPermissionsAsync(); if (status !== 'granted') { alert('Permission to access location was denied'); return; } let location = await Location.getCurrentPositionAsync({}); setLocation(location); console.log('Location: ' + JSON.stringify(location) + " Latitud: " + location.coords.latitude + " Longitud: " + location.coords.longitude); }; return ( <View style={styles.contenedor}> <Button tittle="Localización" onPress={permisoLocalizacion} /> </View> ) }; export default component;
Ahora voy a explicar el código.
Primero se crea un state para almacenar la localización cuándo sea obtenida:
const [location, setLocation] = useState(null);
El método const permisoLocalizacion = async () => {
es el que nos permitirá obtener la localización.
- Primero solicita permiso de localización.
- Si se acepta, nos devuelve la localización.
Para obtener las coordenadas, utilizamos los parámetros del objeto que nos devuelve:
location.coords.latitude
location.coords.longitude
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.