跳到主要内容

共同符号的缺图事件与SDF染色

平面共同symbol已接通styleimagemissing:只收集当前可见点、可见图层和非零size/opacity的图片需求,同名去重;通知带图片id和styleGeneration。补图后再删除、离开需求后再次进入或更换样式代,可以重新通知。样式底图和共同图层使用同一个有界通知集合,最多128个缺失名称;输出/事件预算失败不会提前确认。监听器可以addImage补图,停止/取消订阅/销毁释放监听。

import {map} from 'sqsmap';
export const sessionMode='persistent';
const subscription=map.on('styleimagemissing',async event=>{
 if(event.id!=='marker')return;
 map.addImage(event.id,{width:16,height:16,
  data:Array.from({length:256},()=>[0,0,0,255]).flat()},{sdf:true});
 await map.sqs.flush();
});
map.addSource('points',{type:'geojson',data:{type:'Feature',
 properties:{},geometry:{type:'Point',coordinates:[0,0]}}});
map.addLayer({id:'icons',type:'symbol',source:'points',layout:{
 'icon-image':'marker','icon-allow-overlap':true,'icon-ignore-placement':true
},paint:{'icon-color':'#ff0000','icon-opacity':0.8}});
await map.sqs.flush({render:true});
// 用完调用subscription.unsubscribe();脚本停止也会释放。

SDF图片使用alpha距离场,边界0.5,并按屏幕导数平滑。icon-color支持共同paint表达式、属性/状态/zoom,只对sdf:true图片重染;普通RGBA图片保留原颜色。颜色alpha与icon-opacity组合一次,零最终alpha没有查询命中。updateImage保留SDF/pixelRatio和身份;距离场像素变化刷新真实画面。透明图片区域的查询仍采用图片矩形足迹,并非逐像素mask检测。

原生持续脚本、网页主线程/严格Worker和桌面宿主接入同一规则;移动宿主未接入。commonPointIconSDF/commonPointIconMissingImages为true。字体/碰撞/线布局、球面/倾斜及共同raster组合继续未完成。完整HTML包含全部图片/颜色/缺图事件和11个按钮处理,共同持续脚本演示事件补图。示例图片和点自行生成。