跳到主要内容

具备 commonLineSymbols 的匹配开发SDK还支持共同二维沿线图文:真实逐字弯线路径、目标归属、图文组合及共同预算。下文早期点符号范围与尚待沿线事项,应按此有限子集理解;复杂整形、倾斜/球面/地形与完整道路拼接仍待完成。

共同点文字标注

标准symbol平面Point/MultiPoint/MVT点已支持普通中英文字。text-field为字符串或共同字符串表达式;text-size为0..256 CSS像素或共同数字表达式,默认16;text-anchor支持九个标准锚点,默认center;text-offset为两个em数值,text-rotate为-360..360度数值或共同数字表达式。text-color/text-opacity复用共同属性、状态与zoom paint表达式。text-allow-overlap/text-ignore-placement默认false,text-padding默认2,文字整体参与共同碰撞与排序;查询检查已放置的整体文字矩形。图片和文字支持同层联合放置。

import {map} from 'sqsmap';
map.addSource('points',{type:'geojson',data:{type:'Feature',id:1,
 properties:{name:'Sqs地图'},geometry:{type:'Point',coordinates:[0,0]}}});
map.addLayer({id:'labels',type:'symbol',source:'points',layout:{
 'text-field':['get','name'],'text-size':18,'text-anchor':'center'
},paint:{'text-color':'#ff0000','text-opacity':1}});
await map.sqs.flush({render:true});
map.setLayoutProperty('labels','text-offset',[1,0]);
map.setPaintProperty('labels','text-color','#00ff00');
await map.sqs.flush({render:true});

复用既有字形图集/排版与HarmonyOS Sans SC内置字体(24px字形,SDF边界约192/255),实际字体在原生/WASM一致。text-font可保存1至8个有序字体名称;未设置外部字形服务时使用内置字体回退;外部字形服务已接通,使用实际返回字形。复杂排版、更多文字参数、沿线及三维/raster组合继续后续;同层图文组合已接通;内置字体缺字明确拒绝,保留旧图层。控件语言与数据文字/字体独立。

字体使用独立R8图集,保留用户图片图集与登记预算;字形不占listImages和图源计数。每条最多256字符/4096字节,每图点符号16K、字形四边形65536、不同字形8192(还受2048图集容量限制);隐藏缓存也纳入预算。字形缓存复用,字号/旋转/锚点/偏移、源/状态更新和真实视口/密度触发共同布局;颜色alpha与opacity只组合一次,零最终alpha无查询命中。08.12初始固定排版已由下面08.13参数替代,不声明完整MapLibre整形兼容。

commonPointTextLabels=true、commonTextExternalGlyphDemand=true。原生、WASM主线程/严格Worker及桌面接线已实现,移动宿主和新文字桌面GUI/外机验证仍待完成。完整HTML包含全部文字控件处理,共同脚本使用同一接口。示例点自行生成;字体许可随发行包第三方声明提供。

可调文字排版(08.13)

text-max-width默认10em,范围0..256;0关闭自动换行,显式换行符继续有效。text-line-height默认1.2em,范围0..256;text-letter-spacing默认0em,范围-16..256。text-justify为center(默认)/left/right/auto;auto按当前text-anchor的左右位置对齐。text-transform为none(默认)/uppercase/lowercase,使用Unicode大小写转换,转换后计算长度和字形预算。

text-size、text-rotate及以上三个数字排版参数支持共同数字表达式(属性或zoom),逐要素校验最终有限数值和范围;text-padding仍是0..128常量。变更更新真实文字四边形、整体碰撞和查询。按实际字形宽度先整体放置空白分隔的单词;超宽单词按字形回退,CJK按字形,显式换行保留。不是完整Unicode断行或平衡排版算法。复杂整形、双向文字、其余富文本类型和字体文件仍待实施;format文本段已支持不同字号与颜色,见分段富文本。外部PBF字形服务已接通。

map.setLayoutProperty('labels','text-max-width',10);
map.setLayoutProperty('labels','text-line-height',1.5);
map.setLayoutProperty('labels','text-letter-spacing',0.1);
map.setLayoutProperty('labels','text-justify','center');
map.setLayoutProperty('labels','text-transform','uppercase');
map.setLayoutProperty('labels','text-size',['interpolate',['linear'],['zoom'],0,12,10,24]);
await map.sqs.flush({render:true});

参数名称、单位和默认值参考MapLibre样式规范,执行和排版代码由SqsMap共享核心实现。旧标签入口保留原行为。完整HTML示例包含所有按钮处理函数;独立SDK使用map.flush,脚本使用map.sqs.flush。

文字偏移数组表达式支持属性/全局状态和semiliteral,原有常量保持有效。

08.36:text-anchor、text-justify、text-transform均接受字符串表达式,逐要素计算属性/全局状态,并刷新同一绘制/碰撞/查询布局。非法枚举或类型拒绝候选;layout仍不接受feature-state。文字枚举指南。