html5 - geolocalizacion - get current position google maps javascript
¿Hay alguna forma de detectar si un usuario ya ha dado permiso para usar navigator.geolocation? (3)
Además de configurar una cookie la primera vez, ¿hay una manera de detectar si un usuario ya ha dado permiso para que navigator.geolocation devuelva la latitud / longitud del navegador?
Si existe, ¿qué es y es el mismo en todos los navegadores o diferente en todos los navegadores?
Este tema ha sido parcialmente respondido en otro lugar.
De acuerdo con la API de GeoLocation - Chrome / Safari - Administración de permisos y diferencias visuales , Chrome solicita un permiso revocable de una sola vez. No he terminado de leer el artículo, pero parece que el almacenamiento de permisos no es una cosa puramente de Chrome.
¿Qué pasa con el uso de localStorage que debería ser compatible con todos los navegadores html5 (que admiten la ubicación geográfica)?
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get latitude and longitude;
function successFunction(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
localStorage[''authorizedGeoLocation''] = 1;
}
function errorFunction(){
localStorage[''authorizedGeoLocation''] = 0;
}
function checkauthorizedGeoLocation(){ // you can use this function to know if geoLocation was previously allowed
if(typeof localStorage[''authorizedGeoLocation''] == "undefined" || localStorage[''authorizedGeoLocation''] == "0" )
return false;
else
return true;
}
Y luego verificas usando la siguiente función:
alert(checkauthorizedGeoLocation());
Por favor vea esta respuesta sobre cómo hacerlo usando la API de permisos: verifique si se permitió la geolocalización y obtenga Lat Lon
Funciona sin preguntar al usuario si el permiso fue otorgado previamente.
Según la spec , no, solo hay tres métodos en navigator.geolocation
. Sin embargo, guardar en una cookie o almacenamiento local probablemente sea perfectamente adecuado: el permiso también se almacena en el agente del usuario, por lo que debería funcionar correctamente a medida que el usuario se mueve entre los navegadores.