分支
用户 tuqin <tuqin@tuqin.cn>
星期四, 十一月 5, 2026 17:39 +0800
提交者 tuqin <tuqin@tuqin.cn>
星期四, 十一月 5, 2026 17:39 +0800
提交d4b2a08312952009ea1786db7dafc96f6c1e33a3
目录 20c3e6f08fc5c88020bcff89ddb94bfac2aecef7 目录 | zip | gz
上一版本 f2416683bc31c1e9e77c7123ef350e8df32d016d 查看 | 对比
fix(map): 换用百度地图 v2.0(普通瓦片),并修掉 BMAP_PROTOCOL 写死 https 的致命 bug

诊断页第 9 块给出两个决定性证据:

1) 瓦片请求全为 0 字节且协议是 https
[?] 0B https://36.213.150.237:9023/bmap-tile2/tile/?qt=vtile&...
根因:之前为「修复协议」把 window.BMAP_PROTOCOL 写死成 'https',
而站点是 http、9023 端口没有 SSL,于是瓦片全部连不上(0 字节)。
实测:同 URL 用 http 请求正常,用 https 请求直接失败。
修复:BMAP_PROTOCOL 改为跟随 window.location.protocol。

2) v3.0 用矢量瓦片 qt=vtile,该接口未授权
实测直连百度:
qt=tile -> 200 / 13382B / 真实 256x256 PNG ✅
qt=vtile -> 403 / 152B ❌
矢量瓦片需要单独申请授权,当前 ak 没有,所以 v3.0 一定白板。
v2.0 主瓦片用的就是 qt=tile,改用 v2.0。

新增 scripts/fix-bmap-sdk.mjs:SDK 改写脚本(逐条替换 + 每步语法校验 + 失败自动回滚)。
重写 public/bmap-sdk2d.js 为 v2.0 改写产物:
"//api.map.baidu.com -> "//" + window.location.host + "/bmap-api
"apimaponline0-3.bdimg.com" -> (window.location.host + "/bmap-tile0-3")
瓦片 12 处、API 1 处,语法 OK,主瓦片为 qt=tile
(卫星图 apimaponlineN/starpic 4 处未改写,普通地图不使用)
已添加1个文件
已修改3个文件
117 ■■■■■ 文件已修改
public/bmap-sdk2d.js 2 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
public/bmap-test.html 49 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
scripts/fix-bmap-sdk.mjs 64 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
src/components/map/src/utils.ts 2 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史