大功初步告成:folium,实现画点并按图层展现

这段代码展示了如何使用Python库folium创建一个交互式地图,并添加了多个标记点,分别对应不同日期。每个标记点都有详细的弹出信息,并且地图上集成了图层控制,允许用户切换显示不同日期的标记。
import webbrowser

import folium

import json
import pandas as pd
import folium
from folium.plugins import MarkerCluster
from folium.plugins import Search
m = folium.Map(location=[31.23, 121.47], zoom_start=3)
#marker_cluster = MarkerCluster().add_to(m)

layer_0329 = folium.FeatureGroup(name="3月29日")
layer_0330 = folium.FeatureGroup(name="3月30日")
layer_0331 = folium.FeatureGroup(name="3月31日")
layer_0401 = folium.FeatureGroup(name="4月1日")
layer_0402 = folium.FeatureGroup(name="4月2日")

folium.Marker([38.85, 115.48],
              popup='<i>Mt. Hood Meadows</i>',
              icon=folium.Icon(icon="cloud", color="green")).add_to(layer_0329)

# 显示m
folium.Marker([39.85, 116.48],
              popup='<i>Mt. Hood Meadows</i>',
              icon=folium.Icon(icon="cloud", color="green")).add_to(layer_0330)



folium.Marker([40.85, 115.48],
              popup='<i>Mt. Hood Meadows</i>',
              icon=folium.Icon(icon="cloud", color="green")).add_to(m)

# 显示m




m.add_child(layer_0329)
m.add_child(layer_0330)
m.add_child(layer_0331)
m.add_child(layer_0401)
m.add_child(layer_0402)


m.add_child(folium.map.LayerControl())


m.save("test.html")



webbrowser.open('test.html')
在使用 Folium 创建地图时,`LayerControl` 默认仅支持显示一级图层的切换选项。若希望在 `LayerControl` 中显示子图层(即二级图层)的控制选项,可以通过使用 `folium.plugins.FeatureGroupSubGroup` 插件来实现。该插件允许将多个图层组织为嵌套结构,图层控制器中以分组形式展示。 具体实现步骤如下: - 首先创建一个基础地图,添加一个主图层(例如 `TileLayer`)。 - 然后使用 `FeatureGroupSubGroup` 将多个子图层分组管理,每个子图层可以是 `Marker`、`GeoJson` 或其他图层类型。 - 最后将这些子图层组添加到地图中,通过 `LayerControl` 显示其控制选项。 以下是一个示例代码: ```python import folium from folium.plugins import FeatureGroupSubGroup # 创建基础地图 m = folium.Map(location=[51.5074, -0.1278], zoom_start=10) # 添加主图层 folium.TileLayer('OpenStreetMap').add_to(m) # 创建第一个子图层组 fgs1 = FeatureGroupSubGroup(name='子图层组1') m.add_child(fgs1) # 在第一个子图层组中添加标记 folium.Marker([51.5, -0.1], popup='子图层1标记1').add_to(fgs1) folium.Marker([51.51, -0.11], popup='子图层1标记2').add_to(fgs1) # 创建第二个子图层组 fgs2 = FeatureGroupSubGroup(name='子图层组2') m.add_child(fgs2) # 在第二个子图层组中添加标记 folium.Marker([51.52, -0.12], popup='子图层2标记1').add_to(fgs2) folium.Marker([51.53, -0.13], popup='子图层2标记2').add_to(fgs2) # 添加图层控制器 folium.LayerControl().add_to(m) # 保存地图 m.save("map_with_sublayers.html") ``` 通过上述方法,`LayerControl` 会显示主图层和子图层组的控制选项,用户可以点击展开子图层切换其中的图层显示状态[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值