source : geo-coder.js

  1. /**
  2. * @ngdoc service
  3. * @name GeoCoder
  4. * @description
  5. * Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q)
  6. * service for Google Geocoder service
  7. */
  8. (function() {
  9. 'use strict';
  10. var $q;
  11. /**
  12. * @memberof GeoCoder
  13. * @param {Hash} options
  14. * https://developers.google.com/maps/documentation/geocoding/#geocoding
  15. * @example
  16. * ```
  17. * GeoCoder.geocode({address: 'the cn tower'}).then(function(result) {
  18. * //... do something with result
  19. * });
  20. * ```
  21. * @returns {HttpPromise} Future object
  22. */
  23. var geocodeFunc = function(options) {
  24. var deferred = $q.defer();
  25. var geocoder = new google.maps.Geocoder();
  26. geocoder.geocode(options, function (results, status) {
  27. if (status == google.maps.GeocoderStatus.OK) {
  28. deferred.resolve(results);
  29. } else {
  30. deferred.reject(status);
  31. }
  32. });
  33. return deferred.promise;
  34. };
  35. var GeoCoder = function(_$q_) {
  36. $q = _$q_;
  37. return {
  38. geocode : geocodeFunc
  39. };
  40. };
  41. GeoCoder.$inject = ['$q'];
  42. angular.module('ngMap').service('GeoCoder', GeoCoder);
  43. })();