Folium无法调用CircleMaker功能的技术求助
解决Folium无法调用CircleMaker的问题
问题根源
你遇到的AttributeError是因为Folium库中不存在CircleMaker这个类,属于API名称拼写错误,正确的类名是CircleMarker(用于绘制以像素为单位半径的标记点);如果需要绘制以实际米数为半径的圆形,则使用Circle。
修正后的代码
结合你的WiFi点位绘制需求,使用CircleMarker更合适,同时修正popup的格式(不能直接传列表,需要转为字符串或folium.Popup对象):
import folium import pandas as pd # 假设df是你的目标数据框 mymap = folium.Map(location=[df.CurrentLatitude.mean(), df.CurrentLongitude.mean()], zoom_start=12) for coord in df[['CurrentLatitude','CurrentLongitude','SSID','Type','MAC']].values: if coord[3] == 'WIFI': # 格式化弹窗内容,用HTML换行提升可读性 popup_content = f"SSID: {coord[2]}<br>BSSID: {coord[4]}" folium.CircleMarker( location=[coord[0], coord[1]], radius=3, # 适当调大半径,让标记更易识别 color='red', fill=True, fill_color='red', popup=folium.Popup(popup_content, max_width=300) ).add_to(mymap) mymap.save('test_one.html')
关键改动说明
- API名称修正:将
folium.CircleMaker替换为folium.CircleMarker,这是Folium官方支持的标记点类 - Popup格式修正:把原代码中的列表参数改为HTML格式化字符串,并用
folium.Popup包装,优化弹窗显示效果 - 标记可见性优化:添加
fill=True和fill_color参数,适当调大radius,让WiFi点位标记更清晰
补充说明
- 若要绘制随地图缩放保持实际距离的圆形(比如WiFi覆盖范围),可使用
folium.Circle,它的radius参数单位为米 - 确认Folium版本:执行
pip show folium查看当前版本,最新版API已统一使用CircleMarker,无需旧版本的路径调用
内容的提问来源于stack exchange,提问作者David Cannan
相关产品推荐
相关产品推荐

