类型转换与回退
动态库、桌面和网页使用同一个求值器。to-number和to-color按顺序转换候选,首个成功结果短路;全部失败则报错。候选表达式自身出错会终止求值,paint沿用默认值与警告规则。
map.setPaintProperty('points', 'circle-radius',
['to-number', ['get', 'radius'], 12]);
map.setPaintProperty('points', 'circle-color',
['to-color', ['get', 'color'], ['literal', [0, 128, 255, 0.5]]]);
await map.sqs.flush({ render: true });
to-number将null/false转换为0、true为1;空串/纯空白为0,支持带空白的十进制、指数和无符号0x/0b/0o。数组/对象不能转换。Infinity/NaN/溢出值不进入样式,会尝试后续候选;不承诺完整ECMAScript非有限数语义。
to-color接受有效CSS字符串或RGB(A)数组,RGB须为0~255有限数,透明度须为0~1,三元素默认透明度1。结果保持当前CSS字符串颜色表示,typeof仍为string。to-boolean仍将null/false/0/空串转为false,其余为true。
语法参考MapLibre类型转换规范,实现为SqsMap自研。原始SDK用view.flush();实际设备验收单独记录。