source : fusion-tables-layer.js

  1. /**
  2. * @ngdoc directive
  3. * @name fusion-tables-layer
  4. * @description
  5. * Requires: map directive
  6. * Restrict To: Element
  7. *
  8. * @example
  9. * Example:
  10. * <map zoom="11" center="41.850033, -87.6500523">
  11. * <fusion-tables-layer query="{
  12. * select: 'Geocodable address',
  13. * from: '1mZ53Z70NsChnBMm-qEYmSDOvLXgrreLTkQUvvg'}">
  14. * </fusion-tables-layer>
  15. * </map>
  16. */
  17. (function() {
  18. 'use strict';
  19. angular.module('ngMap').directive('fusionTablesLayer', [
  20. 'Attr2MapOptions', function(Attr2MapOptions) {
  21. var parser = Attr2MapOptions;
  22. var getLayer = function(options, events) {
  23. var layer = new google.maps.FusionTablesLayer(options);
  24. for (var eventName in events) {
  25. google.maps.event.addListener(layer, eventName, events[eventName]);
  26. }
  27. return layer;
  28. };
  29. return {
  30. restrict: 'E',
  31. require: ['?^map','?^ngMap'],
  32. link: function(scope, element, attrs, mapController) {
  33. mapController = mapController[0]||mapController[1];
  34. var filtered = parser.filter(attrs);
  35. var options = parser.getOptions(filtered, {scope: scope});
  36. var events = parser.getEvents(scope, filtered, events);
  37. console.log('fusion-tables-layer options', options, 'events', events);
  38. var layer = getLayer(options, events);
  39. mapController.addObject('fusionTablesLayers', layer);
  40. element.bind('$destroy', function() {
  41. mapController.deleteObject('fusionTablesLayers', layer);
  42. });
  43. }
  44. }; // return
  45. }]);
  46. })();