Estoy construyendo un pequeño script que los clientes instalarán en su página. La geolocalización no es necesaria, sin embargo, si existe, sería bueno tenerla. ¿Hay alguna manera de que compruebe si la página de clientes ha solicitado información de geolocalización y si el usuario seleccionado permite obtener el lat & lon sin crear otro mensaje?Verificar si se permitió la geolocalización y obtener Lat Lon
Respuesta
No es posible con la API de geolocalización pero es posible con la nueva API de autorización
Este código es útil si quieres probar para recibir las coordenadas, pero no quiere molestar al usuario con una primo de diálogo del sistema las coordenadas no es tan importante y puede así vuelve a los geoip
function getCoords(){
return new Promise((resolve, reject) =>
navigator.permissions ?
// Permission API is implemented
navigator.permissions.query({name:'geolocation'}).then(permission =>
// is geolocation granted?
permission.state === "granted"
? navigator.geolocation.getCurrentPosition(pos => resolve(pos.coords))
: resolve(null),
reject) :
// Permission API was not implemented
reject(new Error("Permission API is not supported"))
)
}
getCoords().then(coords => console.log(coords))
Esto se resolverá como nulo si el permiso no se ha concedido, lanzar un error si algún código javascript no fue apoyado por el navegador y resolver a las coordenadas si se ha concedido
Puede detectar si la característica existe al examinar el objeto de la ventana.
if('geolocation' in window){
navigator.geolocation.getCurrentPosition(...);
}
Esto hará que un solo mensaje para el usuario para llegar a preguntar al usuario si desea compartir su ubicación con su página.
Si la geolocalización no está disponible en el navegador, esto no se ejecutará en absoluto.
EDITAR Si ya has pedirá al usuario en esta página carga para permitir el acceso de geolocalización, que no le pedirá de nuevo. Si el usuario navega y regresa a esta página, se volverá a solicitar.
Puede realizar llamadas posteriores a la API sin preguntar durante esa sesión de página.
Referencia: MDN Geolocation -- Watching the current position
No creo que le importe si el navegador lo admite o no: quiere saber si, en caso de que el navegador lo admita, puede llamar a 'getCurrentPosition()' * sin * un aviso porque el sitio ya ha provocado tal aviso antes de. – ThiefMaster
@ThiefMaster. Eso no es un voto negativo a menos que haya hecho la pregunta. La intención de la pregunta no es clara. En ese caso, sin embargo, consulte mi actualización. – tkone
@TheifMaster es correcto – Stefan
De acuerdo con la API no es posible averiguar de que el usuario ya ha permitido el sitio actual para recuperar la ubicación del usuario sin causar la petición, si no lo ha hecho. See Endless answer
Le sugiero que permita a los usuarios pasar un argumento al incrustar el script diciéndole si debe usar funciones de geolocalización o no.
El hecho de que se le solicite o no parece depender del navegador y de la configuración de 'privacidad' que tenga. Safari 6 tiene 3 configuraciones: solicitar una vez por sitio, solicitar una vez por sitio por día y denegar. Chrome 23 tiene 3 configuraciones: permite todo, pregunta y niega todo. Claro que sería bueno si hubiera una manera de verificar si ya está permitido sin molestar al usuario.
- 1. Convertir lat/lon a píxeles y volver
- 2. Convertir Lat/Lon en MGRS
- 3. ¿Cómo almacenar el punto de geolocalización lat-lon en un documento para la búsqueda de GAE?
- 4. Distancia entre dos lat, lon puntos
- 5. Java, convertir lat/lon a UTM
- 6. ¿Hay forma de hacer geocodificación por lotes (obtener lat/lon por dirección y viceversa)?
- 7. ¿Cálculos simples para trabajar con lat/lon + km de distancia?
- 8. Convertir lat/lon a código postal/nombre del barrio
- 9. Python - Lote convertir posiciones de GPS a Lat Lon decimales
- 10. MySQL GIS Lat/Lon para X/Y: que es la que?
- 11. Si tiene un GeoTiff, ¿sería posible transformar un punto de Lat/Lon en una X, Y utilizando el GeoTransform?
- 12. Uso de Google Weather API con Lat y Lon: ¿cómo formatear?
- 13. Geolocalización con IPv6?
- 14. PHP MySql y geolocalización
- 15. ¿Cómo obtener la geolocalización del usuario?
- 16. Mover columnas de texto lat/lon a una columna de tipo 'punto'
- 17. Orden Lon/Lat al utilizar el tipo de POINT espacial con MySQL
- 18. AppleScript devuelve "No se permitió la interacción del usuario"
- 19. Determine si Lat/Lng en los límites
- 20. Cómo obtener mi geolocalización en bash
- 21. Google Maps Autocompletar: cómo obtener lat/lng?
- 22. ¿Cómo verificar si se abre una figura y cómo cerrarla?
- 23. Obtener una dirección en la lat par/larga
- 24. Permiso de geolocalización Chrome IOS HTML5 denegado
- 25. ¿Está buscando cosas cerca de una geolocalización?
- 26. Conversión de Lat/Longs en Coordenadas X/Y
- 27. El navegador de Android no funciona con la geolocalización
- 28. ¿Cómo verificar si __PRETTY_FUNCTION__ se puede usar?
- 29. API de Geolocalización de Firefox Alternativa
- 30. Doctrina 2.0 Orx no permitió
Este es un enfoque útil pero, dado que es una API bastante nueva, es importante mencionar los posibles problemas de compatibilidad. Por ejemplo: http://caniuse.com/#feat=permissions-api – Mario