jupyter-widgets / ipyleaflet

A Jupyter - Leaflet.js bridge
https://ipyleaflet.readthedocs.io
MIT License
1.48k stars 363 forks source link

Exporting HTML map multiple times causes increasing file sizes #1098

Open filipre opened 1 year ago

filipre commented 1 year ago

Hi!

I need to generate multiple maps and save them to my system. I noticed that calling m.save() multiple times increases the size of the exported HTML map. Consider the following jupyter notebook

from ipyleaflet import Map

for i in range(20):
    m = Map(center=(48.0, 10.0), zoom=5)
    m.layout.height = "1000px"
    m.save(f"map_{i}.html", title=f"Map for {i}")

Even though I generate the same map 20 times, the file size differs on my system: Screenshot 2023-02-07 at 11 43 42

Also consider the first and second html page map_0.txt map_1.txt

Notice that I am using version 0.17.0 because the save() method is broken in version 0.17.1 and 0.17.2 (newest). Any ideas how to resolve this?

Best, René

filipre commented 1 year ago

Okay, it seems like https://github.com/jupyter-widgets/ipywidgets/issues/3448 is the underlying issue. The following fix works for me, but I'd like to keep this issue open until ipyleaflet uses the fixed version (once its released)

from ipywidgets.widgets.widget import Widget 
from ipyleaflet import Map

for i in range(20):
    Widget.widgets.clear()
    m = Map(center=(48.0, 10.0), zoom=5)
    m.layout.height = "1000px"
    m.save(f"bug/map_{i}.html", title=f"Map for {i}")