数据可视化数据分析GIS【免费下载链接】foliumPython Data. Leaflet.js Maps.项目地址https://gitcode.com/gh_mirrors/fo/folium点击查看免费下载本篇指南以 Folium 官方用户手册中的 map.md 为主线围绕folium.Map的三个高频基础配置——比例尺控件control_scale、缩放按钮zoom_control与地图平移边界max_bounds/经纬度上下限展开并结合 folium/folium.py 的Map类源码与 tests/test_folium.py 的测试断言帮助读者快速掌握如何让地图控件更符合业务需求例如在数据展示页面中隐藏默认缩放按钮、固定可视区域防止用户拖出目标范围。Map 类Folium 地图的入口所有地图绘制都从folium.Map开始。它封装了 Leaflet.js 的地图初始化逻辑将 Python 参数编译为 JavaScript 调用。在 folium/folium.py 中Map类第 81 行起继承了JSCSSMixin与Evented其_template最终会渲染为一段L.map(...)的 Leaflet 初始化脚本。Map的核心参数包括参数默认值说明locationNone地图中心点的 (纬度, 经度)。若为None源码会将中心点设为[0.0, 0.0]并把zoom_start强制改为1folium/folium.py 第 294-299 行zoom_start10初始缩放级别control_scaleFalse是否在底部显示比例尺zoom_controlTrue是否显示缩放按钮也支持位置字符串max_boundsFalse是否开启地图平移边界限制min_lat/max_lat-90/90纬度上下限min_lon/max_lon-180/180经度上下限tilesOpenStreetMap底图瓦片可以是内置名称、xyzservices.TileProvider或自定义 URLcrsEPSG3857坐标参考系可选EPSG3857、EPSG4326、EPSG3395、Simplewidth/height100%地图尺寸支持像素整数或百分比字符串下文逐一讲解文档中演示的三类配置。比例尺控件底部 Scale 标尺原文档第一个示例演示了比例尺的开启方式import folium folium.Map( location(-38.625, -12.875), control_scaleTrue, )设置control_scaleTrue后地图底部会渲染一个随缩放级别动态更新刻度的比例尺用于直观展示当前视口对应的真实距离。从源码看比例尺并非通过 Leaflet 的L.map初始化选项实现而是由模板中的独立语句追加folium/folium.py 第 235-237 行{%- if this.control_scale %} L.control.scale().addTo({{ this.get_name() }}); {%- endif %}即当control_scale为真时额外执行L.control.scale().addTo(map)把 Leaflet 内置的L.Control.Scale控件挂载到地图上。该参数默认值为False所以不设置时地图不会显示比例尺。缩放控件隐藏或重新定位 Zoom 按钮Leaflet 地图默认在左上角显示/-缩放按钮。文档展示了如何将其完全关闭folium.Map( location(-38.625, -12.875), zoom_controlFalse, )这适用于需要自定义缩放控件、或者在移动端展示页中希望界面更简洁的场景。源码中zoom_control的默认值是Truefolium/folium.py 第 284 行但它的类型是Union[bool, str]除了布尔值还支持位置字符串。相关处理逻辑如下第 320-329 行若传入的是字符串必须为topleft、topright、bottomleft、bottomright四角位置之一否则抛出ValueError提示 Incorrect value forzoom_control, choose from topleft, topright, bottomleft or bottomright.若传入布尔值则按原值传给 Leaflet。当指定了位置字符串时模板会改用L.control.zoom({ position: ... }).addTo(map)单独创建缩放控件第 239-241 行当传入False时zoom_control会被写入optionsLeaflet 的L.map将不再创建默认的缩放按钮。测试用例 tests/test_folium.py 第 523-526 行也验证了zoom_controlFalse的构造方式可正常渲染。# 将缩放按钮移动到右下角 folium.Map( location[45.5236, -122.6750], zoom_controlbottomright, )地图平移边界用 Limits 锁定可视区域原文档第三个示例展示了如何限制地图使其无法被拖出指定范围并用四个CircleMarker标出边界的四个角import folium min_lon, max_lon -45, -35 min_lat, max_lat -25, -15 m folium.Map( max_boundsTrue, location[-20, -40], zoom_start6, min_latmin_lat, max_latmax_lat, min_lonmin_lon, max_lonmax_lon, ) folium.CircleMarker([max_lat, min_lon], tooltipUpper Left Corner).add_to(m) folium.CircleMarker([min_lat, min_lon], tooltipLower Left Corner).add_to(m) folium.CircleMarker([min_lat, max_lon], tooltipLower Right Corner).add_to(m) folium.CircleMarker([max_lat, max_lon], tooltipUpper Right Corner).add_to(m) m这里的关键点是max_boundsTrue只有开启它四个经纬度上下限参数才会生效。源码将这四个参数组装成 Leaflet 所需的边界数组folium/folium.py 第 313-315 行max_bounds_array ( [[min_lat, min_lon], [max_lat, max_lon]] if max_bounds else None )即边界被构造成[[min_lat, min_lon], [max_lat, max_lon]]形式的[[西南角纬度, 西南角经度], [东北角纬度, 东北角经度]]并作为max_bounds选项传入 Leaflet 的L.map。Leaflet 会据此限制地图的平移范围当用户拖动地图时视口边缘不会越过这条边界。四个参数的默认值为min_lat-90、max_lat90、min_lon-180、max_lon180第 273-276 行即默认覆盖全球范围。测试 tests/test_folium.py 第 68 行与第 93 行对此有明确断言当只传max_boundsTrue时m.options[max_bounds] [[-90, -180], [90, 180]]与默认值完全一致。边界设置的两个细节必须显式开启max_boundsTrue即使传入了min_lat/max_lat等参数只要max_bounds为False默认值max_bounds_array即为None边界限制不会生效地图仍可自由平移。中心点与缩放级别需要落在边界内示例中location[-20, -40]、zoom_start6恰好位于边界框内部首屏即完整展示限定区域若初始中心点远离边界框用户可能需要先滚动才能看到目标范围因此建议将location与边界范围配合设计。更多可组合的 Map 配置在掌握以上三个配置后还可以与Map的其他参数组合使用常见搭配包括固定地图尺寸width750, height500以像素固定地图大小传百分比字符串如50%则按视口比例缩放源码通过_parse_size解析并在模板中输出px或vw/vh单位folium/folium.py 第 186-197 行、第 304-309 行。限制缩放级别min_zoom与max_zoom控制瓦片图层允许的缩放范围可配合max_bounds一起使用把用户完全锁在目标区域与级别内。选择坐标系crs支持EPSG3857Web 墨卡托在线底图默认、EPSG4326、EPSG3395与Simple用于平面游戏地图等场景。自定义底图tiles支持OpenStreetMap、CartoDB Positron、CartoDB Voyager等xyzservices内置瓦片也可传入带{z}/{x}/{y}占位符的瓦片 URL 与attr版权声明。这些参数与比例尺、缩放控件、边界限制相互独立可以按需自由组合例如隐藏缩放按钮 锁定边界 显示比例尺的高定制化数据看板场景。验证与快速运行本文所有示例均可在 Jupyter Notebook 中直接运行并内嵌渲染地图。仓库中的 Quickstart.ipynb 演示了folium.Map的最小用法tests/test_folium.py 则从单元测试层面验证了max_bounds、zoom_control等选项最终写入options的结果可作为排查配置是否生效的依据。若需在网页服务中使用可参考 flask_example.py 与 flask.rst 中与 Flask 集成的渲染方式。小结control_scaleTrue在地图底部添加动态比例尺对应模板中的L.control.scale().addTo(map)zoom_control默认True传False可隐藏缩放按钮传四角位置字符串可重新定位非法位置会抛出ValueErrormax_boundsTrue配合min_lat/max_lat/min_lon/max_lon可锁定地图平移范围边界数组按[[min_lat, min_lon], [max_lat, max_lon]]组装并作为 Leaflet 的max_bounds选项。以上配置是 Folium 地图定制中最基础也最常用的一环掌握它们之后可以进一步阅读 features.rst 与 vector_layers.rst为地图叠加标记、矢量图层与交互控件。赞分享数据可视化数据分析GIS【免费下载链接】foliumPython Data. Leaflet.js Maps.项目地址https://gitcode.com/gh_mirrors/fo/folium点击查看免费下载相关推荐sqls用Go打造的终极SQL语言服务器让开发效率提升10倍sqls用Go打造的终极SQL语言服务器让开发效率提升10倍 sqls是一款用Go语言开发的SQL语言服务器它实现了语言服务器协议LSP为开发者提供Superpowers技能库企业级AI开发效能提升的战略框架深度剖析Superpowers技能库企业级AI开发效能提升的战略框架深度剖析 在当今AI驱动开发的时代企业面临着一个核心挑战如何在保证代码质量的同时大幅提升开发AI 技能AI 插件开发工具上一篇不换耳机不花钱一个免费系统级音频均衡器让电脑声音从听个响变听细节下一篇秒变调音大师免费开源的系统级音频均衡器 Equalizer APO 上手全攻略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考