百度地图仅支持通过<iframe>嵌入静态快照,不提供交互式JS插件;需从官网分享功能获取代码,手动适配表格布局,并注意Referer限制和HTTPS部署要求。

用 <iframe> 嵌入百度地图,不是“插件”,而是公开的静态地图 URL
百度地图没有提供可直接嵌入 HTML 表格的 JS 插件(类似高德的 AMap),官方只开放了基于 <iframe> 的静态地图快照服务。所谓“插件”是常见误解——你实际能用的,是百度地图官网生成的分享链接转成的 <iframe>。
关键点:这个 iframe 不支持交互(不能拖拽、缩放、点击标记),仅作展示;且必须通过百度地图网页版手动获取,不能用 API Key 动态生成。
- 打开 百度地图网页版,搜索目标地点(如“北京中关村”)
- 点击右上角「分享」→ 选择「嵌入网页」→ 复制生成的
<iframe>代码 - 该代码默认宽高固定(如
width="600"、height="450"),需手动调整以适配表格单元格 - 注意 URL 中含
ie=utf-8和newmap=1等参数,删掉可能触发重定向或白屏
放进 <table> 时,<iframe> 宽高必须设为百分比或配合 table-layout: fixed
直接把默认宽高的 <iframe> 放进 <td>,极易撑破表格、出现横向滚动条,尤其在小屏幕或响应式布局中。
正确做法是让 iframe 自适应父容器宽度,同时控制高度比例(推荐 16:9 或 4:3):
立即学习“前端免费学习笔记(深入)”;
- 给包裹
<iframe>的<td>加style="width: 300px;"(定宽)或style="width: 100%;"(流式) -
<iframe>自身设width="100%",height="0",再用padding-bottom: 56.25%(16:9)+position: relative+ 内层position: absolute实现响应式比例(即“padding-top 技巧”) - 或者更简单:对整张表加
style="table-layout: fixed; width: 100%;",再给该列<td>设width="30%",iframe 用width="100%" height="200px"
百度 iframe 地图不支持 HTTPS 页面外链?其实是 Referer 限制导致白屏
本地文件(file://)或某些内网环境打开含百度 iframe 的页面,会白屏并控制台报错:Refused to display 'https://www.php.cn/link/128482b5773c09ed87e7630fd24d9e6f/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN' —— 这不是 HTTPS 问题,而是百度禁止非 map.baidu.com 域名嵌入。
这意味着:
- 开发阶段用
http-server、live-server或 Nginx 启服务才能预览,不能双击 HTML 打开 - 部署到域名 A,但 iframe 源是百度地图,只要百度没封该域名(一般不会),就可正常显示
- 企业级应用若需完全可控,应放弃 iframe,改用百度地图 JavaScript API(需申请密钥、写 JS 初始化
BMapGL.Map)
替代方案:真要交互能力,必须用百度地图 JS API + <div>,不能靠 <iframe>
如果需求是点击标记、路线规划、覆盖物绘制,<iframe> 从根源上做不到。此时必须引入百度地图 JS SDK,并在表格单元格里放一个 <div id="map-container">:
- 在
<head>加百度 API:<script src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=YOUR_AK"></script> -
<td>内放<div id="map" style="width:100%;height:300px;"></div> - JS 中用
new BMapGL.Map("map")初始化,注意 Web GL 版本(type=webgl)要求浏览器支持,旧项目可用type=2d - 表格单元格需有明确宽高(
height: 300px),否则地图容器渲染为空
这一步绕不开密钥申请和 DOM 就绪时机控制——document.getElementById("map") 必须存在,且最好等 window.onload 或 DOMContentLoaded 后再初始化地图。



















