跳到主要内容

二维实线平移

line-translate整体移动实线,map和viewport锚点控制旋转关系

当前匹配SDK提供commonLineGradients时,lineMetrics:true的非cluster GeoJSON渐变通道支持本页稳定cap/join、filter/sort与offset/translate组合。下述历史solid/动画通道中的gradient拒绝限制不表示新渐变通道拒绝这些组合;须查询匹配能力并查看线渐变指南,其余未实现组合仍拒绝。

共同二维实线的paint属性line-translate默认[0,0],值为两个有限数值的CSS像素。正x向右、正y向下。line-translate-anchor默认map,可取map或viewport;能力名commonLineTranslateSolid。

map锚点随地图旋转:方位角90°时[0,12]向屏幕右侧移动12像素。viewport锚点始终以屏幕方向平移,同一个向量仍向下移动12像素。整个已偏移的线及其端帽、连接、面环与洞共同移动;原始源坐标和身份不变。DPR只在绘制物理像素时换算一次。

import { map } from 'sqsmap';
map.setStyle(null);
await map.sqs.flush();
map.setProjection({type:'mercator'});
map.jumpTo({center:[116.4,39.9], zoom:13, pitch:0, bearing:30});
await map.sqs.flush();
map.addSource('route', {type:'geojson', data:{type:'Feature', id:1, properties:{},
  geometry:{type:'LineString',coordinates:[[116.38,39.9],[116.42,39.9]]}}});
map.addLayer({id:'route', type:'line', source:'route', paint:{
  'line-color':'#1677ff', 'line-width':6,
  'line-translate':[0,12], 'line-translate-anchor':'viewport'
}});
await map.sqs.flush({render:true});
map.setGlobalStateProperty('shift',[12,0]);
map.setPaintProperty('route','line-translate',['global-state','shift']);
await map.sqs.flush({render:true});

两个属性均为全图层统一值,支持常量、global-state、已有类型/词法/惰性组合与连续zoom。line-translate可用['interpolate',['linear'],['zoom'],10,['literal',[0,8]],11,['literal',[0,16]]]。读取要素属性或feature-state的表达式暂不支持。显式对象形式(例如['get','shift',['global-state','uniform']])仍是统一表达式,可从全局对象取向量。移除paint属性用null恢复默认值。

项目预算为平移每分量绝对值不超过128 CSS像素;叠加端帽、连接和line-offset后的实际顶点总挤出不超过2048 CSS像素。地图旋转不会额外缩小允许的对角向量。超出预算明确失败,不钳制为看似成功;这些是SqsMap边界,不是MapLibre规范限制。

实际非零平移暂不接通dash、gradient、animation、pitch/3D、globe或media组合;零平移保留原路与原边界。平移可与已接通的实线line-offset、端帽/连接和排序组合。

屏幕查询先按本层实际平移反变换,再沿用原查询与保守偏移包络。queryRenderedFeatures可能命中附近未着色像素,不是逐像素拾取;source ID、feature ID、属性、filter及MVT逻辑身份不因平移改变。原视口外移入的几何和所需瓦片仍须纳入覆盖与资源预算,不能仅移动原来已显示的片段。

错误向量、锚点、未接通组合或预算失败应保留旧相机、全局值、源、画面及身份;未读取的未来分支保持惰性,实际进入分支再检查结果预算。

共同脚本与完整网页包含正负方向、旋转锚点、连续zoom、回滚及视口外移入的实际像素验收。项目核心d72b6eb6已通过6项CPU、1个串行实际GPU,以及同一36项脚本的Linux动态库/网页主线程/Worker实际像素验收;上一阶段偏移30项在三路径继续通过。匹配SDK/WASM已核验,版本与归档SHA见SDK验收。设备、外机和正式发行另行验收。

语义参考MapLibre官方平移规范,SqsMap独立实现。