Skip to content

Commit c254fc6

Browse files
authored
Add event handlers to dual_map. (#2188)
This makes it behave similarly to a regular map. The event handlers are added to both map instances.
1 parent c90abbe commit c254fc6

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

folium/plugins/dual_map.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from branca.element import Figure, MacroElement
22

3-
from folium.elements import JSCSSMixin
3+
from folium.elements import EventHandler, JSCSSMixin
44
from folium.folium import Map
55
from folium.map import LayerControl
66
from folium.template import Template
7-
from folium.utilities import deep_copy
7+
from folium.utilities import JsCode, deep_copy
88

99

1010
class DualMap(JSCSSMixin, MacroElement):
@@ -108,6 +108,19 @@ def add_child(self, child, name=None, index=None):
108108
index = len(self.m2._children)
109109
self.children_for_m2.append((child, name, index))
110110

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+
111124
def render(self, **kwargs):
112125
super().render(**kwargs)
113126

0 commit comments

Comments
 (0)