Search code examples
javascripthtmlgoogle-chromegeolocationprogressive-web-apps

Request location coordinates after user has blocked access in javascript


How can I prompt a user for their geo-location in javascript if they've blocked my request in the past? (using navigator.geolocation.getCurrentPosition).

For example, my web app requires location services, and the user accidentally clicks "block", or they change their mind. What can I do to prompt them again?


Solution

  • As mentioned by @matthew-shwery, you can not change the permission.
    the best you could do is check for the permission and notify the user is the permission is denied

    navigator.permissions.query({
         name: 'geolocation'
     }).then(function(result) {
         if (result.state == 'granted') {
             report(result.state);
             geoBtn.style.display = 'none';
         } else if (result.state == 'prompt') {
             report(result.state);
             geoBtn.style.display = 'none';
    
             navigator.geolocation.getCurrentPosition(revealPosition, positionDenied, geoSettings);
         } else if (result.state == 'denied') {
             report(result.state);
             geoBtn.style.display = 'inline';
         }
         result.onchange = function() {
             report(result.state);
         }
     });
    

    Geolocation docs