OptionalattributionDataset attribution string (readable via I3sBuildingLayer.getAttribution).
OptionalauthRequest authorizer for secured ArcGIS services. For a secured BSL pass an ESRI authorizer
(e.g. getEsriAuthorizer() from @bitruvius/esri-auth, or set one globally via
configureEsriAuth() and omit this). Public services need neither this nor requestInit.
OptionalbudgetPer-sublayer resident VRAM budget (bytes). Default 1.5 GB each (BIM sublayers are small).
OptionalcenterAnchor center [lng, lat] (degrees) for a planet-scale root (else the map center / sublayer root).
OptionalclippingClipping planes (geographic; see ClippingPlanesOptions) applied to the building's geometry across all sublayers. Fragments on the clipped side are discarded from the color, pick, and shadow-cast passes. Change at runtime via I3sBuildingLayer.setClippingPlanes. Default none.
OptionaldatumVertical datum for placement. Default: inherited from the sublayer's declared vertical CRS
(vcsWkid — e.g. EGM96 5773 → 'orthometric') when a geoid is available, else 'basemap'
(drape on the map / 3D terrain). Pass an explicit value to override the inheritance. See
VerticalDatum.
OptionalgeoidOptional — you should not normally need this.* The geoid undulation N (m) at the dataset, used to place absolutely-georeferenced data on mean-sea-level terrain. The SDK resolves it automatically (it fetches the EGM96 grid on demand and samples it at the dataset), so pass this only to override that — e.g. for a dataset referenced to a local vertical datum EGM96 does not model.
An override shifts placement by the DIFFERENCE between your value and the EGM96 undulation at the dataset — so passing the conventional EGM96 value for your area is a no-op rather than a ~30 m jump.
MapLibre layer id (must be unique within the map).
OptionallodLOD quality bias on the refine threshold (default 1, faithful to the service). >1 refines LESS (coarser, lighter VRAM/streaming); <1 sharper.
OptionaloccludeLet MapLibre's existing depth OCCLUDE this model — terrain and any 3D layer already drawn will hide the parts of the building behind them. Defaults to on whenever the map has 3D terrain.
Without it the renderer CLEARS the depth buffer before drawing, so the model paints over everything: a BIM building set among city mesh buildings showed straight through them, which is exactly backwards for a model sitting inside its neighbourhood. The mesh layers have taken this since e688325; the Building Scene Layer never got it.
Set false deliberately for the draw-over behaviour — a proposed design that must stay visible
through the existing context.
OptionalonFired if the building fails to load/initialize (e.g. an unauthorized service). The layer stays inert; nothing renders.
OptionalonFired once every visible sublayer's working set has first fully streamed.
OptionalonFired with the working-set load fraction (0–1) as it streams.
OptionalopacityInitial opacity 0–1 (default 1) — fade the whole building over the basemap.
OptionalpoolWorker pool size (worker mode only). Defaults to the decoder's own default.
OptionalrequestStatic auth/headers escape hatch (e.g. a Bearer token) for tile + metadata fetches.
Superseded by auth when both are set.
OptionalshadowsCast real sun shadows (depth-from-sun shadow map) across the building's sublayers. Default false. Needs a sun via I3sBuildingLayer.setSunState; untextured BIM elements also receive direct sun. Pass an object to tune the shadow map.
SceneServer or building-layer URL (…/SceneServer or …/SceneServer/layers/{id}).
OptionalvisibleInitial visibility (default true). Toggle live with I3sBuildingLayer.setVisible.
OptionalwireframeStream the uncompressed PAA geometry (non-indexed) so I3sBuildingLayer.setWireframe works on ALL sublayers, including Draco-served ones (the barycentric wireframe needs non-indexed geometry). Costs more network/VRAM; decode is faster (no Draco). Default false — leave off for the most efficient solid-only view.
OptionalworkersDecode tiles off the main thread in a Web Worker pool (default true). Set false to decode on the main thread (e.g. the cross-origin CDN bundle, where the module worker can't load same-origin) — the main-thread Draco decoder is used instead.
Configuration for I3sBuildingLayer. Only
id+urlare required; everything else has a sensible default for a public, geographic Building Scene Layer.