Skip to content

GeoJson style is not being applied correctly #1932

@ocefpaf

Description

@ocefpaf

Describe the bug

Both in a loop or using a GeoDataframe, only the last style is applied to all geometries.
We can see that in our docs:

Screenshot from 2024-04-16 21-23-04

To Reproduce

https://python-visualization.github.io/folium/latest/user_guide/geojson/geopandas_and_geo_interface.html

I also believe #1608 is related.

Expected behavior
We expect each geometry to have its own color defined by the style column.

Environment (please complete the following information):

  • Browser: all tested
  • Jupyter Notebook or html files? Both.
  • Python version: 3.11
  • folium version: 0.16.0
  • branca version: 0.7.1

Additional context
In a loop one can "hack" this problem by assigning a unique value using exec (note recommended though).

import folium

m = folium.Map()
for k, glider in gdf.iterrows():
    exec(f"style_function = lambda x: {glider['style']}")  # hack it to make it work
    # style_function = lambda x: glider['style']  # shows the bug
    folium.GeoJson(
        data=glider["geometry"],
        style_function=style_function,
    ).add_to(m)
m

Possible solutions

I'll investigate more and see if I can come up with something.
I did try with latest branca and folium and this is not solved yet.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugAn issue describing unexpected or malicious behaviour

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions