簡體   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