繁体   English   中英

使用Cordova进行位置服务

[英]Location Service using Cordova

我想检查位置并将所需的数据存储在手机的内部存储器中。 要停止此任务,请使用主UI中的“停止”按钮。 随着此任务的开始,无论应用程序的状态如何,该任务都应完成其工作。

我可以使用本机android命令实现此功能。 但是我想使用cordova来实现这一点,但我想不出一种方法来实现。

如果此任务无法使用cordova完成,我可以使用本机android来完成并注入cordova应用程序吗?

请帮忙..

您可以使用ng-cordova地理位置观察器来执行此操作,它会观察地理位置属性,例如纬度,经度和速度。

首先安装ng-cordova并注入

bower install ngCordova

angular.module('myApp', ['ngCordova'])

然后安装地理位置插件

cordova plugin add org.apache.cordova.geolocation

那么您想创建一个观察者,请确保在设备就绪事件后将其触发,否则会导致问题

这是设备就绪功能的样子

document.addEventListener("deviceready", function () {
  $cordovaPlugin.someFunction().then(success, error);
}, false);

这是观察者控制器:

module.controller('GeoCtrl', function($cordovaGeolocation) {


  var watchOptions = {
    frequency : 1000,
    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();
  // OR
  $cordovaGeolocation.clearWatch(watch)
    .then(function(result) {
      // success
      }, function (error) {
      // error
    });
});

当您查看他们的地理位置信息时,您可以将其推送到本地数据库,例如http://pouchdb.com/或couch db或服务器数据库。 如果要在应用程序的任何状态下使用此功能,可以将其用于服务,这是我构建的应用程序中的示例

service.watchSpeed = function () {
        console.log('watcher');
        ionic.Platform.ready(function () {
            var watchOptions = {
                frequency: 15 * 60 * 1000,
                timeout: 1 * 60 * 1000,
                enableHighAccuracy: true // may cause errors if true
            };

            service.watch = $cordovaGeolocation.watchPosition(watchOptions);
            service.watch.then(
                null,
                function (err) {
                    service.watchSpeed();
                },
                function (position) {
                    if (service.maxspeed.ToUseApp !== 0) {
                        var lat = position.coords.latitude;
                        var long = position.coords.longitude;
                        var speed = position.coords.speed;
                        service.speed = speed;
                        if (speed > service.maxspeed.ToUseApp) {
                            $state.go('overspeed');
                        }
                        if ($ionicHistory.currentStateName() === 'overspeed' && speed < service.maxspeed.ToUseApp) {
                            $ionicHistory.goBack();
                        }
                    } else {
                        console.log('speed watcher has been killed, why master??');
                    }
                });
        });
    };

然后在我的家庭控制器中,我打电话给观察者

ionic.Platform.ready(function () {
                ffService.getMaxSpeed();
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM