
数据可视化数据分析GIS【免费下载链接】foliumPython Data. Leaflet.js Maps.项目地址https://gitcode.com/gh_mirrors/fo/folium点击查看免费下载导读本指南围绕 folium 的 MousePosition 插件展开讲解如何在地图角落实时显示鼠标指针的经纬度坐标。读完本文你将掌握 MousePosition 的基础用法、全部可配置选项位置、分隔符、小数位数、自定义格式化函数等以及该插件在源码层面的渲染原理并能在 Jupyter Notebook 或 Web 应用中直接落地使用。MousePosition 是 folium 官方封装的一个 Leaflet 外部插件源码位于 folium/plugins/mouse_position.py并从 folium/plugins/init.py 中导出。它的典型应用场景是交互式地图中需要实时读取鼠标所在位置的坐标用于数据核对、坐标拾取、空间分析演示等。官方示例 Notebook 位于 examples/plugin-MousePosition.ipynb对应的用户指南即本文所依据的 docs/user_guide/plugins/mouse_position.md。插件简介与默认行为MousePosition 会在地图上添加一个小型字段控件实时显示鼠标所在位置的坐标。按照插件源码 docstring 的说明它基于 Ardhi Lukianto 编写的 Leaflet.MousePosition 插件MIT 协议封装而成。默认情况下控件显示在地图右下角bottomright坐标格式为“纬度 : 经度”默认分隔符是 : 鼠标尚未移动时显示占位文本Unavailable经纬度默认保留5 位小数默认不添加前缀文本。快速上手创建地图并直接添加 MousePosition 控件即可。最小化用法如下与官方文档保持一致import folium from folium.plugins import MousePosition m folium.Map() MousePosition().add_to(m) m在 Jupyter Notebook / IPython 环境中最后一行m会渲染出地图在地图右下角即可看到实时坐标字段。插件同时加载了 Leaflet 侧所需的 JavaScript 与 CSS 资源因此无需手动引入任何额外脚本。若想在独立的 HTML 文件或 Web 服务中使用只需调用m.save(map.html)或将m._repr_html_()嵌入页面即可控件渲染逻辑完全一致。可配置选项Options详解MousePosition的构造函数签名与各参数默认值可直接从源码 folium/plugins/mouse_position.py 确认。所有参数在实例化时被统一收集到self.options字典中再通过模板序列化为 Leaflet 配置。参数默认值类型说明positionbottomrightstrLeaflet 标准 Control 位置参数决定控件停靠角落separator : str用于分隔纬度和经度值的字符empty_stringUnavailablestr鼠标未移动时显示的初始文本lng_firstFalsebool是否把经度放在纬度之前显示num_digits5int显示的经纬度小数位数prefixstr前置在坐标前面的字符串lat_formatterNonestr自定义格式化纬度的 JavaScript 函数字符串lng_formatterNonestr自定义格式化经度的 JavaScript 函数字符串各参数的行为要点如下position接受 Leaflet 控件标准位置值如topleft、topright、bottomleft、bottomright。num_digits控制默认坐标显示精度十进制小数位。传入较大的值如20可显示近似完整的浮点精度。lng_first默认顺序为“纬度 : 经度”设为True后切换为“经度 : 纬度”。lat_formatter / lng_formatter以字符串形式传入 JavaScript 函数体用于完全自定义经纬度的显示格式。源码中二者在构造时被存入独立属性未提供时分别回退为字符串undefined见 folium/plugins/mouse_position.py即在 JS 侧保持插件默认格式化行为。需要注意的是构造方法中多余的**kwargs也会被收集进options源码 folium/plugins/mouse_position.py因此传入插件底层支持的其他选项同样会被透传到 Leaflet 控件。一个细节None 值的过滤self.options通过remove_empty(...)构建源码 folium/plugins/mouse_position.py。该工具函数定义于 folium/utilities.py实现很简单过滤掉值为None的键避免把空配置项序列化进 HTML。自定义坐标显示格式当默认的“纬度 : 经度”格式无法满足需求时可通过formatter与prefix等参数定制显示效果。官方文档给出的完整示例如下m folium.Map() formatter function(num) {return L.Util.formatNum(num, 3) deg; ;}; MousePosition( positiontopright, separator | , empty_stringNaN, lng_firstTrue, num_digits20, prefixCoordinates:, lat_formatterformatter, lng_formatterformatter, ).add_to(m) m该示例一次演示了大部分自定义能力positiontopright将控件移到右上角separator | 经纬度之间用竖线分隔empty_stringNaN初始占位文本改为NaNlng_firstTrue先显示经度再显示纬度num_digits20保留 20 位小数配合自定义 formatter 时实际精度取决于 formatter 的formatNum第二参数prefixCoordinates:在坐标前加固定前缀lat_formatter/lng_formatter传入同一个 JS 函数将数值格式化为 3 位小数并附加°符号。formatter必须是一段完整的 JavaScript 函数字符串返回一个字符串作为该坐标分量的显示内容。常用写法是借助 Leaflet 的L.Util.formatNum(num, digits)控制小数位数。经纬度可以分别传入不同的 formatter例如只对经度附加E、对纬度附加N等方向标记lat_fmt function(num) {return L.Util.formatNum(num, 4) N;}; lng_fmt function(num) {return L.Util.formatNum(num, 4) E;};源码视角控件是如何渲染到地图上的理解渲染链路有助于排查问题与扩展功能。MousePosition 的类继承结构为JSCSSMixin, MacroElement源码 folium/plugins/mouse_position.py渲染过程包含三个环节资源加载JSCSSMixindefault_js与default_css声明了插件所需的 Leaflet.MousePosition 资源。JSCSSMixin.render见 folium/elements.py会把它们以JavascriptLink/CssLink的形式注入地图页面的head中。源码中这两组资源分别以Control_MousePosition_js与Control_MousePosition_css命名folium/plugins/mouse_position.py通过 jsDelivr CDN 加载官方插件文件。控件实例化模板类内_template模板folium/plugins/mouse_position.py会生成如下 JavaScriptvar 控件变量名 new L.Control.MousePosition(options 对象); 控件变量名.options[latFormatter] lat_formatter; 控件变量名.options[lngFormatter] lng_formatter; 父地图变量名.addControl(控件变量名);即以序列化后的options构造 Leaflet 控件再把两个自定义 formatter 单独写入options最后通过 Leaflet 的map.addControl()挂载到地图上。挂载到父元素add_toMousePosition().add_to(m)走的是 folium 统一的add_child机制——控件作为子元素注册到Map上渲染时模板中this._parent即指向父地图从而获得地图变量名。与其他插件的组合使用MousePosition 是标准的MacroElement可以自由与其他插件叠加。仓库的 Geoman 快照示例 tests/snapshots/modules/geoman_customizations.py 就展示了组合用法from folium.plugins import GeoMan, MousePosition m folium.Map() MousePosition().add_to(m) # ... 其他 Geoman 配置实际开发中常见的组合包括与绘图插件如 Draw搭配用于数字化时实时读取顶点坐标与 GeoMan 搭配用于编辑要素时核对位置或与 MarkerCluster 等定位类插件配合完成坐标拾取工作流。使用建议与注意事项坐标顺序默认显示顺序是“纬度 : 经度”与 GeoJSON / GeoPandas 中常用的“经度, 纬度”顺序不同若需与数据坐标直接对照建议设置lng_firstTrue。小数位数展示坐标仅用于人工读取时可减小num_digits如 3~6需要精细核对时可调大或交给 formatter 统一控制。自定义 formatter 是 JS 字符串Python 端不会校验其语法务必保证函数字符串合法可复用官方示例中的L.Util.formatNum写法。离线环境插件的 JS/CSS 默认从 CDN 加载定义于源码default_js/default_css在完全离线的内网环境中需要自行本地化这两份资源。初始占位文本鼠标尚未在地图上移动时控件显示empty_string指定的内容可用于向用户提示“尚未取到坐标”的状态。小结MousePosition 是一个轻量但实用的 folium 插件一行代码即可获得鼠标实时坐标通过position、separator、num_digits、prefix等参数可快速调整显示方式借助lat_formatter/lng_formatter还能完全自定义坐标文本格式。结合 folium/plugins/mouse_position.py 源码理解其渲染链路CDN 资源注入 → options 序列化 →addControl挂载即可在各种交互式地图场景中放心使用并自行扩展。赞分享数据可视化数据分析GIS【免费下载链接】foliumPython Data. Leaflet.js Maps.项目地址https://gitcode.com/gh_mirrors/fo/folium点击查看免费下载相关推荐folium HeatMap 插件实战用坐标点密度生成交互式热力图folium HeatMap 插件实战用坐标点密度生成交互式热力图 导读 本文围绕 folium 官方插件 HeatMap 展开讲解如何把一批地理坐标以及数据可视化数据分析GIS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考