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