Using $q in Angular JS to pass navigator geo JSON from factory to controller
You can use resolve feature of ui-router (https://github.com/angular-ui/ui-router/wiki) or ngRoute. 
Promise will be resolved and injected into controller automatically, service and controller will be nicely decoupled. 
Using ui-router code would look like this:

app.controller('NearestLocationController', function($scope, location) {
}

$stateProvider.state('locationState', {
      resolve: {
         location: function(geolocation){
            return geolocation.getLocation();
         }
      },
      controller: 'NearestLocationController'
})