service('currentPosition', function($rootScope){ //default current position var myLocation = {lat: 59.3325800, long: 18.0649000} $rootScope.$broadcast('location', myLocation) if ("geolocation" in navigator) { navigator.geolocation.getCurrentPosition(function(position) { myLocation.lat = position.coords.latitude; myLocation.long = position.coords.longitude; $rootScope.$broadcast('location', myLocation) }); } return{ getMyLocation: function(){ return myLocation; } } }). $scope.myLocation = currentPosition.getMyLocation(); $scope.$on('location', function(scope,myLocation){ $scope.myLocation = myLocation; }); if ("geolocation" in navigator) { navigator.geolocation.getCurrentPosition(function(position) { $rootScope.$apply(function() { myLocation.lat = position.coords.latitude; myLocation.long = position.coords.longitude; }); }); }