Folium 中的 FeatureGroup 图层控制 - 只有一个活动图层

2023-12-24

我正在尝试在 Choropleth Map 上显示多个图层,其中包含 Stamen Terrain 作为基础图层并将图层显示为要素组。 这是我的初始代码,没有覆盖控制:

map = folium.Map(location=[38.58, 0], zoom_start=3, tiles="Stamen Terrain")

fg_tc = folium.FeatureGroup(name="Totalc")

fg_tc.add_child(folium.GeoJson(data=open('world.json', 'r',
                                          encoding='utf-8-sig').read(),
                               style_function=lambda x: {
                                   'fillColor': get_at_once(x['properties']['NAME'], 'totalc'),
                                   'color': 'black',
                                   'weight': 1,
                                   'dashArray': '5, 5',
                                   'fillOpacity': 0.75}))

fg_nc = folium.FeatureGroup(name="New", show=False)

fg_nc.add_child(folium.GeoJson(data=open('world.json', 'r',
                                          encoding='utf-8-sig').read(),
                               style_function=lambda x: {
                                   'fillColor': get_at_once(x['properties']['NAME'], 'new'),
                                   'color': 'black',
                                   'weight': 1,
                                   'dashArray': '5, 5',
                                   'fillOpacity': 0.75}))

fg_td = folium.FeatureGroup(name="Totald", show=False)

fg_td.add_child(folium.GeoJson(data=open('world.json', 'r',
                                          encoding='utf-8-sig').read(),
                               style_function=lambda x: {
                                   'fillColor': get_at_once(x['properties']['NAME'], 'totald'),
                                   'color': 'black',
                                   'weight': 1,
                                   'dashArray': '5, 5',
                                   'fillOpacity': 0.75}))

fg_ac = folium.FeatureGroup(name="Active", show=False)

fg_ac.add_child(folium.GeoJson(data=open('world.json', 'r',
                                          encoding='utf-8-sig').read(),
                               style_function=lambda x: {
                                   'fillColor': get_at_once(x['properties']['NAME'], 'active_cases'),
                                   'color': 'black',
                                   'weight': 1,
                                   'dashArray': '5, 5',
                                   'fillOpacity': 0.75}))


map.add_child(fg_tc)

map.add_child(fg_nc)

map.add_child(fg_td)

map.add_child(fg_ac)

map.add_child(folium.LayerControl())

map.save("map1.html")

我的问题是,FeatureGroup 图层可以通过复选框进行选择,允许在某一时间选择多个图层。就我而言,我需要一次将雄蕊地形显示为背景,并且仅显示一个活动图层,但我不知道如何执行此操作。

我也尝试过控制叠加,但只有一个图层可见,并且我失去了雄蕊地形作为背景,即图层由单选按钮控制,但只有一组包含雄蕊地形和数据要素组图层...

知道如何根据需要显示:雄蕊地形作为背景并且同时只有一个活动数据层吗? 我不固定使用FeatureGroup,但目前我的知识仅限于此,到目前为止我的谷歌失败了我......

Thanks!

附注这里还有一些带有尝试的打印屏幕:1 和 2 没有覆盖控制,可以看到选择了更多层的“2”中发生的情况。 3 和 4 的覆盖层=False,然后只有一层可以处于活动状态。

打印屏幕并显示试用结果 https://i.stack.imgur.com/2UpAI.jpg


我有类似的问题。如果您还没有弄清楚,这或多或少就是我所做的:

map = folium.Map(location=[ , ], zoom_start= , tiles=None)
base_map = folium.FeatureGroup(name='Basemap', overlay=True, control=False)
folium.TileLayer(tiles='OpenStreetMap').add_to(base_map)
base_map.add_to(map)

layer1 = folium.FeatureGroup(name='layer1', overlay=False)
layer1.add_to(map)

这为我解决了这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Folium 中的 FeatureGroup 图层控制 - 只有一个活动图层 的相关文章

随机推荐