Geolocation API en componentes de React
Solicitar y seguir la ubicación del usuario con la Geolocation API, gestionar los permisos y limpiar los watchers
Geolocation API en componentes de React es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
Lectura de la posición una sola vez
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options) solicita la ubicación del dispositivo una sola vez. La función de devolución de llamada de éxito recibe un objeto GeolocationPosition. Esto es apropiado cuando necesita la ubicación una sola vez, por ejemplo, para encontrar la tienda más cercana al hacer clic en un botón, en lugar de seguir el movimiento continuamente.
Seguimiento continuo de la posición
navigator.geolocation.watchPosition(successCallback, errorCallback, options) ejecuta continuamente la función de devolución de llamada cada vez que cambia la posición del dispositivo. Devuelve un valor numérico watchId. Es adecuado para casos de uso en tiempo real, como el seguimiento de entregas o la navegación giro a giro, en los que la posición debe mantenerse actualizada.
El objeto de posición
El objeto GeolocationPosition contiene una propiedad coords con latitude, longitude y accuracy (en metros). Entre los campos opcionales adicionales se incluyen altitude, altitudeAccuracy, heading y speed. El campo timestamp registra cuándo se capturó la posición.
Códigos de error de geolocalización
La función de devolución de llamada de error recibe un objeto GeolocationPositionError con una propiedad numérica code. El código 1 es PERMISSION_DENIED (el usuario rechazó la solicitud), el código 2 es POSITION_UNAVAILABLE (fallo del hardware o de la red) y el código 3 es TIMEOUT (la solicitud tardó demasiado). Gestione siempre los tres casos.
Borrar el seguimiento durante la limpieza
Un listener de watchPosition se ejecuta indefinidamente hasta que se detiene. En useEffect, devuelva una función de limpieza que llame a navigator.geolocation.clearWatch(watchId). Si olvida la limpieza, el seguimiento continúa ejecutándose después de desmontar el componente, consume batería y puede intentar actualizar un estado desmontado.
Creación del hook useGeolocation
Un hook useGeolocation gestiona un estado de tipo con cuatro valores posibles: idle (aún no se ha solicitado), loading (solicitud en curso), success (se recibió la posición) y error (falló la solicitud). También mantiene en el estado position y errorMessage. Los componentes reciben una interfaz clara y coherente.
Gestión adecuada del rechazo del permiso
Cuando el usuario rechace la geolocalización, muestre un mensaje útil que explique por qué la función necesita acceso a la ubicación y cómo volver a activarlo en la configuración del navegador. Nunca muestre un código de error sin procesar a los usuarios. Ofrezca una alternativa para introducir la dirección manualmente, de modo que la función siga siendo utilizable sin permiso de ubicación.
Requisito de HTTPS para la geolocalización
Al igual que la mayoría de las API potentes del navegador, la geolocalización está restringida a contextos seguros. navigator.geolocation es undefined en páginas HTTP normales. Durante el desarrollo en localhost, funciona sin HTTPS. En producción, asegúrese siempre de que su aplicación se sirva mediante HTTPS; de lo contrario, nunca se solicitará permiso a los usuarios.
Opciones de precisión y tiempo
El tercer argumento opcional de getCurrentPosition y watchPosition acepta un objeto de opciones. enableHighAccuracy: true solicita una precisión similar a la del GPS a cambio de un mayor consumo de energía. timeout establece el número máximo de milisegundos que se debe esperar. maximumAge permite utilizar una posición almacenada en caché si se capturó dentro del número de milisegundos especificado.
Casos de uso reales
La geolocalización permite funciones como "buscar una tienda cercana", el seguimiento de repartidores en un mapa, la información meteorológica basada en la ciudad actual, las publicaciones con etiquetas de ubicación y el cálculo de distancias entre el usuario y un destino. Explique siempre con claridad a los usuarios por qué la aplicación necesita su ubicación antes de solicitar el permiso.
Pruebas de geolocalización durante el desarrollo
Chrome DevTools permite establecer una ubicación de dispositivo ficticia. Abra DevTools, vaya al menú de tres puntos, seleccione More tools y, a continuación, Sensors. Puede escribir coordenadas de latitud y longitud para simular cualquier ubicación. Esto es mucho más rápido que desplazarse físicamente para probar funciones que dependen de la ubicación.
Códigos de error de geolocalización
¿Qué significa un código 1 de GeolocationPositionError?
Resumen de la lección: API de geolocalización en React
Utilice getCurrentPosition para una lectura única y watchPosition para un seguimiento continuo. Llame siempre a clearWatch en la función de limpieza de useEffect. Cree un hook useGeolocation con los estados idle, loading, success y error. Gestione adecuadamente el rechazo del permiso y recuerde que la geolocalización requiere HTTPS en producción.
Preguntas frecuentes
¿La lección «Geolocation API en componentes de React» es gratis?
Sí — el texto completo de «Geolocation API en componentes de React» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Geolocation API en componentes de React»?
Solicitar y seguir la ubicación del usuario con la Geolocation API, gestionar los permisos y limpiar los watchers Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Geolocation API en componentes de React»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Clipboard API: copiar y pegar en React
- Geolocation API en componentes de React
- Notifications API y gestión de permisos
- IntersectionObserver para efectos activados por el desplazamiento