геолокация не работает, когда служба определения местоположения отключается и включается

У меня есть функция, запускаемая нажатием кнопки, которая проверяет геолокацию. Она отлично работает на телефонах, когда геолокация включена, а когда выключена, отображается сообщение, как и ожидалось. Проблема возникает, когда сначала отключается служба определения местоположения телефона, нажимается кнопка (всплывает сообщение, как и ожидалось), затем, если пользователь снова включает службы определения местоположения, когда приложение все еще открыто, и снова нажимает кнопку, все равно выскакивает сообщение "нет службы определения местоположения".

Есть ли способ проверить, включена ли служба определения местоположения телефона при каждом нажатии кнопки? Получение одинаковых результатов на Android и IOS.

код:

$(document).ready(function () {

    $('#smallScreenGeolocate').on('click', function(){

     getCurrentLocation();
     });
});

function getCurrentLocation () {
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(addGeolocationMarker, locationError);
    return true;
}
else {
    alert("Browser doesn't support Geolocation. Visit http://caniuse.com to discover browser support for the Geolocation API.");
    return false;
}
}

person JasonBK    schedule 10.06.2016    source источник
comment
никто? Я не могу найти что-либо, чтобы исправить это... кажется странным, что я не могу определить, включена или выключена геолокация, когда веб-приложение открыто...?   -  person JasonBK    schedule 27.06.2016
comment
мы говорим о каком-то фреймворке? например, phonegap, cordova, xamarin или простое веб-приложение?   -  person ddb    schedule 04.07.2016
comment
если вы обновите страницу (с активным местоположением), тогда будут доступны сведения о местоположении?   -  person ddb    schedule 04.07.2016
comment
@ddb да, .. на самом деле я не разрабатываю оболочку для веб-приложения, но я полагаю, что они используют xamarin ... но у меня есть проблема с самим веб-приложением; Мне нужно обновить страницу для обнаружения геолокации.   -  person JasonBK    schedule 05.07.2016


Ответы (1)


Проверьте этот ответ из другого сообщения SO https://stackoverflow.com/a/14862073/6539349

Вы должны проверить, в чем была ошибка, как предлагается здесь http://www.w3schools.com/html/html5_geolocation.asp

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition,showError);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}

function showPosition(position) {
   x.innerHTML = "Latitude: " + position.coords.latitude +
   "<br>Longitude: " + position.coords.longitude;
}

Второй параметр showError метода getCurrentPosition() используется для обработки ошибок. Он указывает функцию для запуска, если ей не удается получить местоположение пользователя:

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;
    }
}
person ebyt    schedule 02.07.2016
comment
показывает ли приложение одну из этих ошибок при нажатии на кнопку после включения локализации? если да, то какой? - person ddb; 04.07.2016
comment
@ddb работает при обновлении, но этого недостаточно, поскольку веб-приложение будет использоваться как приложение в Apple Store с использованием оболочки приложения ... Я уже получил все приведенные выше коды ошибок; я получаю ту же ошибку после включения геолокации, если веб-приложение открыто. У меня есть код, очень похожий на код, указанный выше в приложении. Это не решает мою проблему. - person JasonBK; 05.07.2016
comment
также другой ответ SO также не решает эту проблему. - person JasonBK; 05.07.2016