Administrator
2022-09-14 58d006e05dcf2a20d0ec5367dd03d66a61db6849
提交 | 用户 | 时间
58d006 1 GMaps.prototype.on = function(event_name, handler) {
A 2   return GMaps.on(event_name, this, handler);
3 };
4
5 GMaps.prototype.off = function(event_name) {
6   GMaps.off(event_name, this);
7 };
8
9 GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed'];
10
11 GMaps.on = function(event_name, object, handler) {
12   if (GMaps.custom_events.indexOf(event_name) == -1) {
13     return google.maps.event.addListener(object, event_name, handler);
14   }
15   else {
16     var registered_event = {
17       handler : handler,
18       eventName : event_name
19     };
20
21     object.registered_events[event_name] = object.registered_events[event_name] || [];
22     object.registered_events[event_name].push(registered_event);
23
24     return registered_event;
25   }
26 };
27
28 GMaps.off = function(event_name, object) {
29   if (GMaps.custom_events.indexOf(event_name) == -1) {
30     google.maps.event.clearListeners(object, event_name);
31   }
32   else {
33     object.registered_events[event_name] = [];
34   }
35 };
36
37 GMaps.fire = function(event_name, object, scope) {
38   if (GMaps.custom_events.indexOf(event_name) == -1) {
39     google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2));
40   }
41   else {
42     if(event_name in scope.registered_events) {
43       var firing_events = scope.registered_events[event_name];
44
45       for(var i = 0; i < firing_events.length; i++) {
46         (function(handler, scope, object) {
47           handler.apply(scope, [object]);
48         })(firing_events[i]['handler'], scope, object);
49       }
50     }
51   }
52 };