|
1 | 1 | from branca.element import Figure, MacroElement |
2 | 2 |
|
3 | | -from folium.elements import JSCSSMixin |
| 3 | +from folium.elements import EventHandler, JSCSSMixin |
4 | 4 | from folium.folium import Map |
5 | 5 | from folium.map import LayerControl |
6 | 6 | from folium.template import Template |
7 | | -from folium.utilities import deep_copy |
| 7 | +from folium.utilities import JsCode, deep_copy |
8 | 8 |
|
9 | 9 |
|
10 | 10 | class DualMap(JSCSSMixin, MacroElement): |
@@ -108,6 +108,19 @@ def add_child(self, child, name=None, index=None): |
108 | 108 | index = len(self.m2._children) |
109 | 109 | self.children_for_m2.append((child, name, index)) |
110 | 110 |
|
| 111 | + def on(self, **event_map: JsCode): |
| 112 | + """Add event handlers to both maps at once""" |
| 113 | + self._add(once=False, **event_map) |
| 114 | + |
| 115 | + def once(self, **event_map: JsCode): |
| 116 | + """Add event handlers to both maps at once""" |
| 117 | + self._add(once=True, **event_map) |
| 118 | + |
| 119 | + def _add(self, once: bool, **event_map: JsCode): |
| 120 | + for event_type, handler in event_map.items(): |
| 121 | + self.m1.add_child(EventHandler(event_type, handler, once)) |
| 122 | + self.m2.add_child(EventHandler(event_type, handler, once)) |
| 123 | + |
111 | 124 | def render(self, **kwargs): |
112 | 125 | super().render(**kwargs) |
113 | 126 |
|
|
0 commit comments