Позвоните / используйте Cordova Geolocation в Angular - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь использовать плагин Cordova Geolocation. Я добавил плагин, как показано ниже.

cordova plugin add cordova-plugin-geolocation

Я использовал образец кода с сайта Cordova.

 <script type ="text/javascript">
document.getElementById("watchPosition").addEventListener("click", watchPosition);  

function watchPosition() {
  var latitude,longitude;
   var options = {
      maximumAge: 3600000,
      timeout: 3000,
      enableHighAccuracy: true,
   }
   var watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);

   function onSuccess(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');*/
         longitude = position.coords.longitude;
         latitude = position.coords.latitude;

   };

   function onError(error) {
      alert('code: '    + error.code    + '\n' +'message: ' + error.message + '\n');
   }
}
    </script>

Если я проверил это по нажатию кнопки, то все работает нормально, значит, я получаю местоположение. Итак, я прокомментирую это в этом вопросе.

Ниже мой угловой код.

 // define angular module/app
    var formApp = angular.module('formApp', []);

    formApp.controller('formProfile1', function($scope,$http){
    $scope.uid = 1;
    $scope.names = names;
     $scope.searchok = search;    $scope.pics = pics;
     watchPosition();
    $scope.longitude = longitude;
    alert($scope.longitude);
----- Some other codes are here ------
}

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

Я подозреваю, что делаю что-то не так.

1 Ответ

0 голосов
/ 28 апреля 2018

Вам сообщается местоположение в обратном вызове, поэтому ваш код должен быть асинхронным.

formApp.controller('formProfile1', function($scope){
    navigator.geolocation.getCurrentPosition(function(position) {
        $scope.longitude = position.coords.longitude;
        alert($scope.longitude);
    }, function onError(error) {
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...