Skip to content

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

Closed
@JuliusGoelz

Description

@JuliusGoelz

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 (edited, original one accidentally showed the solution using the workaround described below):

image

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):

  • Jupyter Notebook
  • Python version: 3.12.6
  • folium version 0.18.0

Additional context

--

Possible solutions

  • Inserting a space/any other symbol after the number makes it appear where I would expect it to
  • I tried supplying a js sortFunction to LayerControl as a string, but it resulted in the layer control not showing up. Is this not supposed to be used in Python?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions