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 处未改写,普通地图不使用)