traffic-layer.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * @ngdoc directive
  3. * @name traffic-layer
  4. * @requires Attr2Options
  5. * @description
  6. * Requires: map directive
  7. * Restrict To: Element
  8. *
  9. * @example
  10. * Example:
  11. *
  12. * <map zoom="13" center="34.04924594193164, -118.24104309082031">
  13. * <traffic-layer></traffic-layer>
  14. * </map>
  15. */
  16. /*jshint -W089*/
  17. ngMap.directive('trafficLayer', ['Attr2Options', function(Attr2Options) {
  18. var parser = Attr2Options;
  19. var getLayer = function(options, events) {
  20. var layer = new google.maps.TrafficLayer(options);
  21. for (var eventName in events) {
  22. google.maps.event.addListener(layer, eventName, events[eventName]);
  23. }
  24. return layer;
  25. };
  26. return {
  27. restrict: 'E',
  28. require: '^map',
  29. link: function(scope, element, attrs, mapController) {
  30. var orgAttrs = parser.orgAttributes(element);
  31. var filtered = parser.filter(attrs);
  32. var options = parser.getOptions(filtered);
  33. var events = parser.getEvents(scope, filtered);
  34. console.log('traffic-layer options', options, 'events', events);
  35. var layer = getLayer(options, events);
  36. mapController.addObject('trafficLayers', layer);
  37. parser.observeAttrSetObj(orgAttrs, attrs, layer); //observers
  38. }
  39. }; // return
  40. }]);