-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathL.Control.Button.js
80 lines (69 loc) · 2.6 KB
/
L.Control.Button.js
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Author: Jerroyd Moore
L.Control.Button = L.Control.extend({
includes: L.Mixin.Events,
options: {
position: 'topright',
},
initialize: function (label, options) {
L.setOptions(this, options);
var button = null;
if (label instanceof HTMLElement) {
button = label;
try {
button.parentNode.removeChild(button);
} catch (e) { }
} else if (typeof label === "string") {
button = L.DomUtil.create('button', this.options.className);
button.innerHTML = label;
} else {
throw new Error('L.Control.Button: failed to initialize, label must either be text or a dom element');
}
L.DomUtil.addClass(button, this.options.position);
this._container = button;
return this;
},
isToggled: function () {
return L.DomUtil.hasClass(this._container, this.options.toggleButton);
},
_fireClick: function (e) {
this.fire('click');
if (this.options.toggleButton) {
var btn = this._container;
if (this.isToggled()) {
L.DomUtil.removeClass(this._container, this.options.toggleButton);
} else {
L.DomUtil.addClass(this._container, this.options.toggleButton);
}
}
},
onAdd: function (map) {
if (this._container) {
L.DomEvent.on(this._container, 'click', this._fireClick, this);
var stop = L.DomEvent.stopPropagation;
L.DomEvent.on(this._container, 'mousedown', stop)
.on(this._container, 'touchstart', stop)
.on(this._container, 'dblclick', stop)
.on(this._container, 'mousewheel', stop)
.on(this._container, 'MozMozMousePixelScroll', stop)
this.fire('load');
this._map = map;
}
return this._container;
},
onRemove: function (map) {
if (this._container && this._map) {
L.DomEvent.off(this._container, 'click', this._fireClick, this);
L.DomEvent.off(this._container, 'mousedown', stop)
.off(this._container, 'touchstart', stop)
.off(this._container, 'dblclick', stop)
.off(this._container, 'mousewheel', stop)
.off(this._container, 'MozMozMousePixelScroll', stop)
this.fire('unload');
this._map = null;
}
return this;
}
});
L.control.button = function (label, options) {
return new L.Control.Button(label, options);
};