富文本变量与分支
具备 commonLineSymbols 的匹配开发SDK还支持共同二维沿线图文:真实逐字弯线路径、目标归属、图文组合及共同预算。下文早期点符号范围与尚待沿线事项,应按此有限子集理解;复杂整形、倾斜/球面/地形与完整道路拼接仍待完成。
共同点文字支持 let、var、match、case 与 coalesce 组合返回普通字符串或格式值。格式变量保留各段的真实字号和颜色,不先转成字符串。普通数字、字符串变量仍可用于段内容和样式选项。
map.setLayoutProperty('formatted', 'text-field', [
'let', 'scale', 1.5,
['let', 'label',
['format', ['get', 'name'],
{'font-scale': ['var', 'scale'], 'text-color': 'red'},
' BB', {'font-scale': 0.5, 'text-color': 'blue'}],
['match', ['get', 'mode'],
['primary', 'selected'], ['var', 'label'],
['coalesce', ['get', 'fallback'], ['var', 'label']]
]
]
]);
await map.sqs.flush({render: true});
以上假定已有点图源和 formatted 文字图层,以及 name、mode、fallback 属性;完整基础见分段富文本标注。共同能力 commonFormattedTextScopes 表示这些作用域与分支已接通。
let 的每个绑定捕获进入本次 let 前的父环境,只有使用 var 时才求值。同级绑定不能互相引用新声明的名称,需像示例那样嵌套。后续内层声明同名变量,不会改变已经捕获父环境的格式值。未使用的合法表达式绑定不会提前求值;变量名和类型仍会预先校验。
match 支持数字或字符串标签及标签数组,只计算命中的返回分支。coalesce 跳过实际 null,包括 case 或 match 返回的 null;空字符串和空格式值都不会触发回退。格式变量不能作为字号、布尔条件或普通字符串运算输入,这类用法明确报错。
一份文字求值中的控制流、变量展开和段内表达式共享8192步/64层预算。既有32段、256字符/4096字节及字号/字形预算继续适用;失败更新保留之前的标签和画面。段内字体栈已接通PBF路径;注册RGBA图片段已接通;SDF图片段、字体文件、复杂文字整形、沿线和三维组合仍未完成。
可复制的完整验收脚本见portable-format-scope.js,浏览器完整页面见formatted-scope-check.html。相同脚本在原生、网页主线程和普通渲染 Worker 各通过11项及真实双色字号像素检查。