tuqin
3 天以前 ac695f6b977351916edbf16b7cd34ce8b6790adb
分支
用户 tuqin <tuqin@tuqin.cn>
星期四, 十一月 5, 2026 17:47 +0800
提交者 tuqin <tuqin@tuqin.cn>
星期四, 十一月 5, 2026 17:47 +0800
提交ac695f6b977351916edbf16b7cd34ce8b6790adb
目录 7676d3cea992561ac18896ed486b1097026bcddb 目录 | zip | gz
上一版本 abfe3ffe5f6d161f2a6466c8bdbcbc17de1e64b6 查看 | 对比
fix(map): 改用百度地图 v1.4(普通 PNG 瓦片),瓦片实测 12KB 真实地图

诊断页第 9 块定位到两个新事实:
1) 即使 v2.0 的 SDK,瓦片请求仍是 qt=vtile(矢量)且 v=2.1,
而矢量瓦片当前 ak 未授权,实测直连百度全部 403。
2) 瓦片协议仍是 https://<host>:9023,而该端口没有 SSL,必然 0 字节。

逐版本实测瓦片接口(同一坐标、同一 ak):
qt=vtile (v2.0/2.1/3.0) -> 403 / 152B ❌ 矢量瓦片未授权
qt=tile (v2.0/2.1/3.0) -> 200 / 12013B ✅ 普通 PNG 瓦片正常

v1.4 的关键差异(源码可见):
var streetLayer = new TileLayer({"transparentPng": true});
streetLayer["getTilesUrl"] = ... + "?qt=tile&x=...&styles=sl"
var TILE_ONLINE_URLS = [
"http://maponline0.bdimg.com/tile/", ... "http://maponline3.bdimg.com/tile/"
];
var BMap = window["BMap"] || {}; BMap.version = "1.4";
即:v1.4 主图层用的就是 qt=tile,且域名是完整 http:// URL,
改写后协议自动跟随页面(用 window.location.origin),彻底避开 https 问题。

新增 scripts/fix-bmap-sdk-v14.mjs,重写 public/bmap-sdk2d.js 为 v1.4 改写产物:
4 个瓦片域名 -> window.location.origin + /bmap-tileN/tile/
api/images/getmodules 等 -> window.location.origin + /bmap-api/...
共 14 处替换,语法 OK,BMap.version=1.4,144KB(比 875KB 的 GL 版小得多)
残留 8 处为卫星图(shangetu*)/路况(its.map)/统计(dlswbr)/帮助链接(lbsyun),不影响街道地图。

实测:
/bmap-sdk2d.js HTTP 200 / 147379B / 0.79s
/bmap-tile0/tile/?qt=tile&x=2381&y=1320&z=14&styles=sl
HTTP 200 / 12785B(真实地图瓦片)
已添加1个文件
已修改1个文件
82 ■■■■■ 文件已修改
public/bmap-sdk2d.js 2 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
scripts/fix-bmap-sdk-v14.mjs 80 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史