Permisos de geolocalización y precisión de ubicación en el navegador
Comprende el contexto seguro, los permisos, la precisión y las alternativas privadas de la geolocalización del navegador.
Quieres la documentación estructurada de Huella digital?
Este artículo forma parte de la biblioteca editorial. Para pasos de configuración, material de referencia y actualizaciones continuas, entra en la sección de docs.
La geolocalización del navegador puede proporcionar una posición después de que la persona aprueba la solicitud. Es una capacidad mediada por el usuario, no una prueba de identidad, propiedad o intención. Explica el propósito, solicita en un contexto seguro y conserva una ruta útil cuando hay rechazo, revocación, tiempo agotado, indisponibilidad o precisión insuficiente.
Permiso y contexto seguro
La API se expone mediante navigator.geolocation y requiere contexto seguro. getCurrentPosition() debe seguir una acción clara y una explicación. El navegador puede mostrar un aviso, devolver rechazo o conservar un estado previo. MDN Geolocation API y Permissions API describen las superficies públicas.
Solicita cuando la ubicación ayude a la persona, no durante una carga sin relación. Un rechazo no debe crear bucles ni presión para debilitar controles. La especificación W3C Geolocation define el modelo mediado por permisos; el navegador y el sistema deciden si existe una posición.
El permiso puede revocarse y una política puede desactivar la ubicación. Conserva datos introducidos, explica la acción disponible y ofrece dirección manual, lugar guardado o flujo sin ubicación.
Precisión, tiempo de espera y caché
getCurrentPosition() acepta enableHighAccuracy, timeout y maximumAge. Son decisiones de producto: un tiempo corto puede fallar y uno largo puede hacer esperar. Una posición en caché responde rápido pero puede ser antigua. Pide alta precisión solo si la tarea lo necesita.
coords.accuracy es un radio estimado en metros, no una dirección garantizada. Latitud y longitud pueden ser aproximadas, antiguas o no estar disponibles. Comunica la incertidumbre cuando afecte a la tarea y no conviertas el radio en una dirección exacta sin una decisión explícita.
Define resultados aceptables antes de pedir ubicación. Un tiempo puede funcionar con un área amplia, mientras una entrega puede requerir confirmar la dirección. No actualices indefinidamente ni mantengas una vigilancia después de terminar.
Rechazo, revocación y ausencia
Trata rechazo, tiempo agotado, posición ausente y resultado inválido como ramas previsibles. Explica qué falló y qué sigue disponible. La entrada manual, un código postal, un lugar guardado o elegir en un mapa conservan la tarea. No infieras que rechazar indica dónde está alguien.
Al volver de suspensión o cambiar una configuración, recalcula una decisión local corta. No guardes un historial de coordenadas ni continúes una vigilancia tras navegar. Documenta el entorno probado, no una promesa universal.
Minimizar los datos de ubicación
Usa la precisión mínima que complete la tarea. Conserva la posición en memoria para una vista y guarda un lugar elegido, no coordenadas, si la persona quiere recordarlo. No pongas coordenadas en URL, etiquetas analíticas, identificadores o registros por defecto.
Antes de enviar una posición a un servicio, explica el límite, propósito y conservación, y pide una elección separada. Un evento operativo puede registrar permission_denied, coarse_location o manual_fallback, no un historial. Revisa SDK, informes, cachés y workers.
La ubicación es contexto sensible. No la combines con cuenta, red, fuentes, almacenamiento, tiempos o dispositivo para inferir identidad, rutina, salud o intención. Un caso de soporte debe tener propósito, acceso limitado, retención breve y borrado.
Diseñar y probar la alternativa
Prueba contexto inseguro, aviso, rechazo, revocación, tiempo agotado, ausencia, caché antigua, precisión amplia, demora de alta precisión y entrada manual. Comprueba tarea, foco, etiquetas y datos conservados; no fijes latitud, longitud, dirección o dispositivo concretos.
Los controles deben ser accesibles con teclado y lector de pantalla. Indica si el resultado es aproximado, guardado o no disponible. Conserva el foco tras el aviso y haz explícito el reintento. Un texto, lista o formulario debe sustituir al mapa.
Las promesas deben ser más estrechas que la evidencia: el permiso puede revocarse, una política puede desactivar ubicación y una versión futura puede cambiar precisión. Al restaurar la página, cambiar la política o elegir otro lugar, recalcula la decisión local, explica el límite y conserva la tarea normal.
Consulta la guía de privacidad de permisos y las bases de privacidad del navegador.
La marca temporal indica cuándo se obtuvo la posición, no cuándo se hizo la solicitud. Una caché puede ser antigua y debe mostrarse como tal.
Prueba timeout y maximumAge juntos: un valor fresco puede tardar o fallar, mientras uno guardado responde rápido pero puede estar desactualizado.
El estado granted no garantiza una posición, y un marco incrustado puede estar limitado por Permissions Policy y el documento superior.
El contexto seguro permite solicitar, pero no garantiza sensor, red ni aprobación del sistema. Documenta el resultado visible del entorno probado.
Tras un rechazo ofrece entrada manual; tras un tiempo agotado permite un reintento limitado; tras revocación exige una nueva acción explícita.
La retención debe coincidir con la tarea: memoria para una pantalla, lugar elegido para una preferencia y ninguna historia de coordenadas sin propósito.
Antes de transferir explica destinatario, propósito, conservación y borrado; revisa informes, cachés y trabajadores para evitar copias accidentales.
Prueba estados de permiso, marcos, caché, altitud ausente, marcas antiguas, suspensión y recuperación manual con datos sintéticos.
El reflujo accesible permite escribir una dirección, elegir un lugar guardado o continuar con una región amplia usando teclado y lector de pantalla.
Revisa precisión, marca temporal, altitud, timeout, maximumAge, retención y alternativa cuando cambie la tarea; la promesa debe ser menor que la evidencia.
Las coordenadas representan un punto y accuracy un radio horizontal estimado; más decimales no significan más certeza. La altitud puede faltar y la marca temporal indica cuándo se obtuvo el resultado, no dónde permanece la persona. Si necesitas una frontera, pide confirmar la dirección o región en lugar de inferirla.
Elige opciones según la tarea: maximumAge puede hacer rápida una vista amplia, timeout limita la espera y enableHighAccuracy puede aumentar coste sin garantizar un radio pequeño. Explica la espera, permite cancelarla y ofrece una alternativa manual; no cambies silenciosamente a opciones más exigentes.
Mantén estados separados para preparado, solicitud, permitido, rechazado, no disponible y resultado. Un permiso granted aún puede producir timeout, y un marco incrustado puede estar limitado por Permissions Policy. Prueba cada contexto.
Conserva una posición de una pantalla en memoria. Un lugar guardado debe poder editarse y eliminarse. Antes de transferir coordenadas define propósito, acceso, caducidad y borrado; revisa URL, cachés, informes y componentes de fondo.
El feedback debe ser textual y accesible: devuelve el foco, anuncia espera, caché o indisponibilidad y permite cancelar, reintentar o escribir una dirección con teclado y lector de pantalla.
La lista de verificación de compatibilidad y alternativa de pruebas debe cubrir contexto inseguro, permiso aceptado o revocado, marco bloqueado, caché, precisión, altitud, marca antigua, timeout, proveedor ausente, navegación, suspensión, entrada manual y borrado usando coordenadas sintéticas.
El producto debe permitir cambiar de opinión: detener una transferencia pendiente, borrar un lugar guardado y volver al modo manual. Explica qué dato era local y cuál ya se envió, sin usar el permiso para identificar a nadie. Mantén visible la recuperación.
Fuentes
Artículos Relacionados
Lleva BotBrowser de la investigación a producción
Usa estas guías para entender el modelo y después avanzar hacia validación multiplataforma, contextos aislados y despliegue de navegador preparado para escalar.