2016-06-10 3 views
3

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

Есть ли способ проверить, включена ли функция определения местоположения телефона на каждой кнопке? Получение одинаковых результатов на 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; 
} 
} 
+0

не один? Я не могу найти что-либо, чтобы исправить это ... Кажется странным, что я не могу определить, включен или выключен геолокация, когда веб-экран открыт ...? – JasonBK

+0

Мы говорим о какой-то структуре? как телефонная связь, кордова, хамарин или простое веб-приложение? – ddb

+0

, если вы обновите страницу (с активным местоположением), то доступны ли данные о местоположении? – ddb

ответ

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; 
    } 
} 
+0

приложение показывает одну из этих ошибок при нажатии на кнопку после переключения на локализацию? если да, то какой? – ddb

+0

@ddb работает при обновлении, но этого недостаточно, поскольку webapp будет использоваться как приложение в Apple Store с помощью оболочки приложения ... Я уже получил все коды ошибок выше; Я получаю ту же ошибку после включения геолокации, если webapp открыт. У меня очень похожий код на код, приведенный выше в приложении. Это не решает мою проблему. – JasonBK

+0

также не отвечает и на другой ответ SO. – JasonBK

Смежные вопросы