0
我得到了一個視圖,我呈現一個谷歌地圖,然後應該定期檢查設備的位置。離子角工廠返回undefined
控制器
.controller('SearchCtrl', function($scope, $ionicLoading, TrackLocation) {
//document.addEventListener("deviceready", onDeviceReady, false);
//function onDeviceReady() {
//Loads Google Map
var mapOptions = {
center: new google.maps.LatLng(0,0),
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false
};
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var myPost = TrackLocation.track();
console.log(myPost);
//}
})
廠
.factory('TrackLocation', function($http, $cordovaGeolocation) {
return {
track: function() {
console.log("Started Tracking");
var lat, long;
var watchOptions = {
timeout : 3000,
enableHighAccuracy: true
};
var watch = $cordovaGeolocation.watchPosition(watchOptions);
watch.then(
null,
function(err) {
console.log(err);
return "lole";
},
function(position) {
lat = position.coords.latitude
long = position.coords.longitude
console.log(lat);
});
return {'lat': lat, 'long':long };
},
stop: function() {
}
};
})
控制檯登錄
Started Tracking
Object {lat: undefined, long: undefined}
103 14.408132700000001
的myPost是返回一個未定義的值,因爲它被稱爲前的實際價值是通過對土地增值稅。
請幫忙。
你在'watch.then'完成之前返回結果並且你設置了你的變量 – Grundy
我試着把'return {'lat':lat''long':long};'放在'function(position)我是一個普通的未定義..不是一個對象,但明確未定義。 – Roi
當然,因爲在這種情況下,您確實從'watch'回調函數返回,而不是'track'函數 – Grundy