You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python为多个Folium Marker添加点击事件函数

解决方案

因为Folium生成的Marker代码是嵌入在<script>标签内的JavaScript字符串,Beautiful Soup更适合处理HTML DOM结构,对这类JS代码片段的批量修改,用正则表达式会更直接高效。

具体实现步骤

  • 读取原HTML文件的全部内容
  • 定义正则匹配规则,定位每个Marker的.addTo(map_xxxx)结尾部分
  • 将匹配到的内容替换为追加了点击事件的代码
  • 把修改后的内容写入新的HTML文件

代码示例

import re

# 定义要追加的点击事件代码
click_event = '''.on('click', function(e) {
     var point = e.latlng;

     document.querySelector('meta[name="point"]').setAttribute("content", point);
})'''

# 读取原HTML文件
with open('original_map.html', 'r', encoding='utf-8') as f:
    html_content = f.read()

# 正则匹配Marker的addTo语句,适配Folium自动生成的随机地图ID
pattern = re.compile(r'(\.addTo\(map_[a-f0-9]+\);)')

# 执行替换,保证JS语法正确
modified_content = pattern.sub(lambda m: m.group(0).rstrip(';') + click_event + ';', html_content)

# 写入修改后的HTML文件
with open('modified_map.html', 'w', encoding='utf-8') as f:
    f.write(modified_content)

说明

  • 正则表达式(\.addTo\(map_[a-f0-9]+\);)精准匹配Folium生成的Marker专属.addTo(map_xxxx);结构,覆盖所有自动生成的随机地图ID
  • 替换时先移除原语句末尾的分号,追加点击事件后再补回分号,避免出现JS语法错误
  • 该方法会扫描整个HTML文件内容,自动匹配所有符合规则的Marker代码,无需单独定位script标签

内容的提问来源于stack exchange,提问作者wbleakley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:46:18