watchLocation only gets called once?

navigator.geolocation.watchLocation is called once. While as mentioned it should called every time location is enabled or disabled.

I am using following options

        function success(position) {

        function error(err) {
            console.warn('ERROR(' + err.code + '): ' + err.message);

        options = {
            maximumAge: 0,
            timeout: 3000,
            enableHighAccuracy: false

        navigator.geolocation.watchPosition(success, error, options);

you need to wrap your callback in $timeout, because this is calling outside of the angularjs context.

Maybe you can post a little more of your code.

What about $timeout if user never turn on his location? Also navigator.geolocation.watchPosition should watch the location if user has enabled or disabled. Am i right?

I have updated the code, please see.