2014-11-30 28 views
5

Próbuję uzyskać szerokość i długość geograficzną mojej pozycji za pomocą AngularJS i Geolocation. Jest to funkcja kontrolera, w której przypisuję wartości szerokości i długości geograficznej i wypisuję je do konsoli przeglądarki. Funkcja nearme() jest wywoływana,Uzyskiwanie współrzędnych geolokacji przy użyciu AngularJS

var mysrclat= 0; var mysrclong = 0; 
    $scope.nearme = function($scope) { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function (position) { 

       mysrclat = position.coords.latitude; 
       mysrclong = position.coords.longitude; 
     }); 
     console.log(mysrclat); 
     console.log(mysrclong); 
    } 
} 

Kwestia jest taka, że ​​po raz pierwszy, współrzędne wydrukować jako 0, 0. Następnie, po czym drukuje odpowiednie wartości współrzędnych. Dlaczego drukuje 0, 0 jako współrzędne po raz pierwszy?

Odpowiedz

5

Wszystko jest proste :) Twój console.log znajduje się poza granicami collback,

function (position) { 
    mysrclat = position.coords.latitude; 
    mysrclong = position.coords.longitude; 
    console.log(mysrclat); 
    console.log(mysrclong); 
}); 

http://jsfiddle.net/glebv/axrw7g90/18/

+0

Dzięki .. Co mam zrobić, jeśli muszę wykorzystać wartości mysrclat i mysrclong poza granice połączeń zwrotnych? tak jak w moim przypadku, potrzebuję użyć tych wartości w innej funkcji .. Próbowałem przypisanie jej do zmiennej $ scope i używanie jej w innej funkcji też nie działa..nie pomysły? – user2297790

+2

Powinieneś powiązać je z zakresem lub wdrożyć jako usługę, o wiele lepiej. Możesz użyć https://github.com/arunisrael/angularjs-geolocation, myślę, że jest to bardzo przydatne dla twojego zadania lub przeglądu kodu usługi. To bardzo proste i używać go dla swoich morświnów. –

Powiązane problemy