共同 MVT 图层与查询
vector图源现在通过标准addSource/addLayer显示circle、line、fill,图层必须指定source-layer。同一源的多层共享下载和缓存;平面、倾斜和球面使用共同绘制数据。二维绘制按逻辑图层顺序交错面/线/点,moveLayer可以把面移到点上方,空间格裁剪及LOD继续使用。
import {map} from 'sqsmap';
map.addSource('roads',{type:'vector',tiles:['https://your-server.example/{z}/{x}/{y}.pbf'],attribution:'Your provider'});
map.addLayer({id:'roads-line',type:'line',source:'roads','source-layer':'transportation',paint:{'line-color':'#e87925','line-width':3}});
await map.sqs.flush({render:true});
console.log(await map.querySourceFeatures('roads',{sourceLayer:'transportation'}));
请求和取消沿用共同瓦片调度,支持TileJSON、setTiles/setUrl、XYZ/TMS、世界副本与来源声明。每响应8MiB MVT;每瓦片32个子层、5万要素、50万顶点。每图最多64个可见瓦片、32个待处理请求、64MiB解码瓦片缓存;可见源数据另受16MiB JSON、5万要素、50万坐标及地图源驻留预算限制。超预算明确失败,更新失败保留旧图。当前不做父子补位,也不把缓存内未显示的瓦片加入查询。
querySourceFeatures要求sourceLayer;queryRenderedFeatures按图层筛选并返回sourceLayer、原MVT id和属性,坐标为WGS84,经度包括可见世界副本。原生/共同脚本读操作使用await;同一个要素跨瓦片或世界副本可能出现多次。GeoJSON、媒体源不可传source-layer。metadataLoaded是元数据状态,tileState和loaded描述当前视图的实际就绪情况。
能力vectorTileSourceStore为true仅代表上述MVT子集,不表示完整矢量样式兼容。共同点图片/文字symbol与promoteId已由后续阶段接通;fill-extrusion等其它类型、缓冲几何瓦片边界裁剪、MLT、父子补位和移动宿主仍待接通。现有setStyle(URL)底图的能力保持其独立文档范围。
完整HTML含全部按钮、查询、署名及销毁;共同验收脚本使用本地生成MVT,通过真实原生QuickJS和WASM主线程/严格Worker。真实服务须替换模板并展示提供方要求的署名。
倾斜视图沿用已有距离雾效果,远处颜色会接近背景色;验收记录保留实际像素,不能按纯色值评价雾后的画面。
MVT要素状态已由07.9接通,详见要素状态。
共同MVT的promoteId(07.10)
vector图源可指定promoteId为字段名,或者sourceLayer到字段名的映射。字符串形式对所有子层应用同一字段;映射形式只覆盖列出的子层,其它子层保留原MVT ID。指定字段缺失或null时移除原ID;有效ID为字符串或JavaScript安全范围内的有限数字,非法值让当前瓦片加载失败,候选内容不部分发布。源查询、渲染查询和sourceLayer限定的要素状态使用映射后的ID;跨瓦片几何片段仍分别返回,不声明几何合并去重。
map.addSource('vector',{type:'vector',tiles:['https://your.example/{z}/{x}/{y}.pbf'],
promoteId:{places:'name'}});
map.addLayer({id:'places',type:'circle',source:'vector','source-layer':'places',
paint:{'circle-color':['case',['coalesce',['feature-state','selected'],false],'#ff00ff','#0000ff']}});
map.setFeatureState({source:'vector',sourceLayer:'places',id:'实际名称'},{selected:true});
await map.sqs.flush({render:true});
字段与ID须来自自己的数据,示例不假定服务商字段名。配置随setTiles/setUrl保留,可从map.sqs.getSourceInfo读取promoteId。共同addSource/addLayer及内联共同Style JSON已接通;独立setStyle(URL)底图路径仍明确拒绝promoteId,TileJSON不覆盖此源选项。语法参考MapLibre图源规范,由SqsMap共享核心执行。完整HTML使用自生成瓦片和字符串ID,包含全部按钮事件。
volatile与持久缓存(07.11)
共同vector/raster图源支持volatile布尔值,默认false。true让瓦片传输强制no-store,优先于地图cache配置和网页transformRequest提供的缓存选项;桌面不读取或写入该请求的磁盘缓存,并发送Cache-Control:no-store。原生动态库的requestPlan.cache为no-store,宿主应按计划执行传输。map.sqs.getSourceInfo返回的tileMetadata.volatile为实际配置,setTiles/setUrl保留它。
map.addSource('tiles',{type:'vector',tiles:['https://your.example/{z}/{x}/{y}.pbf'],volatile:true});
这允许保留受预算约束的解码/绘制内存,不代表每帧重新下载、自动刷新或实时订阅。取消、重试和转发仍使用共同资源规则;桌面共同瓦片已按Tile类别应用专用规则。共同内联Style JSON和addSource已接通;独立setStyle(URL)路径暂仍明确拒绝volatile:true。名称参考MapLibre图源规范,网页与原生的持久缓存执行行为由SqsMap定义。完整HTML使用自生成瓦片,包含全部操作代码。