map-data.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /**
  2. * @ngdoc directive
  3. * @name map-data
  4. * @description
  5. * set map data
  6. * Requires: map directive
  7. * Restrict To: Element
  8. *
  9. * @param {String} method-name, run map.data[method-name] with attribute value
  10. * @example
  11. * Example:
  12. *
  13. * <map zoom="11" center="[41.875696,-87.624207]">
  14. * <map-data load-geo-json="https://storage.googleapis.com/maps-devrel/google.json"></map-data>
  15. * </map>
  16. */
  17. ngMap.directive('mapData', ['Attr2Options', function(Attr2Options) {
  18. var parser = Attr2Options;
  19. return {
  20. restrict: 'E',
  21. require: '^map',
  22. link: function(scope, element, attrs, mapController) {
  23. var filtered = parser.filter(attrs);
  24. var options = parser.getOptions(filtered);
  25. var events = parser.getEvents(scope, filtered, events);
  26. console.log('map-data options', options);
  27. scope.$on('mapInitialized', function(event, map) {
  28. /**
  29. * options
  30. */
  31. for (var key in options) {
  32. if (key) {
  33. var val = options[key];
  34. if (typeof scope[val] === "function") {
  35. map.data[key](scope[val]);
  36. } else {
  37. map.data[key](val);
  38. }
  39. } // if (key)
  40. }
  41. /**
  42. * events
  43. */
  44. for (var eventName in events) {
  45. if (events[eventName]) {
  46. map.data.addListener(eventName, events[eventName]);
  47. }
  48. }
  49. });
  50. }
  51. }; // return
  52. }]);