Cached DEM coverage and the current surface
With terrain enabled, elevation queries prefer the current displayed coverage at that location and include exaggeration. When zooming out, cached children can cover a pending exact target. Arrival of that exact target replaces terrain, picking, elevation queries, hillshade and color relief together, avoiding heights from a cached detail tile that is no longer displayed.
const caps = await map.sqs.getCapabilities();
if (caps.commonDemDescendantFallback) {
map.setTerrain({source: 'dem', exaggeration: 2});
await map.sqs.flush({render: true});
const height = await map.queryTerrainElevation([lng, lat]);
}
Add an available raster-dem source first; see terrain API. Exact targets take priority. A nearer cached child owns its region while ancestors fill remaining regions; uncovered regions stay empty. Selected NoData remains a hole and returns null without using another level or epoch to fill it. Where no current coverage exists, the existing loaded-data fallback query remains available. fallbackTiles counts visible targets, including world copies; readyTiles and loaded require exact targets. Visible fallback does not mean loading is complete.
Current coverage regions share world-position sampling, including differing pixel dimensions and levels. Equal grids retain exact sample positions; other region boundaries resample at world positions. X wraps at the date line and Y stops at the poles. Missing neighbors renormalize available weights, while weighted NoData retains holes. No extra neighbor requests or original DEM changes are introduced. Surfaces retain the33×33 grid and existing skirts.
Limits remain64MiB of tile cache,4096 raw tiles,512 current coverage regions,32MiB of terrain CPU geometry and64 visible/32 in-flight tiles. Resource, camera and budget failures retain the complete previous state. Full LOD blending, slope foundations, terrain symbols, globe/full depth occlusion, mobile GIS/iOS, device validation and formal releases remain pending.
The shared script and fixture require the repository's controlled local gate server. Core 0762741e6c8e5f5b6b00ba140a999ed0b51fa54a. Actual cross-host validation and matching artifacts are recorded below when verified.
Local public acceptance: the same29 checks and10 observed phases passed in Native, main-thread and Worker hosts, totaling30 real frames. Both browser hosts stay within the256-call budget, with identical protocol sequences and no browser errors. Integrated CPU and actual software Vulkan cases passed. Matching packaging, production HTTP and four-repository synchronization are recorded separately when completed.
Current DEM development delivery: core0762741e6c8e5f5b6b00ba140a999ed0b51fa54a, SDK 0.3.0-dev.0762741e. The same29 checks and10 observed phases passed in Native, main-thread and Worker hosts, totaling30 real frames. Each browser host uses103 calls, with identical protocol sequences and no browser errors. Integrated CPU/actual software Vulkan, affected regressions, workspace all-targets and seven-crate wasm boundaries passed; application102/data49 cases, locked check, matching core/application WASM and Android API24 ARM64/JNI are complete. The233-entry script contract is unchanged and its compiled bytes retain their SHA. New archive SqsMap-SDK-0.3.0-dev.0762741e-dem-coverage.tar.gz contains633 manifest files plus bundle.json,38253092 bytes, SHA256 3c85d3a504557743d55f3c562cf21117babb6b265002d2c3487f82b1f985bbf4. The independent read-only verifier checked every member; fixed74 and MVT archives remain byte-identical. Bilingual production HTTP and four-repository synchronization are recorded separately. External/device validation, mobile GIS/iOS, full capabilities and formal release remain pending.