ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

folium FloatImage 插件指南:在地图 HTML 画布上叠加浮动图片

folium FloatImage 插件指南:在地图 HTML 画布上叠加浮动图片 数据可视化数据分析GIS【免费下载链接】foliumPython Data. Leaflet.js Maps.项目地址https://gitcode.com/gh_mirrors/fo/folium点击查看免费下载导读FloatImage 是 folium 内置插件之一用于在 Leaflet 地图的 HTML 画布上叠加一张悬浮于所有图层之上的图片如罗盘、比例尺、Logo、图例等并通过百分比定位控制其在屏幕中的位置。读完本文你将掌握 FloatImage 的实例化参数、CSS 扩展方式、渲染原理以及如何用仓库中的测试用例验证渲染结果。一、FloatImage 是什么根据 docs/user_guide/plugins.rst 中的官方功能表FloatImage 的作用是Add a floating image in the HTML canvas on top of the map.在地图顶部的 HTML 画布上添加一张浮动图片。它适用于任何需要常驻地图上方的静态图形风向玫瑰图、指北针、版权水印、操作提示图等。与 Marker 或图层不同它不参与地图坐标系定位而是直接挂在 HTML 文档层上因此缩放、平移地图都不会改变它在视口中的相对位置。二、快速上手官方示例原文档 docs/user_guide/plugins/float_image.md 给出的最小可用示例非常简洁核心只需三步创建地图、实例化 FloatImage、把它 add_to 地图import folium from folium.plugins import FloatImage url ( https://raw.githubusercontent.com/ocefpaf/secoora_assets_map/ a250729bbcf2ddd12f46912d36c33f7539131bec/secoora_icons/rose.png ) m folium.Map([-13, -38.15], zoom_start10) FloatImage(url, bottom40, left65).add_to(m) m在 Jupyter Notebook / IPython 环境中最后一行m会调用地图对象的_repr_html_()定义见 folium/folium.py渲染出完整 HTML页面右上left65, bottom40即可看到浮动的玫瑰图。注意FloatImage(...).add_to(m)与m.add_child(FloatImage(...))等价——Map.add_child位于 folium/map.py负责把插件元素挂到地图的 DOM 树中。三、参数详解定位与样式从源码 folium/plugins/float_image.py 的类签名与 docstring 中可以提取出完整参数语义参数类型默认值说明imagestr必填图片的 URL也支持 data URI内联图片或file://协议的本地文件路径bottomint75距视口底部的垂直位置单位是屏幕高度的百分比leftint75距视口左侧的水平位置单位是屏幕宽度的百分比**kwargs--其余关键字参数将作为 CSS 属性直接写到img的样式中例如width300px、opacity0.8这三个参数在__init__中被原样保存为实例属性folium/plugins/float_image.py而kwargs被存入self.css字典def __init__(self, image, bottom75, left75, **kwargs): super().__init__() self._name FloatImage self.image image self.bottom bottom self.left left self.css kwargs定位规则bottom与left均为视口百分比组合起来决定图片锚点位置bottom0贴底、bottom100贴顶left0靠左、left100靠右。典型组合如bottom100, left100表示右上角bottom0, left0表示左下角。定位由内联style块实现position: absolute使图片脱离文档流、以视口为参照#FloatImage_xxx { position: absolute; bottom: 40%; left: 65%; }通过 kwargs 追加 CSSkwargs 适合控制尺寸、透明度、边框等视觉效果例如FloatImage( url, bottom40, left65, width180px, # 限制显示宽度 opacity0.9, # 半透明叠加减少遮挡 border2px solid #333, ).add_to(m)这些键值对会在模板渲染时被循环写入样式块folium/plugins/float_image.py因此凡是合法的 CSS 属性名都可以直接使用。四、渲染原理模板与层级FloatImage 继承自 branca 的MacroElement通过 folium 自定义的 Jinja2Template定义见 folium/template.py渲染两段内容header 宏——生成style块写入定位与 CSS 属性html 宏——生成实际的img标签且带stylez-index: 999999folium/plugins/float_image.pyimg idFloatImage_xxx altfloat_image srchttps://... stylez-index: 999999 /imgz-index: 999999是理解浮动的关键它保证图片几乎总在其他地图控件与图层之上除非页面另有更高层级的元素。同时altfloat_image也为图片提供了无障碍描述文本。关于本地图片与内联图片docstring 明确说明image参数除常规 URL 外还支持data URI将图片 Base64 编码后内联适合离线或单 HTML 文件分发场景file://协议指向本地文件的路径适合在本地调试时使用浏览器同源策略下需注意访问限制。五、测试用例验证渲染结果可断言仓库为 FloatImage 提供了单元测试 tests/plugins/test_float_image.py它验证了两个关键事实可作为你理解渲染输出的依据img标签正确生成测试用Template渲染期望的img结构含src、altfloat_image、z-index: 999999断言其包含在地图的整体渲染输出中style样式正确生成测试以bottom60, left70, width20%实例化断言输出样式块中出现了bottom: 60%;、left: 70%;、width: 20%;即 kwargs 中的 CSS 确实被写入。szt plugins.FloatImage(url, bottom60, left70, width20%) m.add_child(szt) out normalize(m._parent.render()) # 断言 img 与 style 均在输出中注意该测试还调用了m.get_bounds()并断言边界为[[None, None], [None, None]]——说明 FloatImage 不向地图贡献任何数据边界印证了它纯 DOM 层叠加、不参与地理坐标的特性。六、常见问题与注意事项位置数值含义bottom/left是百分比整数非法范围如负值或大于 100不会被源码校验最终由浏览器按 CSS 规则解释建议保持在 0~100。图片遮挡交互由于z-index: 999999极高置于中心位置的大图可能遮挡地图拖拽建议用width控制尺寸、opacity降低遮挡或把图片放到角落。与图层控制器的关系FloatImage 不受 LayerControl 管辖无法像普通图层那样开/关切换如需可切换的图片可考虑使用 ImageOverlay见 docs/user_guide/raster_layers/image_overlay.md。导入路径FloatImage已通过 folium/plugins/init.py 从folium.plugins.float_image导出因此from folium.plugins import FloatImage即可直接使用。七、小结FloatImage 是 folium 中实现地图悬浮图片最直接的方式三个核心参数image、bottom、left加上自由的 CSS kwargs配合z-index: 999999的高层级与position: absolute的视口定位即可在不干扰地图坐标体系的前提下放置常驻图形。从 folium/plugins/float_image.py 的实现与 tests/plugins/test_float_image.py 的断言中我们可以确认它的全部渲染行为都集中在style与img两块输出中行为简单、可预测非常适合需要叠加而非铺设的视觉元素场景。赞分享数据可视化数据分析GIS【免费下载链接】foliumPython Data. Leaflet.js Maps.项目地址https://gitcode.com/gh_mirrors/fo/folium点击查看免费下载相关推荐flet-map 地图叠加图片图层 OverlayImageLayer 完整使用指南在 Flet 地图上叠加 OverlayImage 与 RotatedOverlayImageflet map 地图叠加图片图层 OverlayImageLayer 完整使用指南在 Flet 地图上叠加 OverlayImage 与 RotatedOv前端跨平台桌面应用移动开发Flet 地图叠加图片 OverlayImage 完全指南在 Python 中给地图叠加任意图片图层Flet 地图叠加图片 OverlayImage 完全指南在 Python 中给地图叠加任意图片图层 导读 OverlayImage 是 flet_map 扩前端跨平台桌面应用移动开发Leaflet ImageOverlay 图像叠加层实战指南在指定地理边界上叠加任意图片Leaflet ImageOverlay 图像叠加层实战指南在指定地理边界上叠加任意图片 导读 本文以 Leaflet 官方教程的 ImageOverlay前端数据可视化GIS上一篇PP-OCRv6_medium_det_safetensors实战教程多语言文本检测与工业场景应用全攻略下一篇【亲测免费】 探索时间序列数据库的未来InfluxDB Java 官方客户端库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表