python-visualization / folium

Python Data. Leaflet.js Maps.
https://python-visualization.github.io/folium/
MIT License
6.94k stars 2.23k forks source link

FeatureGroups named using numeric string always placed first in LayerControl #2021

Open JuliusGoelz opened 3 weeks ago

JuliusGoelz commented 3 weeks ago

Describe the bug Adding multiple FeatureGroups to a LayerControl where some are named using a numerical string causes those groups to always come first in the layer control on the map, even though feature groups named using alphanumeric strings are unsorted and sortLayers argument is set to False.

Screenshot:

grafik

I have not managed to find any documentation saying that this is intended behaviour.

To Reproduce

import folium

m = folium.Map(location=[0, 0], zoom_start=6)

fg1 = folium.FeatureGroup("z")
m.add_child(fg1)

fg2 = folium.FeatureGroup("a")
m.add_child(fg2)

fg3 = folium.FeatureGroup("2a")
m.add_child(fg3)

fg4 = folium.FeatureGroup("1")
m.add_child(fg4)

folium.Marker([-1, -1]).add_to(fg1)
folium.Marker([1, 1]).add_to(fg2)
folium.Marker([-1, 1]).add_to(fg3)
folium.Marker([1, -1]).add_to(fg4)

folium.LayerControl(collapsed=False, sortLayers=False).add_to(m)

m

Expected behavior FeatureGroups appearing in the LayerControl in the order they were added to the map when sortLayers argument is set to False.

In the case of the example: z -> a -> 2a -> 1

Environment (please complete the following information):

Additional context

--

Possible solutions