Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Obtener localización en React Native y Expo

Tiempo de lectura: 2 minutos

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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
expo install expo-location
expo install expo-location
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 location
  • ACCESS_FINE_LOCATION: for precise device location
  • FOREGROUND_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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import * as Location from 'expo-location';
import * as Location from 'expo-location';
import * as Location from 'expo-location';

Una vez importado, vamos al render y añadimos los métodos necesarios para obtener la localización.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
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;
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);
const [location, setLocation] = useState(null);

El método

const permisoLocalizacion = async () => {
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

1

Deja un comentario