meme master
meme master

Reputation: 37

How can I add an alert when Geolocation Services are denied?

It had worked previously in my code, however with the recent changes I made it seems to be broken. I tried looking online for solutions, however this seems specific to me in terms of what I need. All i want is for an "alert();" to be showen if the browser Geolocation Services request is denied. Here is the code without the alert added in. Thank you.

      if (navigator.geolocation) {
            // Locate position
            navigator.geolocation.getCurrentPosition(displayPosition);
        } else {
            alert('It seems like Geolocation, which is required for this page, is not enabled in your browser. Please use a browser which supports it.');
        }
        blacklisted_areas = {
            'area 51': [1, 2], 
            'pink unicorn zoo': [1, 2], 
        };
        // Success callback function
        function displayPosition(pos) {
  var mylat = pos.coords.latitude;
  var mylong = pos.coords.longitude;
  var thediv = document.getElementById('locationinfo');
  thediv.innerHTML = '<p>Your longitude is :' + mylong + ' and your latitide is ' + mylat + '</p>';

  var blacklisted = false;
  for (let x of Object.values(blacklisted_areas)) {
    if (mylat === x[0] && mylong === x[1]) {
      blacklisted = true;
    }
  }
  if(!blacklisted){
    window.location="insertURLHere";
  }


}

Upvotes: 0

Views: 130

Answers (2)

Josh
Josh

Reputation: 1474

Pass a callback for on error.

if (navigator.geolocation) {
  // Get user's geo position.
  navigator.geolocation.getCurrentPosition(function success(position) {
    // Success
  }, function error(err) {
    // Geolcoation denied.
    if (err.code === err.PERMISSION_DENIED) {
      // Determine reason for error.
      if (err.message.match(/secure/i)) {
        console.alert('INSECURE_ORIGIN');
      } else {
        console.alert('INSECURE_ORIGIN');
      }
    }
  });
}

Upvotes: 1

Duannx
Duannx

Reputation: 8726

Just handle error case:

navigator.geolocation.getCurrentPosition(displayPosition, onError);
function onError (error) { 
    if (error.code == error.PERMISSION_DENIED)
       alert("you denied geolocation");
};

Upvotes: 1

Related Questions