[英]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.