I'm trying to inject one geoDataFactory into venueDataFactory. When currentPosition is logged to the console, the result is undefined whereas assuming successful acquisition of coordinates, currentPosition should be an object containing geolocation data including latitude and longitude. Why is it undefined?
angular.module('myApp', ['ionic','ngCordova'])
.factory('geoDataFactory', function($cordovaGeolocation, $location) {
var currentPosition = {
'latitude': 0,
'longitude': 0,
'altitude': 0,
'accuracy': 0,
'altitudeAccuracy': 0,
'heading': 0,
'speed': 0,
'timestamp': 0
};
var getCurrentPosition = function() {
$cordovaGeolocation.getCurrentPosition().then(function(position) {
// Position here: position.coords.latitude, position.coords.longitude
currentPosition.latitude = position.coords.latitude;
currentPosition.longitude = position.coords.longitude;
currentPosition.altitude = position.coords.altitude;
currentPosition.accuracy = position.coords.accuracy;
currentPosition.altitudeAccuracy = position.coords.altitudeAccuracy;
currentPosition.heading = position.coords.heading;
currentPosition.speed = position.coords.speed;
currentPosition.timestamp = position.coords.timestamp;
return currentPosition;
},
function(err) {
// error
console.log("Error with cordova geolocation.currentPosition");
return err;
});
};
return {
position: getCurrentPosition()
}
})
.factory('venueDataFactory', function($q, $timeout, geoDataFactory) {
var currentPosition = geoDataFactory.position;
console.log(currentPosition);
})
getCurrentPosition()doesn't return anything, sopositionisundefined. Should probably return a promise.