Запустить обратный вызов, когда разрешение на местоположение запрещено - PullRequest
0 голосов
/ 30 октября 2018

Я сейчас работаю над своим проектом в Laravel. Мне нужно получить информацию о пользователе (в первую очередь, о его местонахождении), чтобы приложение работало нормально; поэтому я провел некоторое время и узнал о геолокации. У меня есть следующий код, который находит местоположение пользователя:

var location;
var latitude;
var longitude;




 function findLocation() {
  var geoSuccess = function(position) {
    location = position;
    latitude = location.coords.latitude;
    longitude = location.coords.longitude;
    console.log("Latitude is " + location.coords.latitude);
    console.log("Longitude is " + location.coords.longitude);
  };
  navigator.geolocation.getCurrentPosition(geoSuccess);
};

Дело в том, что пользователю необходимо указать свое местоположение, чтобы зарегистрировать свой аккаунт. Поэтому, когда пользователь запрещает разрешение на местоположение, я хочу уведомить пользователя, чтобы предоставить местоположение для продолжения. Но я не знаю, как это сделать. Что я хочу сделать, это:

if(error){
  console.log("You need to provide your location!");  
  // I will do a bunch of stuffs here
 }

Итак, как мне это сделать? Любая помощь приветствуется.

Примечание: код геолокации взят с W3Schools.com

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

На самом деле, я обнаружил, что все, что касается вопроса, упомянуто на странице W3Schools о геолокации. И я нашел, как там обрабатывать ошибки и отклонения.

0 голосов
/ 30 октября 2018

Вы можете добавить обратные вызовы в вашем методе getCurrentPosition().

Источник: https://stackoverflow.com/a/18117882/5865284

navigator.geolocation.getCurrentPosition(showPosition(){
    // Do stuff...
}, showError(){
    // Do stuff...
}, {timeout:8000});

Стоит отметить, что вы, скорее всего, захотите тайм-аут для обработки браузеров, таких как Firefox, которые предоставляют опцию «Не сейчас». Это связано с тем, что по замыслу он не запускает обработчик ошибок, и поэтому нам необходимо время ожидания для подтверждения, получили мы данные или нет.

...