Навігація navigator.geolocation.getCurrentPosition іноді працює


220

Тож у мене є досить простий біт JS за допомогою варення Navigator.geolocation.getCurrentPosition.

$(document).ready(function(){
  $("#business-locate, #people-locate").click(function() {
    navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
  });

  navigator.geolocation.getCurrentPosition(foundLocation, noLocation);

  function foundLocation(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
    var userLocation = lat + ', ' + lon;
    $("#business-current-location, #people-current-location").remove();
    $("#Near-Me")
      .watermark("Current Location")
      .after("<input type='hidden' name='business-current-location' id='business-current-location' value='"+userLocation+"' />");
    $("#people-Near-Me")
      .watermark("Current Location")
      .after("<input type='hidden' name='people-current-location' id='people-current-location' value='"+userLocation+"' />");
  }
  function noLocation() {
    $("#Near-Me").watermark("Could not find location");
    $("#people-Near-Me").watermark("Could not find location");
  }
})//end DocReady

В основному, що відбувається тут, ми отримуємо поточну позицію, якщо вона отримана, два "водяні знаки" розміщуються в двох полях, що кажуть "Поточна позиція", і два приховані поля створюються з даними lat-long як їх значення (вони видаляються на початку, щоб вони не дублювалися щоразу). Також є дві кнопки, на яких прив’язана функція клацання, яка робить те саме. На жаль, кожен третій раз так працює. У чому тут проблема ???


Можливо, визначте функції, перш ніж їх використовувати.
tcooc

4
@digitalFresh, це не має значення, оскільки аналізатор JS шукає ці декларації перед початком виконання коду
antimatter15

Чи можливо використання jQuery там викликає проблеми?
Thesosociatedweb

1
Що саме ти маєш на увазі, коли кажеш, що іноді це не працює? Викликається noLocationфункція? Якщо це так, ви можете додати errorпараметр до noLocation()і потім, error.codeі це error.messageможе допомогти вам у налагодженні. Це також може допомогти нам дізнатися, який браузер ви використовуєте, і якщо ви бачите ту саму проблему в різних браузерах.
npdoty

Я маю на увазі, що іноді це дає мені lat-lon, а іноді це не так. коли він не працює, він навіть не кидає повідомлення "не вдалося знайти місцезнаходження", тому біт noLocation також не працює.
thesosociatedweb

Відповіді:


342

У мене виникли точно такі самі проблеми, і в Інтернеті майже не було інформації про це. Нічого в книгах. Нарешті я знайшов цей тверезий запит на stackoverflow і (га!) Це був остаточний поштовх, який мені знадобився для створення тут облікового запису.

У мене є часткова відповідь, але, на жаль, не повна.

Перш за все, зрозумійте, що час за замовчуванням для getCurrentPosition нескінченний (!). Це означає, що ваш обробник помилок ніколи не буде викликаний, якщо getCurrentPosition висить десь на задньому кінці.

Щоб переконатися, що ви отримаєте тайм-аут, додайте необов'язковий третій параметр у свій дзвінок до getCurrentPosition, наприклад, якщо ви хочете, щоб користувач чекав не більше 10 секунд, перш ніж дати їм зрозуміти, що відбувається, скористайтеся:

navigator.geolocation.getCurrentPosition(successCallback,errorCallback,{timeout:10000});

По-друге, я відчував зовсім іншу надійність у різних контекстах. Тут, вдома, я отримую зворотний дзвінок протягом секунди чи двох, хоча точність погана.

На роботі, однак, я відчуваю досить химерні зміни в поведінці: Геолокація працює на деяких комп’ютерах постійно (звичайно, IE виключається), інші працюють лише в хромі та сафарі, але не в firefox (проблема gecko?), Інші працюють один раз, потім згодом. невдача - і шаблон змінюється з години на годину, з дня на день. Іноді у вас є "щасливий" комп'ютер, іноді - ні. Можливо, забій козлів у повний місяць допоможе?

Я не зміг це зрозуміти, але підозрюю, що інфраструктура заднього кінця є більш нерівною, ніж рекламована в різних книгах і веб-сайтах, які наполягають на цій функції. Я дуже хотів би, щоб вони були трохи зрозумілішими, наскільки ця функція нестабільна, і наскільки важливим є цей час, якщо ви хочете, щоб обробник помилок працював належним чином .

Я сьогодні намагався навчити цього матеріалу студентам, і в мене була неприємна ситуація, коли мій власний комп’ютер (на проекторі та декількох великих екранах) мовчав невдало, тоді як приблизно 80% студентів отримували результат майже миттєво (використовуючи точно така ж бездротова мережа). Дуже важко вирішити ці питання, коли мої студенти також роблять помилки на друку та інші гафи, і коли мій ПК також не вдається.

У будь-якому випадку, я сподіваюся, що це допоможе комусь із вас, хлопці. Дякуємо за перевірку здорового стану!


5
Хороша детальна інформація, дякую! Я бачу ті самі проблеми, але лише на Firefox 3.6.13. Хром здається досить надійним.
Феліпе Ліма

Тут те саме, і параметр maxAge також видається ненадійним. Дякую за пост.
Річард

1
Приємно, у мене була та сама проблема (на Samsung Galaxy Tab, 10.1, на базі Android 4.0.3 ), як тільки я застосував параметр тайм-аута, зазначений вище, я зміг вирішити цю проблему.
mlo55

9
Важливо зрозуміти, що таке timeoutваріант getCurrentPosition()насправді. Користувач не вдається дозволити або заборонити запит на геолокацію, але скільки часу мережі потрібно прийняти, щоб повернути місцезнаходження після отримання дозволу. Якщо користувач не відповідає на запит геолокації, обробник помилок ніколи не буде викликаний. Таким чином, вам потрібен другий тайм-аут, як у відповіді @ xiaohouzi79.
Франсуа

2
забій козлів у повний місяць допоможе? LOL
Асім КТ

66

Це хакітній спосіб, який я обіходжу, принаймні, він працює у всіх поточних браузерах (у Windows, я не маю Mac):

if (navigator.geolocation) {
    var location_timeout = setTimeout("geolocFail()", 10000);

    navigator.geolocation.getCurrentPosition(function(position) {
        clearTimeout(location_timeout);

        var lat = position.coords.latitude;
        var lng = position.coords.longitude;

        geocodeLatLng(lat, lng);
    }, function(error) {
        clearTimeout(location_timeout);
        geolocFail();
    });
} else {
    // Fallback for no geolocation
    geolocFail();
}

Це також буде спрацьовувати, якщо хтось натискає кнопку "Закрити", або вибирає "ні", або вибирає опцію "Ніколи не поділяти" на Firefox.

Кланку, але це працює.


1
+1 Але ви пропускаєте geolocFail();оброблювач помилок та getcodeLatLng();геокодер.
кайзер

Солодкий - таймер прекрасно працює, якщо хтось вирішив не ділитися місцеположенням. Деякі браузери не дуже добре працюють, коли користувачі роблять це. Цей таймер вирішив чудово на моєму додатку WP Locator Plus WP!
Ленс Клівленд

2
@sajith - Не впевнений, чи застаріло це рішення в останніх веб-переглядачах FF. Він працював у той час, коли я пропонував рішення, оскільки мені це було потрібно для сайту, над яким я працював. Ви протестували?
збирається

Вибачте, він працював. Але я не можу знайти те, що змушує його працювати. Після закриття та повторного відкриття FF працює ........ подяку за ваше рішення ....
sajith

1
Ви не повинні використовувати функцію всередині рядка. Злий Евал працює там нестримно. setTimeout ("geolocFail ()", 10000);
atilkan

42

Це працює для мене кожен раз:

navigator.geolocation.getCurrentPosition(getCoor, errorCoor, {maximumAge:60000, timeout:5000, enableHighAccuracy:true});

Хоча це не дуже точно. Найсмішніше те, що на тому ж пристрої, якщо я його запускаю, це відкладає мене приблизно на 100 метрів (кожен раз), але якщо я переходжу до карт Google, то точно знаходить моє місцезнаходження. Отже, хоча я думаю, що enableHighAccuracy: true допомагає йому працювати стабільно, але, схоже, це не робить його більш точним ...


Це забороняє Firefox відхиляти запит та надсилати назад об’єкт таймауту.
тоні

За 100 метрів знаходиться стільникова вежа, до якої я прив’язаний. Тож це повертає місце розташування стільникової вежі, а не мій телефон. Може бути точнішим, якби я опинився назовні, щоб gps
бив

9
Це триває відкладати вас на пару метрів, оскільки для вас встановлений максимальний вік-параметр 60 секунд. Тож розміщення свого місця, де ви були в 60 секунд тому. Встановіть максимальний вік на 10 секунд або менше (максимальний вік: 10000) та повторіть спробу.
Роберт Сміт

Я використовував це getCurrentPosition у кутовому Resolver, який повертає спостережуване. Resolver завершується лише з перервами. Додаючи ці параметри: {максимальний вік: 60000, тайм-аут: 5000, увімкнітьHighAccuracy: true} змушує його працювати щоразу !!!
Мутоно

17

Це вже давнє запитання, але всі відповіді не вирішили моєї проблеми, тож давайте додамо той, який я нарешті знайшов. Пахне хаком (і він один), але працює завжди в моїй ситуації. Сподіваюсь і у вашій ситуації.

//Dummy one, which will result in a working next statement.
navigator.geolocation.getCurrentPosition(function () {}, function () {}, {});
//The working next statement.
navigator.geolocation.getCurrentPosition(function (position) {
    //Your code here
}, function (e) {
    //Your error handling here
}, {
    enableHighAccuracy: true
});

3
Це найвиразніші хаки, і я не маю уявлення, як ви навіть думали спробувати це, але це вирішує мою проблему. Дякую!
Бретт Грегсон

Я використовував це сам у деяких випадках. Друга спроба завжди краще працює в моєму досвіді
Ніко Вестердейл

13

Це ж тут люди, це ідеально підходить для Chrome (стабільний, розробник та канарка), тільки не у FF та Safari. Він також ідеально працює на моєму iPhone та iPad (Safari!). Це може бути пов'язано з відносною новизною цієї функції (тобто, це помилка). Я витрачаю майже тиждень на це зараз, і я просто не можу змусити його працювати над цими браузерами

Ось що я знайшов:

Перший раз, коли ви телефонуєте getCurrentPosition, він працює ідеально. Будь-який наступний виклик ніколи не повертається, тобто він не запускає функцію successCallback або errorCallback. Я додав кілька варіантів позиції до свого дзвінка, щоб довести свою думку:

 navigator.geolocation.getCurrentPosition(successCallback, errorCallback,  {timeout: 10000});

і час проходить час кожного разу (після першого успішного дзвінка). Я думав, що можу це виправити за допомогою максимального віку, але це, здається, не працює, як це передбачається:

navigator.geolocation.getCurrentPosition(successCallback, errorCallback,  {maximumAge:60000, timeout: 2000});

це повинно запобігти фактичному виклику функції getCurrentPosition, якщо ви зателефонуєте їй протягом 60 секунд, але вона ігнорує це (однак, це може бути пов’язано з тим, що я фактично оновлюю свою сторінку, щоб викликати другий виклик, не впевнений, чи це постійні невмілі дзвінки)

btw, навіть приклади Google провалюються в цих браузерах, що призводить мене до думки, що це справді помилки браузера, спробуйте, завантажте його двічі в Safari, і він не працюватиме вдруге.

Якщо хтось знайде рішення для цього, будь ласка, повідомте мене :-)

Ура.


У мене є точна проблема, як у вас, вона працює для першого дзвінка, але ніколи не наступного, якщо хтось знайде рішення, я був би дуже зацікавлений ... @ xiaohouzi79 ваше рішення закінчується кожен раз (крім першої) у geolocFail ( )
Адріано Ріццо

8

Ви не отримуєте повідомлення про помилку, оскільки воно за замовчуванням не має тайм-ауту (принаймні, я думаю). У мене була однакова проблема з firefox, тільки для мене firefox завжди дає тайм-аут. Ви можете встановити тайм-аут собі таким чином.

Моя функція чудово працює в хромі, але я отримую тайм-аут щоразу в Firefox.

    navigator.geolocation.getCurrentPosition(
        function(position) {
            //do succes handling
        },
        function errorCallback(error) {
            //do error handling
        },
        {
            timeout:5000
        }
    );

Рекомендую уважно стежити за своїми помилками. Очікуйте на все. Майте резервний план на все. Я використовую деякі значення або значення за замовчуванням з моєї бази даних у випадку, коли і геолокації google, і геолокації навігатора не вдається.


7
просто FYI, maxAge посилається на вік даних про місцезнаходження в кеші, якщо встановити його на нескінченність гарантує отримання кешованої версії. Якщо встановити 0, змушує пристрій повернути положення.
Порко

тому, що maxAge: Infinity викрутить вас, як зазначено вище, це означає, що примусово використовувати кешоване значення.
n13

7

Я все ще отримую плямисті результати в 2017 році, і я маю теорію: документація API говорить, що виклик тепер доступний лише "в безпечному контексті", тобто через HTTPS. У мене виникають проблеми з отриманням результату в моєму середовищі розробки (http on localhost), і я вважаю, що саме тому.


Хм цікаво. Навіть у 2020 році вона все ще лунає з HTTPS на localhost!
NitroStoutPlz

6

Я опублікую це тут на випадок, якщо це комусь корисно…

У iOS Safari виклик до navigator.geolocation.getCurrentPositionтаймауту, якби у мене була активна navigator.geolocation.watchPositionфункція.

Запустивши та зупинивши watchPositionналежне використання, clearWatch() як описано тут, працював: https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition


1
Дуже дякую. Це було рішенням для мене.
Цинь Чженкван

5

ось моє рішення завдяки закриттю:

  function geoloc(success, fail){
    var is_echo = false;
    if(navigator && navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(
        function(pos) {
          if (is_echo){ return; }
          is_echo = true;
          success(pos.coords.latitude,pos.coords.longitude);
        }, 
        function() {
          if (is_echo){ return; }
          is_echo = true;
          fail();
        }
      );
    } else {
      fail();
    }
  }

  function success(lat, lng){
    alert(lat + " , " + lng);
  }
  function fail(){
    alert("failed");
  }

  geoloc(success, fail);

Це спрацювало для мене у рідній реакції navigator && navigator.geolocation
Ashish Singh

5

Тож я натрапив на те саме. Я спробував вирішення часу, яке працювало, але не надійно. Я виявив, що якщо ви просто зателефонуєте до нього двічі, місце оновиться належним чином

function getLocation(callback)
{   
    if(navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(function(position)
        {
            navigator.geolocation.getCurrentPosition(callback, function(){},{maximumAge:0, timeout:10000});
        },function(){}, {maximumAge:0, timeout:10000});
    }
    return true;
}

це, звичайно, трохи повільніше, але я цього не мав, колись мені давали неправильну позицію. Я мав це вдарив тайм-аут кілька разів і нічого не повертав, крім іншого, що це чудово працює. Я знаю, що це все ще трохи хакі, і я з нетерпінням чекаю, коли хтось знайде справжнє рішення.

Або якщо ви хочете переконатися, що буде намагатися продовжувати намагатися, поки не захочете відмовитися, ви можете спробувати щось подібне.

//example
$(document).ready(function(){
    getLocation(function(position){
        //do something cool with position
        console.log(position);
    });
});


var GPSTimeout = 10; //init global var NOTE: I noticed that 10 gives me the quickest result but play around with this number to your own liking


//function to be called where you want the location with the callback(position)
function getLocation(callback)
{   
    if(navigator.geolocation)
    {
        var clickedTime = (new Date()).getTime(); //get the current time
        GPSTimeout = 10; //reset the timeout just in case you call it more then once
        ensurePosition(callback, clickedTime); //call recursive function to get position
    }
    return true;
}

//recursive position function
function ensurePosition(callback, timestamp)
{
    if(GPSTimeout < 6000)//set at what point you want to just give up
    {
        //call the geolocation function
        navigator.geolocation.getCurrentPosition(
            function(position) //on success
        {
                //if the timestamp that is returned minus the time that was set when called is greater then 0 the position is up to date
            if(position.timestamp - timestamp >= 0)
                {
                    GPSTimeout = 10; //reset timeout just in case
                    callback(position); //call the callback function you created
                }
                else //the gps that was returned is not current and needs to be refreshed
                {
                    GPSTimeout += GPSTimeout; //increase the timeout by itself n*2
                    ensurePosition(callback, timestamp); //call itself to refresh
                }
            },
            function() //error: gps failed so we will try again
            {
                GPSTimeout += GPSTimeout; //increase the timeout by itself n*2
                ensurePosition(callback, timestamp);//call itself to try again
            },
            {maximumAge:0, timeout:GPSTimeout}
        )
    }       
}

У мене, мабуть, є деякі типи та деякі орфографічні помилки, але я сподіваюся, що ви зрозумієте цю ідею. Повідомте мене, чи є у когось питання або якщо хтось знайде щось краще.


4

Для всіх, хто працює на додатку для iPhone ...

Якщо ваш код працює в UIWebView на iOS 9+, то його потрібно встановити NSLocationWhenInUseUsageDescription в списку додатків.

Якщо ви не встановите його, то getCurrentPositionніколи не передзвоніть, і користувач ніколи не буде запитувати.


3

Я виявив, що цей спосіб не працює

navigator.geolocation.getCurrentPosition(function() {...}, function(err) {...}, {});

Але

цей спосіб працює ідеально

function storeCoordinates(position) {
    console.log(position.coords.latitude, position.coords.longitude);
}    

function errorHandler() {...}

navigator.geolocation.getCurrentPosition(storeCoordinates, errorHandler, { enableHighAccuracy: true, timeout: 20000, maximumAge: 0 });

4
Яка різниця між обома?
Pardeep Jain

Анонімна функція проти названого
інстинкт

дійсно великі відмінності. дякую, і це не працює
безодного

3

Відповідь @ brennanyoung чудова, але якщо вам цікаво, що робити у випадку відмови, ви можете скористатися API геолокації IP, наприклад https://ipinfo.io (що є моєю службою). Ось приклад:

function do_something(coords) {
    // Do something with the coords here
    // eg. show the user on a map, or customize
    // the site contents somehow
}

navigator.geolocation.getCurrentPosition(function(position) { 
    do_something(position.coords);
    },
    function(failure) {
        $.getJSON('https://ipinfo.io/geo', function(response) { 
        var loc = response.loc.split(',');
        var coords = {
            latitude: loc[0],
            longitude: loc[1]
        };
        do_something(coords);
        });  
    };
});

Докладнішу інформацію див. У https://ipinfo.io/developers/replacing-getcurrentposition .


Ось виправлене посилання на це: ipinfo.io/developers/replacing-getcurrentposition
пітер

5
Страшний. Точність, як на відстані 5-7 миль від реального положення, коли в США та Канаді, і в 100 милях, коли десь у Росії.
екшакінг

1
Для багатьох додатків це чудово - і набагато краще, ніж поняття, яке місце розташування.
Бен Даулінг

це ніде не працює. Кожен запит
визнає

Що ви маєте на увазі неправильно? Чи є у вас приклади?
Бен Даулінг

2

У мене виникають подібні проблеми, і я розглядаю можливість того, що у браузерів є обмеження щодо частоти виклику getCurrentPosition. Здається, я часто можу знайти місце, але якщо я оновлю сторінку одразу, час закінчиться. Якщо я трохи зачекаю, зазвичай можу знову отримати місце розташування. Зазвичай це відбувається з ФФ. У Chrome та Safari я ще не помітив терміни виходу поточногоPosition. Просто думка...

Хоча я не можу знайти жодної документації, яка б це підтвердила, це було висновком, до якого я прийшов після довгого тестування. Можливо, хтось інший має якусь інформацію про це?


Це хороший момент. Мої таймаути / збої, здається, трапляються здебільшого, коли я тестую і неодноразово запитую дані геолокації. Мені дуже хочеться дізнатися, чи це результат помилки чи, як ви пропонуєте, можливо, за дизайном.
Джеймі

Я не бачив жодного випадку, коли браузер обмежує кількість дзвінків до локальних служб. Як часто ви запитуєте?
Ніко Вестердейл

2

Нарешті я знайшов працюючу версію для навігатора Firefox, Chrome та за замовчуванням в Android (лише для тестування 4.2):

function getGeoLocation() {
        var options = null;
        if (navigator.geolocation) {
            if (browserChrome) //set this var looking for Chrome un user-agent header
                options={enableHighAccuracy: false, maximumAge: 15000, timeout: 30000};
            else
                options={maximumAge:Infinity, timeout:0};
            navigator.geolocation.getCurrentPosition(getGeoLocationCallback,
                    getGeoLocationErrorCallback,
                   options);
        }
    }

2

Другий параметр, який передається, Geolocation.getCurrentPosition()- це функція, яку потрібно обробляти будь-якими помилками геолокації. Сама функція обробника помилок отримує PositionErrorоб'єкт із деталями про те, чому спроба геолокації не вдалася. Рекомендую вивести помилку на консоль, якщо у вас виникли проблеми:

var positionOptions = { timeout: 10000 };
navigator.geolocation.getCurrentPosition(updateLocation, errorHandler, positionOptions);
function updateLocation(position) {
  // The geolocation succeeded, and the position is available
}
function errorHandler(positionError) {
  if (window.console) {
    console.log(positionError);
  }
}

Це в моєму коді виявило повідомлення "Провайдер мережевого місцезнаходження за адресою" https://www.googleapis.com/ ": Повернений код помилки 400". Виявляється, Google Chrome використовує API Google, щоб отримати місцезнаходження на пристроях, де немає вбудованого GPS (наприклад, на більшості настільних комп'ютерів). Google повертає приблизну широту / довготу на основі IP-адреси користувача. Однак у розробниках Chrome (наприклад, Chromium на Ubuntu) немає ключа доступу API, що входить у збірку браузера. Це призводить до того, що запит API мовчки не працює. Докладніше див. Chromium Issue 179686: Геолокація, що дає помилку 403 .


1

У мене в Mozilla ця проблема. Весь час: Помилка: Невідома помилка в отриманні позиції .

Зараз я використовую 47 Mozilla. Я все пробував, але весь час ця проблема. АЛЕ потім я відкриваю про: config у моїй адресному рядку, перейдіть на geo.wifi.ui та змінив його значення на " https://location.services.mozilla.com/v1/geolocate?key=test ". працює!

Якщо у вас помилка призупинилася для отримання позиції , спробуйте збільшити значення тайм-ауту:

var options = {
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 0       
};
navigator.geolocation.getCurrentPosition(success, error, options);

1

Можливо, було б корисно використовувати послугу геолокації IP-адреси як резервний метод, коли getCurrentPositionне вдалося . Наприклад, з нашим api https://ip-api.io

$.getJSON("http://ip-api.io/json/",
    function(result) {
        console.log(result);
    });

1

У нашому випадку це завжди працює з першого разу, але повторне функціонування більше ніж у 3-4 рази - не вдається.

Просте вирішення: збережіть його значення в LocalStorage.

Перед:

navigator.geolocation.getCurrentPosition((position) => {
  let val = results[0].address_components[2].long_name;
  doSthWithVal(val);      
}, (error) => { });

Після:

if(localStorage.getItem('getCurrentPosition') !== null) {
  doSthWithVal(localStorage.getItem('getCurrentPosition'));
}
else {
  navigator.geolocation.getCurrentPosition((position) => {
      let val = results[0].address_components[2].long_name;
      localStorage.setItem('getCurrentPosition',val);
      doSthWithVal(val);      
  }, (error) => { });
}

0

Я нещодавно я помітив цю проблему, і я не впевнений, як вона виникає, але, здається, іноді Firefox застрягає на чомусь завантаженому в кеш. Після очищення кешу та перезавантаження Firefox, здається, він знову функціонує.


0

Ця бібліотека додає параметр бажаної акуратності та maxWait до викликів геолокації, а це означає, що вона буде намагатися отримати позицію, поки точність не буде у визначеному діапазоні.


0

Дякую всім за їх внесок, це мені допомогло.

Окрім того, що потрібно використовувати watchPosition () замість getCurrentPosition (), я також виявив, що мені потрібно перенести виклик з документа document.ready () в голову.


0

Це сталося зі мною під час використання режиму чуйного дизайну Firefox. Подано звіт про помилку . Наразі просто не використовуйте режим адаптивного дизайну під час використання API геолокації.


0

Можливо, це допоможе комусь, на Android у мене була така ж проблема, але я зрозумів це, використовуючи setTimeout всередині, document.readyтак що він працював на мене, по-друге, ви повинні збільшити час очікування, якщо користувач дозволить своє місцезнаходження через кілька секунд, тому я тримав його до 60000 мілі секунд (1 хвилина), що дозволяє моїй функції успіху дзвонити, якщо користувач натисне кнопку дозволу протягом 1 хвилини.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.