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

从SQLite3表向folium地图添加标记失败:无显示无报错

解决folium地图不显示标记的问题

我帮你排查出了几个关键问题,咱们一步步来解决:

1. 标记未添加到地图实例(核心原因)

你创建了folium.Marker对象,但没有把它们绑定到你的map实例上!folium需要通过add_to()方法将标记、图层等元素添加到地图中,否则这些元素不会出现在最终的地图里。

2. 关于你遇到的ValueError

错误信息显示你传入了[(-37.7650309, 144.9613659)],这说明你可能错误地把整个查询结果列表(items)当成了单个标记的坐标,而不是遍历每个item。其实fetchall()返回的每个item本身就是(纬度, 经度)的元组,folium完全支持直接用元组作为location参数,不需要额外转列表。

3. 函数未输出/保存地图

你的maps()函数创建了地图,但最后没有返回地图对象,也没有保存为可查看的HTML文件,这会导致你无法看到生成的地图。

修正后的完整代码

import sqlite3
import folium

def maps(): 
    melbourne = (-37.840935, 144.946457) 
    map = folium.Map(location=melbourne) 
    try: 
        sqliteConnection = sqlite3.connect('25july_database.db') 
        cursor = sqliteConnection.cursor() 
        print("Connected to SQLite") 
        sqlite_select_query = """SELECT latitude, longitude FROM test555;""" 
        cursor.execute(sqlite_select_query) 
        items = cursor.fetchall() 
        # 遍历每个坐标元组,创建标记并添加到地图
        for item in items:
            # 确保坐标是合法的数值(可选,用于排查数据问题)
            if isinstance(item[0], (int, float)) and isinstance(item[1], (int, float)):
                folium.Marker(location=item).add_to(map)
            else:
                print(f"无效的坐标数据: {item}")
        cursor.close() 
    except sqlite3.Error as error: 
        print("Failed to read data from sqlite table", error) 
    finally: 
        if sqliteConnection: 
            sqliteConnection.close() 
            print("The SQLite connection is closed")
    # 保存地图为HTML文件,这样你就能在浏览器中打开查看
    map.save('melbourne_map.html')
    # 也可以返回地图对象,方便在其他地方使用
    return map

# 调用函数生成地图
maps()

额外排查建议

  • 检查test555表中的latitude和longitude字段是否存储了有效的数值,有没有空值或字符串类型的数据(如果是字符串需要转成float)。
  • 运行代码后,打开生成的melbourne_map.html文件,就能看到带有标记的地图了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:12:45