diff --git a/folium/plugins/geoman.py b/folium/plugins/geoman.py index a427961191..d8a06607bb 100644 --- a/folium/plugins/geoman.py +++ b/folium/plugins/geoman.py @@ -34,6 +34,7 @@ class GeoMan(JSCSSMixin, MacroElement): {{ this._parent.get_name() }} ); {%- endif %} + /* The global variable below is needed to prevent streamlit-folium from barfing :-( */ @@ -42,6 +43,7 @@ class GeoMan(JSCSSMixin, MacroElement): {{this.get_name()}}.addControls( {{this.options|tojavascript}} ) + drawnItems_{{ this.get_name() }}.eachLayer(function(layer){ L.PM.reInitLayer(layer); {%- for event, handler in this.on.items() %} @@ -52,7 +54,7 @@ class GeoMan(JSCSSMixin, MacroElement): {%- endfor %} }); - {{ this._parent.get_name() }}.on("pm:create", function(e) { + var new_element_handler_{{ this.get_name() }} = function(e) { var layer = e.layer, type = e.layerType; @@ -62,19 +64,11 @@ class GeoMan(JSCSSMixin, MacroElement): {{handler}} ); {%- endfor %} - }); + drawnItems_{{ this.get_name() }}.addLayer(layer); + }; - {{ this._parent.get_name() }}.on("pm:cut", function(e) { - var layer = e.layer, - type = e.layerType; - - {%- for event, handler in this.on.items() %} - layer.on( - "{{event}}", - {{handler}} - ); - {%- endfor %} - }); + {{ this._parent.get_name() }}.on("pm:create", new_element_handler_{{ this.get_name() }}); + {{ this._parent.get_name() }}.on("pm:cut", new_element_handler_{{ this.get_name() }}); {% endmacro %} """