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

添加Leaflet-Ruler插件失败:出现Uncaught ReferenceError: map is not defined错误

错误原因与解决办法

错误原因

Uncaught ReferenceError: map is not defined 的核心问题是:你在自定义JS代码中直接使用全局变量map,但Folium生成的Leaflet地图实例并非以此命名,JS无法找到对应的地图对象。

解决办法

1. 使用Folium地图的正确变量名

Folium的地图对象m提供了get_name()方法,该方法会返回地图实例在JS中的真实变量名(格式通常为map_xxxxxx)。将自定义JS中的map替换为这个变量名即可。

2. 移除重复的Leaflet基础库引入

Folium默认已经加载了Leaflet的核心CSS和JS文件,重复引入会导致版本冲突或冗余加载,建议移除这部分代码。

修正后的完整代码

# 加载leaflet-ruler的样式和脚本
m.get_root().header.add_child(folium.CssLink("https://cdn.rawgit.com/gokertanrisever/leaflet-ruler/master/src/leaflet-ruler.css"))
m.get_root().html.add_child(folium.JavascriptLink("https://cdn.rawgit.com/gokertanrisever/leaflet-ruler/master/src/leaflet-ruler.js"))

# 使用Folium地图的正确变量名初始化标尺控件
my_js = f'''
L.control.ruler().addTo({m.get_name()});
'''
m.get_root().script.add_child(folium.Element(my_js))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:47:38