2015-09-17 21 views
0

我想檢查位置並將所需數據存儲在移動設備的內部存儲器中。要停止此任務,請使用主UI中的停止按鈕。當這項任務開始時,無論應用程序的狀態如何,該任務都應該完成其工作。使用Cordova的位置服務

我可以使用原生android命令來實現這一點。但我想實現這個使用科爾多瓦,我想不出一種方法來做到這一點..

如果這項任務不能使用科爾多瓦完成,我可以使用原生android並注入到cordova應用程序.. ??

請幫助..

回答

0

您可以使用ng-cordova geolocation守望做到這一點,手錶地理位置屬性,如緯度,經度和速度。

第一intall NG-科爾多瓦和它注入

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/或沙發數據庫或服務器數據庫。如果你想在應用程序中的任何狀態下使用這個你可以把它變成一個服務, 這裏是一個程序,我建

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(); 
      }); 
爲例
+0

有沒有辦法檢查這項服務是否已經開始..? –

+0

是的,看看我的控制檯日誌(觀察者)在哪裏告訴你Geowatcher何時開始。 –

+0

我有這樣的問題。用戶啓動此服務並關閉應用程序而不停止服務。之後,用戶再次打開該應用程序並嘗試再次啓動服務。然後我必須通知用戶這項服務已經陳述了。我該怎麼做這樣的事情? 我對科爾多瓦很新,請幫忙.. –