Попросите пользователя снова получить доступ к геолокации - PullRequest
0 голосов
/ 14 октября 2019

Я использую HTML5 Geolocation для получения пользовательских координат. Но если пользователь не согласен запросить доступ к GeoLocation, это всегда будет проблемой при посещении сайта.

Я хочу получить доступ снова, когда пользователю было отказано в доступе.

Как мне каждый раз спрашивать этого пользователя?

Вы можете скопировать мой код по этой ссылке https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation_error

    var x = document.getElementById("demo");
    
    function getLocation() {
    
    navigator.permissions.query({
         name: 'geolocation'

     }).then(function(result) {
         if (result.state == 'granted') {
           
          //user before accept  


           alert(result.state)
          
         } else if (result.state == 'prompt') {
            
             alert(result.state)
    navigator.geolocation.getCurrentPosition(showPosition, showError);
         } else if (result.state == 'denied') {
       
     
      // user is denied

      // I want call request to accept geolocation again


         }
        
     });
    
    
    }
    
    
    
    function showPosition(position) {
      x.innerHTML = "Latitude: " + position.coords.latitude + 
      "<br>Longitude: " + position.coords.longitude;
    }
    
    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 occurred."
          break;
      }
    }
 
  <p>Click the button to get your coordinates.</p>
            
            <button onclick="getLocation()">Try It</button>
            
            <p id="demo"></p>
...