科尔多瓦离子框架:获取位置后台服务

Posted

技术标签:

【中文标题】科尔多瓦离子框架:获取位置后台服务【英文标题】:cordova ionic framework : get location background service 【发布时间】:2016-03-11 19:50:01 【问题描述】:

我正在尝试获取当前用户位置,但是当我重新加载代码时它会发生变化,即使我想每隔 x 秒获取一次位置。这是我的解决方案:

app.controller('geoCtrl', function($scope, $timeout, $cordovaBackgroundGeolocation, $ionicPlatform, $window, $cordovaGeolocation)

var posOptions = timeout: 10000, enableHighAccuracy: false;
  $cordovaGeolocation
    .getCurrentPosition(posOptions)
    .then(function (position) 
      var lat  = position.coords.latitude
      var long = position.coords.longitude
      alert('lat='+lat);
      alert('long='+long);
    , function(err) 
      // error
    );


  var watchOptions = 
    timeout : 3000,
    enableHighAccuracy: false // may cause errors if true
  ;

  var watch = $cordovaGeolocation.watchPosition(watchOptions);
  watch.then(
    null,
    function(err) 
      // error
    ,
    function(position) 
      var lat  = position.coords.latitude
      var long = position.coords.longitude
  );


  watch.clearWatch();

//-- End Geolocal
)

但这只有在我启动应用程序时才有效,请问有人知道吗?为了帮助我同步我的应用程序以每 x 秒获取一次位置数据 :)

【问题讨论】:

看起来您在创建手表后立即清除了它... 我想每 30 秒取一次结果!!! 【参考方案1】:

你想要的大概是这样的:

app.controller('GeoCtrl', function($cordovaGeolocation, $interval) 

  var posOptions = 
    timeout: 10000,
    enableHighAccuracy: false
  ;

  var getLocation = function() 
    $cordovaGeolocation
      .getCurrentPosition(posOptions)
      .then(function(position) 
        // location coordinates
        console.log(position.coords);
      )
      .catch(function(err) 
        // handle error
        console.log(err)
      );
  ;

  $interval(getLocation, 3000); // 3 seconds for now

);

参考:ngCordova Geolocation docs

【讨论】:

thank youuuuuuu ,这就是解决方案 :) 非常非常非常非常感谢 ^^【参考方案2】:

您也可以使用 $cordovaGeolocation.watchPosition。您无需手动应用 $interval。 但是这两种解决方案在 backgroundApp 的情况下都不起作用。

【讨论】:

以上是关于科尔多瓦离子框架:获取位置后台服务的主要内容,如果未能解决你的问题,请参考以下文章

在不启用他们的位置的情况下在科尔多瓦上获取用户位置

科尔多瓦地理定位不会立即观看或获取当前位置

如何在科尔多瓦获取当前位置时修复“REQUEST_DENIED”

离子混合移动应用程序获取设备位置

从 Android 后台服务问题获取当前位置

无法在后台服务中使用 LocationManager 获取位置