Я получил представление, где я делаю карту Google, которая затем должна периодически проверять местоположение устройства.
контроллер
.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 был возвращен с неопределенным значением, потому что он был вызван до того, как реальное значение было передано на lat.
Пожалуйста помоги.
Вы должны возвращать только часы в методе отслеживания или возвращать обещание, а не при успешном обратном вызове решить это обещание с помощью лат и длинных значений.
watch.then
завершите, и выwatch.then
свои переменныеreturn {'lat': lat, 'long':long };
внутриfunction(position)
и дает мне простой неопределенный .. не объект, а простой неопределенный.