Геолокация С Помощью Ionic Cordova Возвращает Неверные Значения Lat / Long


Я столкнулся с проблемой использования Geolocation pluggin с Ionic и Cordova framework.

С помощью Visual Studio Community 2015, с Cordova CLI версии: 4.3.0 и добавлена организация.апаш.Кордова.подключение геолокации к VSC-2015

Мой контроллер.js

.controller('MapCtrl', function ($scope) {  
function onSuccess(position) {            
        console.log(position.timestamp);
        console.log(position.coords.latitude + " " + position.coords.longitude);
    }
    function onError(error) {
        alert('code: ' + error.code + 'n' +
              'message: ' + error.message + 'n');
    }
    navigator.geolocation.getCurrentPosition(onSuccess, onError);


 })

Добавил google maps в индекс.html

<script src="https://maps.googleapis.com/maps/api/js?sensor=true&v=3.exp"></script> 

Добавил карту к моей карте.html-файл

<div id="map" data-tap-disabled="true" map> </div>

Проблема в том, что я всегда получаю фиксированное значение Lat/Long то есть Lat = 43.465187 и Long = -80.522372

Это это не моя правильная геолокация с точки зрения Lat/Long.Мне нужна моя текущая геолокация в терминах Lat / Long

Пожалуйста, помогите мне идентифицировать ошибку.

Также я использую Ripple-Nexus (Galaxy) в браузере.

Любая помощь ценится... Спасибо,

2 3

2 ответа:

Загрузите последнюю версию GeoLocation pluggin из https://github.com/apache/cordova-plugin-geolocation

Затем введите $cordovaGeolocation в контроллер. Код выглядит следующим образом:

.controller('HomeCtrl', function($scope,$cordovaGeolocation) {
$scope.getLocation = function() {      
  var posOptions = {timeout: 10000, enableHighAccuracy: false};
    $cordovaGeolocation
      .getCurrentPosition(posOptions)
      .then(function (position) {
        //these are your your lat long values  
        var lat  = position.coords.latitude
        var long = position.coords.longitude                        
        }, function(err) {
        // error           
       });
      }
    })

Примечание: устройство должно быть подключено к интернету или Wi-Fi, а также должно поддерживать местоположение GPS в устройстве для получения правильных значений Lat/Long.

Я не уверен, почему вы получаете фиксированные значения lat/long. Однако, чтобы получить положение устройства с помощью ионного, для меня работает следующее:

ionic.Platform.ready($scope.getLocation);

$scope.getLocation = function () {

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition($scope.showPosition, $scope.showError);
    }
    else {
        console.log('Geolocation is not supported by this browser.');
    }
}

$scope.showPosition = function (position) {
 console.log(position.timestamp);
 console.log(position.coords.latitude + ' ' + position.coords.longitude);
}

$scope.showError = function (error) {
    switch (error.code) {
        case error.PERMISSION_DENIED:
            console.log('User denied the request for Geolocation.');
            break;
        case error.POSITION_UNAVAILABLE:
            console.log('Location information is unavailable.');
            break;
        case error.TIMEOUT:
            console.log('The request to get user location timed out.');
            break;
        case error.UNKNOWN_ERROR:
            console.log('An unknown error occurred.');
            break;
    }
}

Обратите внимание, что вызов:

ionic.Platform.ready($scope.getLocation);

Имеет решающее значение, поскольку вы можете гарантировать, что получите точную GPS-фиксацию только после того, как устройство будет готово/инициализировано.