地形上的建筑
共同 fill-extrusion 图层可与 setTerrain 组合。GeoJSON和MVT使用相同建筑网格;每个Polygon按其外框中心的已显示地形三角面高度整体抬升,MultiPolygon部件分别处理。屋顶、外墙、孔洞内壁及颜色保持一致。地形数据缺失时对应部件暂不显示,不使用零地面补位。
// 图源由用户提供;terrain需为raster-dem,buildings需为面图源。
map.setTerrain({ source: 'terrain', exaggeration: 2 });
map.addLayer({ id: 'buildings', type: 'fill-extrusion', source: 'buildings',
paint: { 'fill-extrusion-height': ['get', 'height'],
'fill-extrusion-base': 0, 'fill-extrusion-color': '#22c55e' }
});
map.setPitch(45);
await map.sqs.flush({ render: true });
console.log(await map.queryRenderedFeatures({ layers: ['buildings'] }));
高度和base为地面以上的真实米数。地形夸张只影响地面,不放大楼高;查询与显示从同一地形表面取高,使用同一抬升后的屋顶/墙网格。属性、状态、可见性、地形关闭/恢复沿用共同接口。调用原始网页SDK时使用 view.flush();原生动态库通过共同图源、图层和地形JSON入口使用相同参数,ABI不变。
楼体保持刚性,地基采用单点高程;暂不保证坡面地基吻合或避让更高地形。坡面基础切割、球面、建筑与所有图层的完整深度遮挡过滤仍待实现。沿用每几何50万顶点/150万索引和每查询50万三角形预算。真实手机和Windows/macOS检查单独记录。