La geolocation no funciona cuando el service de location se desactiva y desactiva.

Tengo una function activada con un clic de button que comtesting la geolocation … funciona bien en los teléfonos cuando la geolocation está activada y, cuando está desactivada, aparece un post que indica lo mismo, como se esperaba. El problema ocurre cuando primero se desactiva el service de location del teléfono, se hace clic en el button (el post aparece, como se esperaba), luego, si el usuario vuelve a activar los services de location mientras la aplicación todavía está abierta y vuelve a hacer clic en el button, sigue siendo el mismo Aparece el post 'no service service'.

¿Hay alguna manera de verificar si el service de location del teléfono está encendido o apagado en cada clic de button? Obtener los mismos resultados en Android e iOS.

código:

$(document).ready(function () { $('#smallScreenGeolocate').on('click', function(){ getCurrentLocation(); }); }); function getCurrentLocation () { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(addGeolocationMarker, locationError); return true; } else { alert("Browser doesn't support Geolocation. Visit http://caniuse.com to discover browser support for the Geolocation API."); return false; } } 

Marque esta respuesta desde otra publicación SO https://stackoverflow.com/a/14862073/6539349

Tienes que verificar cuál fue el error como se sugiere aquí http://www.w3schools.com/html/html5_geolocation.asp

 function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition,showError); } else { x.innerHTML = "Geolocation is not supported by this browser."; } } function showPosition(position) { x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; } 

El segundo parámetro showError del método getCurrentPosition () se usa para manejar errores. Especifica una function para ejecutar si no consigue la location del usuario:

 function showError(error) { switch(error.code) { case error.PERMISSION_DENIED: x.innerHTML = "User denied the request for Geolocation." break; case error.POSITION_UNAVAILABLE: x.innerHTML = "Location information is unavailable." break; case error.TIMEOUT: x.innerHTML = "The request to get user location timed out." break; case error.UNKNOWN_ERROR: x.innerHTML = "An unknown error occurnetworking." break; } }