Skip to content

Instantly share code, notes, and snippets.

@jwo
Created March 4, 2014 22:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jwo/9356983 to your computer and use it in GitHub Desktop.
Save jwo/9356983 to your computer and use it in GitHub Desktop.
wayCoolCtrl showing promises in Angular
greenvilleJS.controller('wayCoolCtrl', ['$scope', '$q', function ($scope, $q) {
$scope.address = "";
$scope.mapMarkers= [];
$scope.zoom = 8;
$scope.geoCoder = new google.maps.Geocoder();
$scope.mapCenter = function() {
return $scope.map.center;
};
$scope.map = {
center: {
latitude: 29,
longitude: -95
},
zoom: $scope.zoom
};
$scope.initMap = function() {
$scope.currentPosition().then(function(center){
$scope.map.center = center;
});
};
$scope.find = function() {
geoCode($scope.address).then(function(newCoords) {
$scope.map.center = newCoords;
$scope.mapMarkers = new Array(newCoords);
});
};
geoCode = function(address) {
var deferred = $q.defer();
$scope.geoCoder.geocode({address: address}, function(results, status) {
deferred.resolve( { latitude: results[0].geometry.location.d,
longitude: results[0].geometry.location.e});
});
return deferred.promise;
};
$scope.currentPosition = function() {
var deferred = $q.defer();
navigator.geolocation.getCurrentPosition( function (position) {
deferred.resolve(position.coords);
});
return deferred.promise;
};
}
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment