1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
/*
* L.Mixin.Events adds custom events functionality to Leaflet classes
*/
L.Mixin = {};
L.Mixin.Events = {
addEventListener: function(/*String*/ type, /*Function*/ fn, /*(optional) Object*/ context) {
var events = this._leaflet_events = this._leaflet_events || {};
events[type] = events[type] || [];
events[type].push({
action: fn,
context: context
});
return this;
},
hasEventListeners: function(/*String*/ type) /*-> Boolean*/ {
var k = '_leaflet_events';
return (k in this) && (type in this[k]) && (this[k][type].length > 0);
},
removeEventListener: function(/*String*/ type, /*Function*/ fn, /*(optional) Object*/ context) {
if (!this.hasEventListeners(type)) { return this; }
for (var i = 0, events = this._leaflet_events, len = events[type].length; i < len; i++) {
if (
(events[type][i].action === fn) &&
(!context || (events[type][i].context === context))
) {
events[type].splice(i, 1);
return this;
}
}
return this;
},
fireEvent: function(/*String*/ type, /*(optional) Object*/ data) {
if (!this.hasEventListeners(type)) { return; }
var event = L.Util.extend({
type: type,
target: this
}, data);
var listeners = this._leaflet_events[type].slice();
for (var i = 0, len = listeners.length; i < len; i++) {
listeners[i].action.call(listeners[i].context || this, event);
}
return this;
}
};
L.Mixin.Events.on = L.Mixin.Events.addEventListener;
L.Mixin.Events.off = L.Mixin.Events.removeEventListener;
L.Mixin.Events.fire = L.Mixin.Events.fireEvent;
|