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

Folium调用add_child添加CircleMarker时location参数报错

问题根因

报错出在CircleMarker的location参数类型不符合Folium的校验规则。
你通过data[['LAT','LON']].values拿到的是NumPy ndarray数组,数组内的元素是NumPy自定义的float64类型,不是Python原生浮点数。哪怕打印出来的数值和格式看起来和要求的[纬度, 经度]列表完全一致,Folium无法识别NumPy类型的序列和数值,就会抛出参数相关错误。

修复方案

两种改法二选一即可:

  • 方案1:将NumPy数组转为Python原生列表,在.values后追加.tolist()方法即可,对应代码修改为:
fg_volcanoes.add_child(folium.CircleMarker(location=data[['LAT','LON']].values.tolist(),
                                                    radius=6,
                                                    popup=f"{data['ELEV']} mts",
                                                    fill_color='green' if data['ELEV'] < 1000 else 'orange' if data['ELEV'] < 3000 else 'red', 
                                                    color="grey",
                                                    fill_opacity=1))
  • 方案2:手动取字段值转为原生浮点后拼接列表,不依赖.values属性:
location=[float(data['LAT']), float(data['LON'])]
额外遗漏修复

你的代码里创建完fg_volcanoes要素组、循环添加完火山标记后,没有把该要素组添加到地图实例中,修复完类型问题后记得补加一行代码,否则火山标记不会在最终生成的地图里显示:

map.add_child(fg_volcanoes)

补加位置放在map.add_child(fg.LayerControl())这行之前即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:24:28