deck.gl icon indicating copy to clipboard operation
deck.gl copied to clipboard

[Bug] Tile3DLayer with I3S loaders option doesn't work

Open sephilink opened this issue 3 months ago • 0 comments

Description

An error occurs using the Tile3DLayer with the loaders parameter but it works well with the deprecated loader parameter.

Uncaught (in promise) Error: 3DTileLoader: unknown type {"id

Flavors

  • [ ] Script tag
  • [x] React
  • [ ] Python/Jupyter notebook
  • [ ] MapboxOverlay
  • [ ] GoogleMapsOverlay
  • [ ] CARTO
  • [x] ArcGIS

Expected Behavior

The I3S layer loading properly, without error and as it is with the loader parameter

Steps to Reproduce

To reproduce the error

import { Tile3DLayer } from '@deck.gl/geo-layers';
import { I3SLoader } from '@loaders.gl/i3s';

export const useI3SLayer = () => {
  const layer = new Tile3DLayer({
    id: 'tile-3d-layer',
    data: 'any_url_to_test',
    //loader: I3SLoader as any, //works
    loaders: [I3SLoader], // BUG
  });

  return { layer }
}

I have tried with the latest versions of every tool, deckgl and loadergl but couldn't make it work with the loaders parameter.

Environment

  • Framework version: React 19
  • Browser: Chrome
  • OS: Mac, Windows Packages :
"@loaders.gl/core": "4.3.4",
"@loaders.gl/i3s": "^4.3.4",
"@deck.gl-community/editable-layers": "^9.1.1",
"@deck.gl-community/layers": "^9.1.1",
"@deck.gl/core": "^9.1.14",
"@deck.gl/extensions": "^9.1.14",
"@deck.gl/geo-layers": "^9.1.14",
"@deck.gl/layers": "^9.1.14",
"@deck.gl/mapbox": "^9.1.14",
"@deck.gl/mesh-layers": "^9.1.14",
"react": "^19.1.0",

Logs


parse-3d-tile.js:30 Uncaught (in promise) Error: 3DTileLoader: unknown type {"id
    at parse3DTile (parse-3d-tile.js:30:19)
    at parseTile (tiles-3d-loader.js:75:11)
    at Object.parse2 [as parse] (tiles-3d-loader.js:43:63)
    at parseWithLoader (parse.js:80:39)
    at async parse (parse.js:50:12)
    at async load (load.js:41:11)
    at async Tile3DLayer._loadTileset (tile-3d-layer.ts:202:25)
parse3DTile @ parse-3d-tile.js:30
parseTile @ tiles-3d-loader.js:75
parse2 @ tiles-3d-loader.js:43
parseWithLoader @ parse.js:80
await in parseWithLoader
parse @ parse.js:50
await in parse
load @ load.js:41
await in load
_loadTileset @ tile-3d-layer.ts:202
updateState @ tile-3d-layer.ts:121
_update @ layer.ts:990
_initialize @ layer.ts:932
_initializeLayer @ layer-manager.ts:362
_updateSublayersRecursively @ layer-manager.ts:326
_updateLayers @ layer-manager.ts:281
setLayers @ layer-manager.ts:202
updateLayers @ layer-manager.ts:214
_onRenderFrame @ deck.ts:1102
_renderFrame @ animation-loop.ts:362
redraw @ animation-loop.ts:236
_animationFrame @ animation-loop.ts:348
requestAnimationFrame
requestAnimationFramePolyfill @ request-animation-frame.ts:11
_requestAnimationFrame @ animation-loop.ts:326
start @ animation-loop.ts:195
await in start
Deck @ deck.ts:403
_onAddInterleaved @ mapbox-overlay.ts:127
onAdd @ mapbox-overlay.ts:78
addControl @ map.ts:829
(anonymous) @ use-control.ts:44
react_stack_bottom_frame @ react-dom-client.development.js:23953

sephilink avatar Sep 09 '25 01:09 sephilink