Cordova各個外掛使用介紹系列(五)—$cordovaGeolocation獲取當前位置
阿新 • • 發佈:2019-01-31
$cordovaGeolocation是可以獲取當前位置的ngCordova外掛,在專案中應用到,在這裡講解一下:
1、首先需要下載此外掛,命令是:
cordova plugin add cordova-plugin-geolocation
2、在JS中的程式碼如下,這個程式碼寫在相應的控制器裡並且依賴‘$cordovaGeolocation’,記得在app.js裡依賴‘ngCordova’,這是ngCordova官網的控制器裡面的程式碼,:
module.controller('GeoCtrl', function($cordovaGeolocation) { var posOptions = {timeout: 10000, enableHighAccuracy: false}; $cordovaGeolocation .getCurrentPosition(posOptions) .then(function (position) { var lat = position.coords.latitude var long = position.coords.longitude }, function(err) { // error }); });
3、在專案中,我需要實時監測到地理位置,因此用到了AngularJs裡面的$broadcast,$on;$broadcast可以監測到值的變化,而$on就是一旦監測的值發生變化,可以觸發到它,結合上面所講到的獲取位置的外掛,這樣就可以一直監測位置的變化了,程式碼如下:
module.controller('GeoCtrl', function($cordovaGeolocation) { function getCurrentPosition() { var posOptions = {timeout: 10000, enableHighAccuracy: false}; $cordovaGeolocation .getCurrentPosition(posOptions) .then(function (position) { $rootScope.$broadcast('selfLocation:update', position); var lat = position.coords.latitude var long = position.coords.longitude }, function(err) { // error }); });
在其他需要獲得position的控制器裡,要新增$on:
$scope.$on('selfLocation:update', function (_, location) {
//不斷更新的值
$scope.currentPosition = {
latitude: location.latitude,
longitude: location.longitude
};
});
這樣子只要呼叫getCurrentPosition()這個函式,然後就可以一直監測到位置資料的變化了