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

如何在Streamlit中打开gmplot生成的HTML文件?嵌入失败求助

解决gmplot生成的HTML嵌入Streamlit显示空白的问题

以下是几个排查和解决的方向:

1. 确认gmplot生成时已配置有效Google Maps API密钥

gmplot依赖Google Maps JavaScript API,未传入密钥会导致地图无法加载。生成地图时必须指定API密钥:

import gmplot
# 替换为你的有效Google Maps API密钥
gmap = gmplot.GoogleMapPlotter(37.766956, -122.438481, 13, apikey="YOUR_VALID_API_KEY")
# 执行标记绘制等操作
gmap.draw("maps.html")

2. 调整Streamlit组件的沙箱权限

Streamlit的st.components.v1.html默认沙箱限制可能阻止了Google Maps脚本执行,尝试放宽沙箱权限:

import streamlit as st

with open("maps.html", "r") as file:
    html_content = file.read()

st.components.v1.html(
    html_content, 
    height=600, 
    scrolling=True,
    # 放宽沙箱权限以允许脚本执行
    sandbox="allow-scripts allow-same-origin allow-popups"
)

注意:放宽沙箱存在安全风险,仅在本地开发或可信环境中使用。

3. 先验证HTML文件本身是否正常

直接在本地浏览器中打开maps.html,如果浏览器中也显示空白,说明问题出在gmplot的生成环节,而非Streamlit嵌入:

  • 检查API密钥是否有效
  • 确认gmplot的绘制逻辑正确(如标记、坐标是否合理)

如果本地浏览器能正常显示,打开Streamlit页面的开发者工具(F12)查看Console标签,排查脚本加载的具体错误信息。

4. 替代方案:使用iframe加载本地HTML

若直接嵌入HTML内容仍有问题,可尝试用iframe指向本地文件路径:

import streamlit as st
from pathlib import Path

# 获取HTML文件的绝对路径
current_dir = Path(__file__).parent if "__file__" in locals() else Path.cwd()
html_path = str(current_dir / "maps.html")

st.markdown(f"""
<iframe src="{html_path}" width="100%" height="600" frameborder="0"></iframe>
""", unsafe_allow_html=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:26:16