Геолокация С Помощью 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 ответа:
Загрузите последнюю версию 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-фиксацию только после того, как устройство будет готово/инициализировано.