2016-11-02 2 views
2

Я использую cordova, плагин геолокации для отображения широты и долготы на андроиде. Есть много вопросов, подобных этому, поэтому я прочитал и попробовал их решение, но не смог исправить эту проблему. Код ниже отлично работает в браузере.Плагин геолокации Кордовы не работает на android

Я пробовал 3 метода, сначала: «navigator.geolocation.watchPosition», который возвращает неверный результат (37.42, -122.08) в эмуляторе (Android Studio) и ничего не возвращает в устройство.

Я также пробовал «navigator.geolocation.getCurrentPosition» с «enableHighAccuracy», установленным «true» и «false», и я получаю предупреждение об ошибке TimeOut.

Когда я удаляю deviceready, я не получаю timeOut, просто неправильный результат из всех трех методов.

(function (window) { 
 
    document.addEventListener("deviceready", onDeviceReady, false); 
 
    function onDeviceReady() { 
 
     
 
    var minAccuracyInMetres = 50; 
 
    var positionWatcher; 
 

 
    positionWatcher = navigator.geolocation.watchPosition(
 
     geolocationSuccess2, 
 
     geolocationError2, 
 
     { maximumAge: 0, timeout: 100000, enableHighAccuracy: true }); 
 

 
    function geolocationSuccess2(position) { 
 
     // Reject if accuracy is not sufficient 
 
     if (position.coords.accuracy > minAccuracyInMetres) { 
 
      return; 
 
     } 
 

 
     // Only single position required so clear watcher 
 
     navigator.geolocation.clearWatch(positionWatcher); 
 

 
     alert('Latitude: ' + position.coords.latitude + '\n' + 
 
       'Longitude: ' + position.coords.longitude + '\n' + 
 
       'Altitude: ' + position.coords.altitude + '\n' + 
 
       'Accuracy: ' + position.coords.accuracy + '\n' + 
 
       'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' + 
 
       'Heading: ' + position.coords.heading + '\n' + 
 
       'Speed: ' + position.coords.speed + '\n' + 
 
       'Timestamp: ' + position.timestamp + '\n'); 
 
    }; 
 

 
    function geolocationError2(error) { 
 
     console.warn("Error while retrieving current position. " + 
 
      "Error code: " + error.code + ",Message: " + error.message); 
 
    } 
 

 
    //2 
 

 
    var onSuccess1 = function (position) { 
 
     alert('Latitude: ' + position.coords.latitude + '\n' + 
 
       'Longitude: ' + position.coords.longitude + '\n' + 
 
       'Altitude: ' + position.coords.altitude + '\n' + 
 
       'Accuracy: ' + position.coords.accuracy + '\n' + 
 
       'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' + 
 
       'Heading: ' + position.coords.heading + '\n' + 
 
       'Speed: ' + position.coords.speed + '\n' + 
 
       'Timestamp: ' + position.timestamp + '\n'); 
 
    }; 
 

 
    function onError1(error) { 
 
     alert('code: ' + error.code + '\n' + 
 
       'message: ' + error.message + '\n' + 'highaccuracy: true'); 
 
    } 
 
    var options1 = { maximumAge: 0, timeout: 300000, enableHighAccuracy: true }; 
 
    navigator.geolocation.getCurrentPosition(onSuccess1, onError1, options1); 
 
    //3 
 
    var onSuccess = function (position) { 
 
     alert('Latitude: ' + position.coords.latitude + '\n' + 
 
       'Longitude: ' + position.coords.longitude + '\n') 
 
    }; 
 

 
    function onError(error) { 
 
     alert('code: ' + error.code + '\n' + 
 
       'message: ' + error.message + '\n' + ' high accuracy:false'); 
 
    } 
 

 
    navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: false, timeout: 300 * 1000, maximumAge: 0 }); 
 
} 
 
})(window);

Я получаю watchPosition часть от другого вопроса в StackOverflow. Я использую версию cordova: 6.4.0. Я удалил плагин и попытался снова, но он не сработал. Устройство, с которым я тестирую, - это планшет lenovo. Большое спасибо.

ОБНОВЛЕНИЕ: моя версия геолокации: 2.4.0 Важна ли это ???

+0

надежно, что вы включили GPS –

+0

Да, GPS и Wi-Fi включены. – Niloofar

+0

, на каком телефоне вы пытаетесь запустить приложение? –

ответ

0

После двух дней боев я включил «Высокая точность» в настройках местоположения. Приложение работает сейчас !!!

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