python - 在folium地图上添加菜单栏以选择或取消选择特定对象(标记)
问题描述
我已经建立了一张很酷的地图,如下图所示,但包含更多对象。
import folium
base_map = folium.Map(location=[52.2297, 21.0122], control_scale=True, zoom_start=10)
points1 = [(52.228771, 21.003146),
( 52.238025, 21.050971),
(52.255008, 21.036172),
(52.252831, 21.051385),
(52.219995, 20.965021)]
for tuple_ in points1:
icon=folium.Icon(color='white', icon='train', icon_color="red", prefix='fa')
folium.Marker(tuple_, icon=icon).add_to(base_map)
points2 = [(52.239062, 21.131601),
(52.204905, 21.168202),
(52.181296, 20.987486),
(52.206272, 20.914988),
(52.254395, 21.224107)]
for tuple_ in points2:
icon=folium.Icon(color='white', icon='car', icon_color="blue", prefix='fa')
folium.Marker(tuple_, icon=icon).add_to(base_map)
line_points = [(52.204905, 21.168202),(52.255008, 21.036172), (52.219995, 20.965021), (52.239062, 21.131601), (52.254395, 21.224107)]
folium.PolyLine(locations=line_points, weight=3,color = 'yellow').add_to(base_map)
base_map.save("example_map.html")
结果:
问:我想知道是否有一种方法可以构建某种菜单栏,以便从地图中选择特定对象。例如只有汽车,只有火车或汽车和黄线。
它不会成为任何网站的一部分 - 只是一个合并到 .html 文件中的解决方案,如下所示
感谢帮助!!
解决方案
感谢@BobHaffner,我找到了我的解决方案。谢谢鲍勃!
import folium
base_map = folium.Map(location=[52.2297, 21.0122], control_scale=True, zoom_start=10)
points1 = [(52.228771, 21.003146),
(52.238025, 21.050971),
(52.255008, 21.036172),
(52.252831, 21.051385),
(52.219995, 20.965021)
]
train_group = folium.FeatureGroup(name="Trains").add_to(base_map)
for tuple_ in points1:
icon=folium.Icon(color='white', icon='train', icon_color="red", prefix='fa')
train_group.add_child(folium.Marker(tuple_, icon=icon))
points2 = [(52.239062, 21.131601),
(52.204905, 21.168202),
(52.181296, 20.987486),
(52.206272, 20.914988),
(52.254395, 21.224107)
]
cars_group = folium.FeatureGroup(name="Cars").add_to(base_map)
for tuple_ in points2:
icon=folium.Icon(color='white', icon='car', icon_color="blue", prefix='fa')
cars_group.add_child(folium.Marker(tuple_, icon=icon))
line_points = [(52.204905, 21.168202),
(52.255008, 21.036172),
(52.219995, 20.965021),
(52.239062, 21.131601),
(52.254395, 21.224107)
]
lines_group = folium.FeatureGroup(name="Lines").add_to(base_map)
lines_group.add_child(folium.PolyLine(locations=line_points, weight=3,color = 'yellow'))
folium.LayerControl().add_to(base_map)
base_map.save("example_map.html")
推荐阅读
- excel - 如何使用公式或 VBA 根据另一列中的另一个单元格值设置单元格中的值?
- angular - 类型对象上不存在属性
- django - 如何在 django 模板中使用 if else 语句中断循环
- php - 从 laravel 模型中的函数中选择具有值的数据
- angular - Native 和 ShadowDom ViewEncapsulation 有什么区别?
- wso2 - WSO2 完成一个事务后向另一个端点发送消息
- android - 使用 cmake 集成 FFMPEG:链接库时未定义的引用
- docker - docker ls:无法打开目录“。”:权限被拒绝
- json - 使用 jq 从 JSON 中删除重复值
- c - 使用映射共享内存获取“越界”和“变量未初始化”警告