@deck.gl/geo-layers 8.10.0-alpha.7 → 9.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +2374 -19037
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/es5/geohash-layer/geohash-layer.js.map +1 -1
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +10 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +0 -8
- package/dist/es5/index.js.map +1 -1
- package/{src/mesh-layer/mesh-layer.ts → dist/es5/mesh-layer/mesh-layer.ts.disabled} +8 -7
- package/dist/es5/mvt-layer/mvt-layer.js +15 -6
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/{src/tile-3d-layer/tile-3d-layer.ts → dist/es5/tile-3d-layer/tile-3d-layer.ts.disabled} +10 -11
- package/dist/es5/tile-layer/tile-layer.js +19 -9
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tileset-2d/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tileset-2d/tileset-2d.js +1 -1
- package/dist/es5/tileset-2d/tileset-2d.js.map +1 -1
- package/dist/es5/tileset-2d/utils.js +2 -3
- package/dist/es5/tileset-2d/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/es5/wms-layer/wms-layer.js +6 -8
- package/dist/es5/wms-layer/wms-layer.js.map +1 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/esm/geohash-layer/geohash-layer.js.map +1 -1
- package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-cluster-layer.js +5 -0
- package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.ts.disabled +176 -0
- package/dist/esm/mvt-layer/mvt-layer.js +6 -1
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/esm/s2-layer/s2-layer.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.ts.disabled +435 -0
- package/dist/esm/tile-layer/tile-layer.js +10 -6
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tileset-2d/tile-2d-traversal.js.map +1 -1
- package/dist/esm/tileset-2d/tileset-2d.js +1 -1
- package/dist/esm/tileset-2d/tileset-2d.js.map +1 -1
- package/dist/esm/tileset-2d/utils.js +2 -2
- package/dist/esm/tileset-2d/utils.js.map +1 -1
- package/dist/esm/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/wms-layer/wms-layer.js +5 -5
- package/dist/esm/wms-layer/wms-layer.js.map +1 -1
- package/dist.min.js +29 -161
- package/package.json +14 -14
- package/src/geo-cell-layer/GeoCellLayer.ts +1 -1
- package/src/geohash-layer/geohash-layer.ts +2 -2
- package/src/great-circle-layer/great-circle-layer.ts +1 -1
- package/src/h3-layers/h3-cluster-layer.ts +6 -2
- package/src/h3-layers/h3-hexagon-layer.ts +2 -2
- package/src/index.ts +4 -2
- package/src/mesh-layer/mesh-layer.ts.disabled +176 -0
- package/src/mvt-layer/mvt-layer.ts +16 -6
- package/src/quadkey-layer/quadkey-layer.ts +3 -2
- package/src/s2-layer/s2-layer.ts +2 -2
- package/src/terrain-layer/terrain-layer.ts +2 -2
- package/src/tile-3d-layer/tile-3d-layer.ts.disabled +435 -0
- package/src/tile-layer/tile-layer.ts +20 -10
- package/src/tileset-2d/tile-2d-traversal.ts +1 -1
- package/src/tileset-2d/tileset-2d.ts +6 -7
- package/src/tileset-2d/utils.ts +4 -4
- package/src/trips-layer/trips-layer.ts +3 -3
- package/src/wms-layer/wms-layer.ts +10 -8
- package/typed/geo-cell-layer/GeoCellLayer.d.ts +1 -1
- package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
- package/typed/geohash-layer/geohash-layer.d.ts +2 -2
- package/typed/geohash-layer/geohash-layer.d.ts.map +1 -1
- package/typed/great-circle-layer/great-circle-layer.d.ts +2 -2
- package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-cluster-layer.d.ts +7 -2
- package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-hexagon-layer.d.ts +2 -2
- package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
- package/typed/index.d.ts +0 -2
- package/typed/index.d.ts.map +1 -1
- package/typed/mvt-layer/mvt-layer.d.ts +9 -1
- package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
- package/typed/quadkey-layer/quadkey-layer.d.ts +2 -2
- package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
- package/typed/s2-layer/s2-layer.d.ts +2 -2
- package/typed/s2-layer/s2-layer.d.ts.map +1 -1
- package/typed/terrain-layer/terrain-layer.d.ts +2 -2
- package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
- package/typed/tile-layer/tile-layer.d.ts +7 -2
- package/typed/tile-layer/tile-layer.d.ts.map +1 -1
- package/typed/tileset-2d/tile-2d-traversal.d.ts +1 -1
- package/typed/tileset-2d/tile-2d-traversal.d.ts.map +1 -1
- package/typed/tileset-2d/tileset-2d.d.ts +4 -4
- package/typed/tileset-2d/tileset-2d.d.ts.map +1 -1
- package/typed/tileset-2d/utils.d.ts +2 -2
- package/typed/tileset-2d/utils.d.ts.map +1 -1
- package/typed/trips-layer/trips-layer.d.ts +3 -3
- package/typed/trips-layer/trips-layer.d.ts.map +1 -1
- package/typed/wms-layer/wms-layer.d.ts.map +1 -1
- package/LICENSE +0 -19
- package/dist/es5/mesh-layer/mesh-layer.js +0 -212
- package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -512
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
- package/dist/esm/mesh-layer/mesh-layer.js +0 -177
- package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -443
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
- package/typed/mesh-layer/mesh-layer.d.ts +0 -38
- package/typed/mesh-layer/mesh-layer.d.ts.map +0 -1
- package/typed/tile-3d-layer/tile-3d-layer.d.ts +0 -62
- package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.ts"],"names":["DUMMY_DATA","defaultProps","TileLayer","elevationData","urlType","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","TerrainWorkerLoader","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","state","updateState","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","terrain","loadTerrain","log","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","getTiledTerrainData","tile","viewport","context","dataUrl","textureUrl","bottomLeft","topRight","isGeospatial","bbox","projectFlat","west","south","east","north","left","bottom","right","top","surface","catch","_","Promise","resolve","all","renderSubLayers","SubLayerClass","getSubLayerClass","SimpleMeshLayer","data","mesh","_instanced","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","getPosition","d","getColor","onViewportLoad","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","renderLayers","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","bind","updateTriggers","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Color,\n CompositeLayer,\n CompositeLayerProps,\n DefaultProps,\n Layer,\n LayersList,\n log,\n Material,\n Texture,\n UpdateParameters\n} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport type {MeshAttributes} from '@loaders.gl/schema';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer, {TileLayerProps} from '../tile-layer/tile-layer';\nimport type {Bounds, GeoBoundingBox, TileBoundingBox, TileLoadProps, ZRange} from '../tileset-2d';\nimport {Tile2DHeader, urlType, getURLFromTemplate, URLTemplate} from '../tileset-2d';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps: DefaultProps<TerrainLayerProps> = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: '',\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template: URLTemplate): string {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template || '';\n}\n\ntype ElevationDecoder = {rScaler: number; gScaler: number; bScaler: number; offset: number};\ntype TerrainLoadProps = {\n bounds: Bounds;\n elevationData: string | null;\n elevationDecoder: ElevationDecoder;\n meshMaxError: number;\n signal?: AbortSignal;\n};\n\ntype MeshAndTexture = [MeshAttributes | null, Texture | null];\n\n/** All properties supported by TerrainLayer */\nexport type TerrainLayerProps = _TerrainLayerProps &\n TileLayerProps<MeshAndTexture> &\n CompositeLayerProps;\n\n/** Props added by the TerrainLayer */\ntype _TerrainLayerProps = {\n /** Image url that encodes height data. **/\n elevationData: URLTemplate;\n\n /** Image url to use as texture. **/\n texture?: URLTemplate;\n\n /** Martini error tolerance in meters, smaller number -> more detailed mesh. **/\n meshMaxError?: number;\n\n /** Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates. **/\n bounds?: Bounds | null;\n\n /** Color to use if texture is unavailable. **/\n color?: Color;\n\n /** Object to decode height data, from (r, g, b) to height in meters. **/\n elevationDecoder?: ElevationDecoder;\n\n /** Whether to render the mesh in wireframe mode. **/\n wireframe?: boolean;\n\n /** Material props for lighting effect. **/\n material?: Material;\n\n /**\n * @deprecated Use `loadOptions.terrain.workerUrl` instead\n */\n workerUrl?: string;\n};\n\n/** Render mesh surfaces from height map images. */\nexport default class TerrainLayer<ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TerrainLayerProps & Required<TileLayerProps<MeshAndTexture>>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'TerrainLayer';\n\n state!: {\n isTiled?: boolean;\n terrain: MeshAttributes;\n zRange?: ZRange | null;\n };\n\n updateState({props, oldProps}: UpdateParameters<this>): void {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n // When state.isTiled, elevationData cannot be an array\n const terrain = this.loadTerrain(props as TerrainLoadProps);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n // @ts-ignore\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({\n elevationData,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n }: TerrainLoadProps): Promise<MeshAttributes> | null {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile: TileLoadProps): Promise<MeshAndTexture> {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const {viewport} = this.context;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = texture && getURLFromTemplate(texture, tile);\n\n const {signal} = tile;\n let bottomLeft = [0, 0] as [number, number];\n let topRight = [0, 0] as [number, number];\n if (viewport.isGeospatial) {\n const bbox = tile.bbox as GeoBoundingBox;\n bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);\n topRight = viewport.projectFlat([bbox.east, bbox.north]);\n } else {\n const bbox = tile.bbox as Exclude<TileBoundingBox, GeoBoundingBox>;\n bottomLeft = [bbox.left, bbox.bottom];\n topRight = [bbox.right, bbox.top];\n }\n const bounds: Bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(\n props: TileLayerProps<MeshAndTexture> & {\n id: string;\n data: MeshAndTexture;\n tile: Tile2DHeader<MeshAndTexture>;\n }\n ) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n\n const {color, wireframe, material} = this.props;\n const {data} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n _instanced: false,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color,\n wireframe,\n material\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles?: Tile2DHeader<MeshAndTexture>[]): void {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n // @ts-ignore\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer<MeshAndTexture>(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n"],"file":"terrain-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.ts"],"names":["DUMMY_DATA","defaultProps","TileLayer","elevationData","urlType","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","TerrainWorkerLoader","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","state","updateState","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","terrain","loadTerrain","log","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","getTiledTerrainData","tile","viewport","context","dataUrl","textureUrl","bottomLeft","topRight","isGeospatial","bbox","projectFlat","west","south","east","north","left","bottom","right","top","surface","catch","_","Promise","resolve","all","renderSubLayers","SubLayerClass","getSubLayerClass","SimpleMeshLayer","data","mesh","_instanced","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","getPosition","d","getColor","onViewportLoad","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","renderLayers","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","bind","updateTriggers","CompositeLayer","layerName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoBA;;AAYA;;AAGA;;AACA;;AAEA;;;;;;;;;;AAEA,IAAMA,UAAU,GAAG,CAAC,CAAD,CAAnB;;AAEA,IAAMC,YAA6C,mCAC9CC,mBAAUD,YADoC;AAGjDE,EAAAA,aAAa,EAAEC,kBAHkC;AAKjDC,EAAAA,OAAO,kCAAMD,kBAAN;AAAeE,IAAAA,QAAQ,EAAE;AAAzB,IAL0C;AAOjDC,EAAAA,YAAY,EAAE;AAACC,IAAAA,IAAI,EAAE,QAAP;AAAiBC,IAAAA,KAAK,EAAE;AAAxB,GAPmC;AASjDC,EAAAA,MAAM,EAAE;AAACF,IAAAA,IAAI,EAAE,OAAP;AAAgBC,IAAAA,KAAK,EAAE,IAAvB;AAA6BH,IAAAA,QAAQ,EAAE,IAAvC;AAA6CK,IAAAA,OAAO,EAAE;AAAtD,GATyC;AAWjDC,EAAAA,KAAK,EAAE;AAACJ,IAAAA,IAAI,EAAE,OAAP;AAAgBC,IAAAA,KAAK,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX;AAAvB,GAX0C;AAajDI,EAAAA,gBAAgB,EAAE;AAChBL,IAAAA,IAAI,EAAE,QADU;AAEhBC,IAAAA,KAAK,EAAE;AACLK,MAAAA,OAAO,EAAE,CADJ;AAELC,MAAAA,OAAO,EAAE,CAFJ;AAGLC,MAAAA,OAAO,EAAE,CAHJ;AAILC,MAAAA,MAAM,EAAE;AAJH;AAFS,GAb+B;AAuBjDC,EAAAA,SAAS,EAAE,EAvBsC;AAyBjDC,EAAAA,SAAS,EAAE,KAzBsC;AA0BjDC,EAAAA,QAAQ,EAAE,IA1BuC;AA4BjDC,EAAAA,OAAO,EAAE,CAACC,4BAAD;AA5BwC,EAAnD;;AAgCA,SAASC,0BAAT,CAAoCC,QAApC,EAAmE;AACjE,MAAIC,KAAK,CAACC,OAAN,CAAcF,QAAd,CAAJ,EAA6B;AAC3B,WAAOA,QAAQ,CAACG,IAAT,CAAc,GAAd,CAAP;AACD;;AACD,SAAOH,QAAQ,IAAI,EAAnB;AACD;;IAmDoBI,Y;;;;;;;;;;;;;;;UAMnBC,K;;;;;;SAMAC,W,GAAA,2BAA6D;AAAA,QAAhDC,KAAgD,QAAhDA,KAAgD;AAAA,QAAzCC,QAAyC,QAAzCA,QAAyC;AAC3D,QAAMC,oBAAoB,GAAGF,KAAK,CAAC5B,aAAN,KAAwB6B,QAAQ,CAAC7B,aAA9D;;AACA,QAAI8B,oBAAJ,EAA0B;AACxB,UAAO9B,aAAP,GAAwB4B,KAAxB,CAAO5B,aAAP;AACA,UAAM+B,OAAO,GACX/B,aAAa,KACZsB,KAAK,CAACC,OAAN,CAAcvB,aAAd,KACEA,aAAa,CAACgC,QAAd,CAAuB,KAAvB,KAAiChC,aAAa,CAACgC,QAAd,CAAuB,KAAvB,CAFvB,CADf;AAIA,WAAKC,QAAL,CAAc;AAACF,QAAAA,OAAO,EAAPA;AAAD,OAAd;AACD;;AAGD,QAAMG,YAAY,GAChBJ,oBAAoB,IACpBF,KAAK,CAACxB,YAAN,KAAuByB,QAAQ,CAACzB,YADhC,IAEAwB,KAAK,CAAClB,gBAAN,KAA2BmB,QAAQ,CAACnB,gBAFpC,IAGAkB,KAAK,CAACrB,MAAN,KAAiBsB,QAAQ,CAACtB,MAJ5B;;AAMA,QAAI,CAAC,KAAKmB,KAAL,CAAWK,OAAZ,IAAuBG,YAA3B,EAAyC;AAEvC,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBR,KAAjB,CAAhB;AACA,WAAKK,QAAL,CAAc;AAACE,QAAAA,OAAO,EAAPA;AAAD,OAAd;AACD;;AAID,QAAIP,KAAK,CAACb,SAAV,EAAqB;AACnBsB,gBAAIC,OAAJ,CAAY,WAAZ,EAAyB,+BAAzB;AACD;AACF,G;;SAEDF,W,GAAA,4BAMqD;AAAA;;AAAA,QALnDpC,aAKmD,SALnDA,aAKmD;AAAA,QAJnDO,MAImD,SAJnDA,MAImD;AAAA,QAHnDG,gBAGmD,SAHnDA,gBAGmD;AAAA,QAFnDN,YAEmD,SAFnDA,YAEmD;AAAA,QADnDmC,MACmD,SADnDA,MACmD;;AACnD,QAAI,CAACvC,aAAL,EAAoB;AAClB,aAAO,IAAP;AACD;;AACD,QAAIwC,WAAW,GAAG,KAAKC,cAAL,EAAlB;AACAD,IAAAA,WAAW,mCACNA,WADM;AAETL,MAAAA,OAAO;AACLO,QAAAA,WAAW,EAAE,KAAKhB,KAAL,CAAWK,OAAX,GAAqB3B,YAAY,GAAG,CAApC,GAAwC;AADhD,yBAEFoC,WAFE,iDAEF,aAAaL,OAFX;AAGL5B,QAAAA,MAAM,EAANA,MAHK;AAILH,QAAAA,YAAY,EAAZA,YAJK;AAKLM,QAAAA,gBAAgB,EAAhBA;AALK;AAFE,MAAX;AAUA,QAAOiC,KAAP,GAAgB,KAAKf,KAArB,CAAOe,KAAP;AACA,WAAOA,KAAK,CAAC3C,aAAD,EAAgB;AAAC4C,MAAAA,QAAQ,EAAE,eAAX;AAA4BC,MAAAA,KAAK,EAAE,IAAnC;AAAyCL,MAAAA,WAAW,EAAXA,WAAzC;AAAsDD,MAAAA,MAAM,EAANA;AAAtD,KAAhB,CAAZ;AACD,G;;SAEDO,mB,GAAA,6BAAoBC,IAApB,EAAkE;AAChE,sBAAwE,KAAKnB,KAA7E;AAAA,QAAO5B,aAAP,eAAOA,aAAP;AAAA,QAAsB2C,KAAtB,eAAsBA,KAAtB;AAAA,QAA6BzC,OAA7B,eAA6BA,OAA7B;AAAA,QAAsCQ,gBAAtC,eAAsCA,gBAAtC;AAAA,QAAwDN,YAAxD,eAAwDA,YAAxD;AACA,QAAO4C,QAAP,GAAmB,KAAKC,OAAxB,CAAOD,QAAP;AACA,QAAME,OAAO,GAAG,mCAAmBlD,aAAnB,EAAkC+C,IAAlC,CAAhB;AACA,QAAMI,UAAU,GAAGjD,OAAO,IAAI,mCAAmBA,OAAnB,EAA4B6C,IAA5B,CAA9B;AAEA,QAAOR,MAAP,GAAiBQ,IAAjB,CAAOR,MAAP;AACA,QAAIa,UAAU,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAjB;AACA,QAAIC,QAAQ,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAf;;AACA,QAAIL,QAAQ,CAACM,YAAb,EAA2B;AACzB,UAAMC,IAAI,GAAGR,IAAI,CAACQ,IAAlB;AACAH,MAAAA,UAAU,GAAGJ,QAAQ,CAACQ,WAAT,CAAqB,CAACD,IAAI,CAACE,IAAN,EAAYF,IAAI,CAACG,KAAjB,CAArB,CAAb;AACAL,MAAAA,QAAQ,GAAGL,QAAQ,CAACQ,WAAT,CAAqB,CAACD,IAAI,CAACI,IAAN,EAAYJ,IAAI,CAACK,KAAjB,CAArB,CAAX;AACD,KAJD,MAIO;AACL,UAAML,KAAI,GAAGR,IAAI,CAACQ,IAAlB;AACAH,MAAAA,UAAU,GAAG,CAACG,KAAI,CAACM,IAAN,EAAYN,KAAI,CAACO,MAAjB,CAAb;AACAT,MAAAA,QAAQ,GAAG,CAACE,KAAI,CAACQ,KAAN,EAAaR,KAAI,CAACS,GAAlB,CAAX;AACD;;AACD,QAAMzD,MAAc,GAAG,CAAC6C,UAAU,CAAC,CAAD,CAAX,EAAgBA,UAAU,CAAC,CAAD,CAA1B,EAA+BC,QAAQ,CAAC,CAAD,CAAvC,EAA4CA,QAAQ,CAAC,CAAD,CAApD,CAAvB;AAEA,QAAMlB,OAAO,GAAG,KAAKC,WAAL,CAAiB;AAC/BpC,MAAAA,aAAa,EAAEkD,OADgB;AAE/B3C,MAAAA,MAAM,EAANA,MAF+B;AAG/BG,MAAAA,gBAAgB,EAAhBA,gBAH+B;AAI/BN,MAAAA,YAAY,EAAZA,YAJ+B;AAK/BmC,MAAAA,MAAM,EAANA;AAL+B,KAAjB,CAAhB;AAOA,QAAM0B,OAAO,GAAGd,UAAU,GAEtBR,KAAK,CAACQ,UAAD,EAAa;AAACP,MAAAA,QAAQ,EAAE,SAAX;AAAsBC,MAAAA,KAAK,EAAE,IAA7B;AAAmC3B,MAAAA,OAAO,EAAE,EAA5C;AAAgDqB,MAAAA,MAAM,EAANA;AAAhD,KAAb,CAAL,CAA2E2B,KAA3E,CAAiF,UAAAC,CAAC;AAAA,aAAI,IAAJ;AAAA,KAAlF,CAFsB,GAGtBC,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAHJ;AAKA,WAAOD,OAAO,CAACE,GAAR,CAAY,CAACnC,OAAD,EAAU8B,OAAV,CAAZ,CAAP;AACD,G;;SAEDM,e,GAAA,yBACE3C,KADF,EAME;AACA,QAAM4C,aAAa,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8BC,2BAA9B,CAAtB;AAEA,uBAAqC,KAAK9C,KAA1C;AAAA,QAAOnB,KAAP,gBAAOA,KAAP;AAAA,QAAcO,SAAd,gBAAcA,SAAd;AAAA,QAAyBC,QAAzB,gBAAyBA,QAAzB;AACA,QAAO0D,IAAP,GAAe/C,KAAf,CAAO+C,IAAP;;AAEA,QAAI,CAACA,IAAL,EAAW;AACT,aAAO,IAAP;AACD;;AAED,6CAAwBA,IAAxB;AAAA,QAAOC,IAAP;AAAA,QAAa1E,OAAb;;AAEA,WAAO,IAAIsE,aAAJ,CAAkB5C,KAAlB,EAAyB;AAC9B+C,MAAAA,IAAI,EAAE9E,UADwB;AAE9B+E,MAAAA,IAAI,EAAJA,IAF8B;AAG9B1E,MAAAA,OAAO,EAAPA,OAH8B;AAI9B2E,MAAAA,UAAU,EAAE,KAJkB;AAK9BC,MAAAA,gBAAgB,EAAEC,wBAAkBC,SALN;AAM9BC,MAAAA,WAAW,EAAE,qBAAAC,CAAC;AAAA,eAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAJ;AAAA,OANgB;AAO9BC,MAAAA,QAAQ,EAAE1E,KAPoB;AAQ9BO,MAAAA,SAAS,EAATA,SAR8B;AAS9BC,MAAAA,QAAQ,EAARA;AAT8B,KAAzB,CAAP;AAWD,G;;SAGDmE,c,GAAA,wBAAeC,KAAf,EAA6D;AAC3D,QAAI,CAACA,KAAL,EAAY;AACV;AACD;;AAED,QAAOC,MAAP,GAAiB,KAAK5D,KAAtB,CAAO4D,MAAP;AACA,QAAMC,MAAM,GAAGF,KAAK,CACjBG,GADY,CACR,UAAAzC,IAAI;AAAA,aAAIA,IAAI,CAAC0C,OAAT;AAAA,KADI,EAEZC,MAFY,CAELC,OAFK,EAGZH,GAHY,CAGR,UAAAI,GAAG,EAAI;AAEV,UAAMrF,MAAM,GAAGqF,GAAG,CAAC,CAAD,CAAH,CAAOC,MAAP,CAAcC,WAA7B;AACA,aAAOvF,MAAM,CAACiF,GAAP,CAAW,UAAAO,KAAK;AAAA,eAAIA,KAAK,CAAC,CAAD,CAAT;AAAA,OAAhB,CAAP;AACD,KAPY,CAAf;;AAQA,QAAIR,MAAM,CAACS,MAAP,KAAkB,CAAtB,EAAyB;AACvB;AACD;;AACD,QAAMC,IAAI,GAAGC,IAAI,CAACC,GAAL,OAAAD,IAAI,mCAAQX,MAAM,CAACC,GAAP,CAAW,UAAAY,CAAC;AAAA,aAAIA,CAAC,CAAC,CAAD,CAAL;AAAA,KAAZ,CAAR,EAAjB;AACA,QAAMC,IAAI,GAAGH,IAAI,CAACI,GAAL,OAAAJ,IAAI,mCAAQX,MAAM,CAACC,GAAP,CAAW,UAAAY,CAAC;AAAA,aAAIA,CAAC,CAAC,CAAD,CAAL;AAAA,KAAZ,CAAR,EAAjB;;AAEA,QAAI,CAACd,MAAD,IAAWW,IAAI,GAAGX,MAAM,CAAC,CAAD,CAAxB,IAA+Be,IAAI,GAAGf,MAAM,CAAC,CAAD,CAAhD,EAAqD;AACnD,WAAKrD,QAAL,CAAc;AAACqD,QAAAA,MAAM,EAAE,CAACW,IAAD,EAAOI,IAAP;AAAT,OAAd;AACD;AACF,G;;SAEDE,Y,GAAA,wBAA0C;AACxC,uBAmBI,KAAK3E,KAnBT;AAAA,QACEnB,KADF,gBACEA,KADF;AAAA,QAEEQ,QAFF,gBAEEA,QAFF;AAAA,QAGEjB,aAHF,gBAGEA,aAHF;AAAA,QAIEE,OAJF,gBAIEA,OAJF;AAAA,QAKEc,SALF,gBAKEA,SALF;AAAA,QAMEZ,YANF,gBAMEA,YANF;AAAA,QAOEM,gBAPF,gBAOEA,gBAPF;AAAA,QAQE8F,QARF,gBAQEA,QARF;AAAA,QASEC,OATF,gBASEA,OATF;AAAA,QAUEC,OAVF,gBAUEA,OAVF;AAAA,QAWEC,MAXF,gBAWEA,MAXF;AAAA,QAYEC,WAZF,gBAYEA,WAZF;AAAA,QAaEC,UAbF,gBAaEA,UAbF;AAAA,QAcEC,YAdF,gBAcEA,YAdF;AAAA,QAeEC,WAfF,gBAeEA,WAfF;AAAA,QAgBEC,YAhBF,gBAgBEA,YAhBF;AAAA,QAiBEC,gBAjBF,gBAiBEA,gBAjBF;AAAA,QAkBEC,kBAlBF,gBAkBEA,kBAlBF;;AAqBA,QAAI,KAAKxF,KAAL,CAAWK,OAAf,EAAwB;AACtB,aAAO,IAAIhC,kBAAJ,CACL,KAAKoH,gBAAL,CAAsB;AACpBC,QAAAA,EAAE,EAAE;AADgB,OAAtB,CADK,EAIL;AACEC,QAAAA,WAAW,EAAE,KAAKvE,mBAAL,CAAyBwE,IAAzB,CAA8B,IAA9B,CADf;AAEE/C,QAAAA,eAAe,EAAE,KAAKA,eAAL,CAAqB+C,IAArB,CAA0B,IAA1B,CAFnB;AAGEC,QAAAA,cAAc,EAAE;AACdF,UAAAA,WAAW,EAAE;AACXrH,YAAAA,aAAa,EAAEoB,0BAA0B,CAACpB,aAAD,CAD9B;AAEXE,YAAAA,OAAO,EAAEkB,0BAA0B,CAAClB,OAAD,CAFxB;AAGXE,YAAAA,YAAY,EAAZA,YAHW;AAIXM,YAAAA,gBAAgB,EAAhBA;AAJW;AADC,SAHlB;AAWE0E,QAAAA,cAAc,EAAE,KAAKA,cAAL,CAAoBkC,IAApB,CAAyB,IAAzB,CAXlB;AAYEhC,QAAAA,MAAM,EAAE,KAAK5D,KAAL,CAAW4D,MAAX,IAAqB,IAZ/B;AAaEkB,QAAAA,QAAQ,EAARA,QAbF;AAcEC,QAAAA,OAAO,EAAPA,OAdF;AAeEC,QAAAA,OAAO,EAAPA,OAfF;AAgBEC,QAAAA,MAAM,EAANA,MAhBF;AAiBEC,QAAAA,WAAW,EAAXA,WAjBF;AAkBEC,QAAAA,UAAU,EAAVA,UAlBF;AAmBEC,QAAAA,YAAY,EAAZA,YAnBF;AAoBEC,QAAAA,WAAW,EAAXA,WApBF;AAqBEC,QAAAA,YAAY,EAAZA,YArBF;AAsBEC,QAAAA,gBAAgB,EAAhBA,gBAtBF;AAuBEC,QAAAA,kBAAkB,EAAlBA;AAvBF,OAJK,CAAP;AA8BD;;AAED,QAAM1C,aAAa,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8BC,2BAA9B,CAAtB;AACA,WAAO,IAAIF,aAAJ,CACL,KAAK2C,gBAAL,CAAsB;AACpBC,MAAAA,EAAE,EAAE;AADgB,KAAtB,CADK,EAIL;AACEzC,MAAAA,IAAI,EAAE9E,UADR;AAEE+E,MAAAA,IAAI,EAAE,KAAKlD,KAAL,CAAWS,OAFnB;AAGEjC,MAAAA,OAAO,EAAPA,OAHF;AAIE2E,MAAAA,UAAU,EAAE,KAJd;AAKEI,MAAAA,WAAW,EAAE,qBAAAC,CAAC;AAAA,eAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAJ;AAAA,OALhB;AAMEC,MAAAA,QAAQ,EAAE1E,KANZ;AAOEQ,MAAAA,QAAQ,EAARA,QAPF;AAQED,MAAAA,SAAS,EAATA;AARF,KAJK,CAAP;AAeD,G;;;EAvOoEwG,oB;;;AAAlD/F,Y,CAGZ3B,Y,GAAeA,Y;AAHH2B,Y,CAIZgG,S,GAAY,c","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Color,\n CompositeLayer,\n CompositeLayerProps,\n DefaultProps,\n Layer,\n LayersList,\n log,\n Material,\n TextureSource,\n UpdateParameters\n} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport type {MeshAttributes} from '@loaders.gl/schema';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer, {TileLayerProps} from '../tile-layer/tile-layer';\nimport type {Bounds, GeoBoundingBox, TileBoundingBox, TileLoadProps, ZRange} from '../tileset-2d';\nimport {Tile2DHeader, urlType, getURLFromTemplate, URLTemplate} from '../tileset-2d';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps: DefaultProps<TerrainLayerProps> = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: '',\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template: URLTemplate): string {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template || '';\n}\n\ntype ElevationDecoder = {rScaler: number; gScaler: number; bScaler: number; offset: number};\ntype TerrainLoadProps = {\n bounds: Bounds;\n elevationData: string | null;\n elevationDecoder: ElevationDecoder;\n meshMaxError: number;\n signal?: AbortSignal;\n};\n\ntype MeshAndTexture = [MeshAttributes | null, TextureSource | null];\n\n/** All properties supported by TerrainLayer */\nexport type TerrainLayerProps = _TerrainLayerProps &\n TileLayerProps<MeshAndTexture> &\n CompositeLayerProps;\n\n/** Props added by the TerrainLayer */\ntype _TerrainLayerProps = {\n /** Image url that encodes height data. **/\n elevationData: URLTemplate;\n\n /** Image url to use as texture. **/\n texture?: URLTemplate;\n\n /** Martini error tolerance in meters, smaller number -> more detailed mesh. **/\n meshMaxError?: number;\n\n /** Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates. **/\n bounds?: Bounds | null;\n\n /** Color to use if texture is unavailable. **/\n color?: Color;\n\n /** Object to decode height data, from (r, g, b) to height in meters. **/\n elevationDecoder?: ElevationDecoder;\n\n /** Whether to render the mesh in wireframe mode. **/\n wireframe?: boolean;\n\n /** Material props for lighting effect. **/\n material?: Material;\n\n /**\n * @deprecated Use `loadOptions.terrain.workerUrl` instead\n */\n workerUrl?: string;\n};\n\n/** Render mesh surfaces from height map images. */\nexport default class TerrainLayer<ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TerrainLayerProps & Required<TileLayerProps<MeshAndTexture>>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'TerrainLayer';\n\n state!: {\n isTiled?: boolean;\n terrain: MeshAttributes;\n zRange?: ZRange | null;\n };\n\n updateState({props, oldProps}: UpdateParameters<this>): void {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n // When state.isTiled, elevationData cannot be an array\n const terrain = this.loadTerrain(props as TerrainLoadProps);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n // @ts-ignore\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({\n elevationData,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n }: TerrainLoadProps): Promise<MeshAttributes> | null {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile: TileLoadProps): Promise<MeshAndTexture> {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const {viewport} = this.context;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = texture && getURLFromTemplate(texture, tile);\n\n const {signal} = tile;\n let bottomLeft = [0, 0] as [number, number];\n let topRight = [0, 0] as [number, number];\n if (viewport.isGeospatial) {\n const bbox = tile.bbox as GeoBoundingBox;\n bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);\n topRight = viewport.projectFlat([bbox.east, bbox.north]);\n } else {\n const bbox = tile.bbox as Exclude<TileBoundingBox, GeoBoundingBox>;\n bottomLeft = [bbox.left, bbox.bottom];\n topRight = [bbox.right, bbox.top];\n }\n const bounds: Bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(\n props: TileLayerProps<MeshAndTexture> & {\n id: string;\n data: MeshAndTexture;\n tile: Tile2DHeader<MeshAndTexture>;\n }\n ) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n\n const {color, wireframe, material} = this.props;\n const {data} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n _instanced: false,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color,\n wireframe,\n material\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles?: Tile2DHeader<MeshAndTexture>[]): void {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n // @ts-ignore\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer<MeshAndTexture>(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n"],"file":"terrain-layer.js"}
|
package/{src/tile-3d-layer/tile-3d-layer.ts → dist/es5/tile-3d-layer/tile-3d-layer.ts.disabled}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import GL from '@luma.gl/constants';
|
|
2
|
-
import {Geometry} from '@luma.gl/
|
|
1
|
+
import {GL} from '@luma.gl/constants';
|
|
2
|
+
import {Geometry} from '@luma.gl/engine';
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
Accessor,
|
|
@@ -44,7 +44,7 @@ const defaultProps: DefaultProps<Tile3DLayerProps> = {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
/** All properties supported by Tile3DLayer */
|
|
47
|
-
export type Tile3DLayerProps<DataT =
|
|
47
|
+
export type Tile3DLayerProps<DataT = unknown> = _Tile3DLayerProps<DataT> & CompositeLayerProps;
|
|
48
48
|
|
|
49
49
|
/** Props added by the Tile3DLayer */
|
|
50
50
|
type _Tile3DLayerProps<DataT> = {
|
|
@@ -105,8 +105,7 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> exten
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
get isLoaded(): boolean {
|
|
108
|
-
|
|
109
|
-
return tileset3d !== null && tileset3d.isLoaded();
|
|
108
|
+
return Boolean(this.state?.tileset3d?.isLoaded() && super.isLoaded);
|
|
110
109
|
}
|
|
111
110
|
|
|
112
111
|
shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {
|
|
@@ -138,7 +137,7 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> exten
|
|
|
138
137
|
|
|
139
138
|
activateViewport(viewport: Viewport): void {
|
|
140
139
|
const {activeViewports, lastUpdatedViewports} = this.state;
|
|
141
|
-
this.internalState
|
|
140
|
+
this.internalState.viewport = viewport;
|
|
142
141
|
|
|
143
142
|
activeViewports[viewport.id] = viewport;
|
|
144
143
|
const lastViewport = lastUpdatedViewports?.[viewport.id];
|
|
@@ -178,14 +177,14 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> exten
|
|
|
178
177
|
|
|
179
178
|
// TODO: deprecate `loader` in v9.0
|
|
180
179
|
// @ts-ignore
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
loader = loader[0];
|
|
184
|
-
}
|
|
180
|
+
const loaders = this.props.loader || this.props.loaders;
|
|
181
|
+
const loader = Array.isArray(loaders) ? loaders[0] : loaders;
|
|
185
182
|
|
|
186
183
|
const options = {loadOptions: {...loadOptions}};
|
|
187
184
|
let actualTilesetUrl = tilesetUrl;
|
|
185
|
+
// @ts-expect-error preload
|
|
188
186
|
if (loader.preload) {
|
|
187
|
+
// @ts-expect-error preload
|
|
189
188
|
const preloadOptions = await loader.preload(tilesetUrl, loadOptions);
|
|
190
189
|
if (preloadOptions.url) {
|
|
191
190
|
actualTilesetUrl = preloadOptions.url;
|
|
@@ -358,7 +357,7 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> exten
|
|
|
358
357
|
const geometry =
|
|
359
358
|
(oldLayer && oldLayer.props.mesh) ||
|
|
360
359
|
new Geometry({
|
|
361
|
-
|
|
360
|
+
topology: 'triangle-list',
|
|
362
361
|
attributes: getMeshGeometry(attributes),
|
|
363
362
|
indices
|
|
364
363
|
});
|
|
@@ -99,8 +99,17 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
99
99
|
var _super = _createSuper(TileLayer);
|
|
100
100
|
|
|
101
101
|
function TileLayer() {
|
|
102
|
+
var _this;
|
|
103
|
+
|
|
102
104
|
(0, _classCallCheck2.default)(this, TileLayer);
|
|
103
|
-
|
|
105
|
+
|
|
106
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
107
|
+
args[_key] = arguments[_key];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
111
|
+
_this.state = void 0;
|
|
112
|
+
return _this;
|
|
104
113
|
}
|
|
105
114
|
|
|
106
115
|
var _proto = TileLayer.prototype;
|
|
@@ -140,7 +149,7 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
140
149
|
if (dataChanged) {
|
|
141
150
|
tileset.reloadAll();
|
|
142
151
|
} else {
|
|
143
|
-
|
|
152
|
+
tileset.tiles.forEach(function (tile) {
|
|
144
153
|
tile.layers = null;
|
|
145
154
|
});
|
|
146
155
|
}
|
|
@@ -293,15 +302,15 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
293
302
|
};
|
|
294
303
|
|
|
295
304
|
_proto.renderLayers = function renderLayers() {
|
|
296
|
-
var
|
|
305
|
+
var _this2 = this;
|
|
297
306
|
|
|
298
307
|
return this.state.tileset.tiles.map(function (tile) {
|
|
299
|
-
var subLayerProps =
|
|
308
|
+
var subLayerProps = _this2.getSubLayerPropsByTile(tile);
|
|
300
309
|
|
|
301
310
|
if (!tile.isLoaded && !tile.content) {} else if (!tile.layers) {
|
|
302
|
-
var layers =
|
|
311
|
+
var layers = _this2.renderSubLayers(_objectSpread(_objectSpread(_objectSpread({}, _this2.props), _this2.getSubLayerProps({
|
|
303
312
|
id: tile.id,
|
|
304
|
-
updateTriggers:
|
|
313
|
+
updateTriggers: _this2.props.updateTriggers
|
|
305
314
|
})), {}, {
|
|
306
315
|
data: tile.content,
|
|
307
316
|
_offset: 0,
|
|
@@ -335,13 +344,14 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
335
344
|
(0, _createClass2.default)(TileLayer, [{
|
|
336
345
|
key: "isLoaded",
|
|
337
346
|
get: function get() {
|
|
338
|
-
var _this$state2, _this$state2$tileset
|
|
347
|
+
var _this$state2, _this$state2$tileset;
|
|
339
348
|
|
|
340
|
-
|
|
349
|
+
var selectedTiles = (_this$state2 = this.state) === null || _this$state2 === void 0 ? void 0 : (_this$state2$tileset = _this$state2.tileset) === null || _this$state2$tileset === void 0 ? void 0 : _this$state2$tileset.selectedTiles;
|
|
350
|
+
return selectedTiles ? selectedTiles.every(function (tile) {
|
|
341
351
|
return tile.isLoaded && tile.layers && tile.layers.every(function (layer) {
|
|
342
352
|
return layer.isLoaded;
|
|
343
353
|
});
|
|
344
|
-
});
|
|
354
|
+
}) : false;
|
|
345
355
|
}
|
|
346
356
|
}]);
|
|
347
357
|
return TileLayer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["defaultProps","TilesetClass","Tileset2D","data","type","value","dataComparator","urlType","equal","renderSubLayers","props","GeoJsonLayer","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","compare","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","layers","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","selectedTiles","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","layer","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","sourceTile","picked","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","getSubLayerProps","id","updateTriggers","_offset","Boolean","clone","Object","keys","some","filterSubLayer","cullRect","isTileVisible","every","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = any> = CompositeLayerProps & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles?.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n ...this.getSubLayerProps({\n id: tile.id,\n updateTriggers: this.props.updateTriggers\n }),\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["defaultProps","TilesetClass","Tileset2D","data","type","value","dataComparator","urlType","equal","renderSubLayers","props","GeoJsonLayer","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","compare","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","state","initializeState","tileset","isLoaded","finalizeState","finalize","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","layers","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","selectedTiles","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","layer","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","sourceTile","picked","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","getSubLayerProps","id","updateTriggers","_offset","Boolean","clone","Object","keys","some","filterSubLayer","cullRect","isTileVisible","every","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: (props: any) => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = unknown> = CompositeLayerProps & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n state!: {\n tileset: Tileset2D | null;\n isLoaded: boolean;\n frameNumber?: number;\n };\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n const selectedTiles = this.state?.tileset?.selectedTiles;\n return selectedTiles\n ? selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n )\n : false;\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const tileset = this.state.tileset!;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n // This method can only be called when tileset is defined and updated\n onViewportLoad(tileset!.selectedTiles!);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset!.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n ...this.getSubLayerProps({\n id: tile.id,\n updateTriggers: this.props.updateTriggers\n }),\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset!.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tileset-2d/tile-2d-traversal.ts"],"names":["TILE_SIZE","MAX_MAPS","REF_POINTS_5","REF_POINTS_9","concat","REF_POINTS_11","OSMNode","x","y","z","childVisible","selected","_children","update","params","viewport","cullingVolume","elevationBounds","minZ","maxZ","bounds","offset","project","boundingVolume","getBoundingVolume","insideBounds","isInside","computeVisibility","distance","distanceTo","cameraPosition","scale","height","Math","floor","log2","children","child","getSelected","result","push","node","minX","minY","maxX","maxY","pow","extent","zRange","worldOffset","refPoints","refPointPositions","p","lngLat","originX","originY","AxisAlignedBoundingBox","getOSMTileIndices","_GlobeViewport","resolution","projectPosition","planes","Object","values","getFrustumPlanes","map","normal","Plane","clone","negate","CullingVolume","unitsPerMeter","distanceScales","elevationMin","elevationMax","WebMercatorViewport","pitch","minLng","minLat","maxLng","maxLat","topLeft","bottomRight","root","traversalParams","subViewports","length"],"mappings":"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","sourcesContent":["import {Viewport, WebMercatorViewport, _GlobeViewport} from '@deck.gl/core';\n\nimport {\n CullingVolume,\n Plane,\n AxisAlignedBoundingBox,\n makeOrientedBoundingBoxFromPoints\n} from '@math.gl/culling';\nimport {lngLatToWorld} from '@math.gl/web-mercator';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {osmTile2lngLat} from './utils';\n\nconst TILE_SIZE = 512;\n// number of world copies to check\nconst MAX_MAPS = 3;\n// for calculating bounding volume of a tile in a non-web-mercator viewport\nconst REF_POINTS_5 = [\n [0.5, 0.5],\n [0, 0],\n [0, 1],\n [1, 0],\n [1, 1]\n]; // 4 corners and center\nconst REF_POINTS_9 = REF_POINTS_5.concat([\n [0, 0.5],\n [0.5, 0],\n [1, 0.5],\n [0.5, 1]\n]); // 4 corners, center and 4 mid points\nconst REF_POINTS_11 = REF_POINTS_9.concat([\n [0.25, 0.5],\n [0.75, 0.5]\n]); // 2 additional points on equator for top tile\n\nclass OSMNode {\n x: number;\n y: number;\n z: number;\n\n private childVisible?: boolean;\n private selected?: boolean;\n\n private _children?: OSMNode[];\n\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n get children() {\n if (!this._children) {\n const x = this.x * 2;\n const y = this.y * 2;\n const z = this.z + 1;\n this._children = [\n new OSMNode(x, y, z),\n new OSMNode(x, y + 1, z),\n new OSMNode(x + 1, y, z),\n new OSMNode(x + 1, y + 1, z)\n ];\n }\n return this._children;\n }\n\n // eslint-disable-next-line complexity\n update(params: {\n viewport: Viewport;\n project: ((xyz: number[]) => number[]) | null;\n cullingVolume: CullingVolume;\n elevationBounds: ZRange;\n minZ: number;\n maxZ: number;\n bounds?: Bounds;\n offset: number;\n }) {\n const {viewport, cullingVolume, elevationBounds, minZ, maxZ, bounds, offset, project} = params;\n const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);\n\n // First, check if this tile is visible\n if (bounds && !this.insideBounds(bounds)) {\n return false;\n }\n\n const isInside = cullingVolume.computeVisibility(boundingVolume);\n if (isInside < 0) {\n return false;\n }\n\n // Avoid loading overlapping tiles - if a descendant is requested, do not request the ancester\n if (!this.childVisible) {\n let {z} = this;\n if (z < maxZ && z >= minZ) {\n // Adjust LOD\n // If the tile is far enough from the camera, accept a lower zoom level\n const distance =\n (boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale) / viewport.height;\n z += Math.floor(Math.log2(distance));\n }\n if (z >= maxZ) {\n // LOD is acceptable\n this.selected = true;\n return true;\n }\n }\n\n // LOD is not enough, recursively test child tiles\n this.selected = false;\n this.childVisible = true;\n for (const child of this.children) {\n child.update(params);\n }\n return true;\n }\n\n getSelected(result: OSMNode[] = []): OSMNode[] {\n if (this.selected) {\n result.push(this);\n }\n if (this._children) {\n for (const node of this._children) {\n node.getSelected(result);\n }\n }\n return result;\n }\n\n insideBounds([minX, minY, maxX, maxY]: Bounds): boolean {\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n\n return (\n this.x * extent < maxX &&\n this.y * extent < maxY &&\n (this.x + 1) * extent > minX &&\n (this.y + 1) * extent > minY\n );\n }\n\n getBoundingVolume(\n zRange: ZRange,\n worldOffset: number,\n project: ((xyz: number[]) => number[]) | null\n ) {\n if (project) {\n // Custom projection\n // Estimate bounding box from sample points\n // At low zoom level we need more samples to calculate the bounding volume correctly\n const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;\n\n // Convert from tile-relative coordinates to common space\n const refPointPositions: number[][] = [];\n for (const p of refPoints) {\n const lngLat: number[] = osmTile2lngLat(this.x + p[0], this.y + p[1], this.z);\n lngLat[2] = zRange[0];\n refPointPositions.push(project(lngLat));\n\n if (zRange[0] !== zRange[1]) {\n // Account for the elevation volume\n lngLat[2] = zRange[1];\n refPointPositions.push(project(lngLat));\n }\n }\n\n return makeOrientedBoundingBoxFromPoints(refPointPositions);\n }\n\n // Use WebMercator projection\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n const originX = this.x * extent + worldOffset * TILE_SIZE;\n // deck's common space is y-flipped\n const originY = TILE_SIZE - (this.y + 1) * extent;\n\n return new AxisAlignedBoundingBox(\n [originX, originY, zRange[0]],\n [originX + extent, originY + extent, zRange[1]]\n );\n }\n}\n\n// eslint-disable-next-line complexity\nexport function getOSMTileIndices(\n viewport: Viewport,\n maxZ: number,\n zRange: ZRange | undefined,\n bounds?: Bounds\n): TileIndex[] {\n const project: ((xyz: number[]) => number[]) | null =\n viewport instanceof _GlobeViewport && viewport.resolution\n ? // eslint-disable-next-line @typescript-eslint/unbound-method\n viewport.projectPosition\n : null;\n\n // Get the culling volume of the current camera\n const planes: Plane[] = Object.values(viewport.getFrustumPlanes()).map(\n ({normal, distance}) => new Plane(normal.clone().negate(), distance)\n );\n const cullingVolume = new CullingVolume(planes);\n\n // Project zRange from meters to common space\n const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];\n const elevationMin = (zRange && zRange[0] * unitsPerMeter) || 0;\n const elevationMax = (zRange && zRange[1] * unitsPerMeter) || 0;\n\n // Always load at the current zoom level if pitch is small\n const minZ = viewport instanceof WebMercatorViewport && viewport.pitch <= 60 ? maxZ : 0;\n\n // Map extent to OSM position\n if (bounds) {\n const [minLng, minLat, maxLng, maxLat] = bounds;\n const topLeft = lngLatToWorld([minLng, maxLat]);\n const bottomRight = lngLatToWorld([maxLng, minLat]);\n bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];\n }\n\n const root = new OSMNode(0, 0, 0);\n const traversalParams = {\n viewport,\n project,\n cullingVolume,\n elevationBounds: [elevationMin, elevationMax] as ZRange,\n minZ,\n maxZ,\n bounds,\n // num. of worlds from the center. For repeated maps\n offset: 0\n };\n\n root.update(traversalParams);\n\n if (\n viewport instanceof WebMercatorViewport &&\n viewport.subViewports &&\n viewport.subViewports.length > 1\n ) {\n // Check worlds in repeated maps\n traversalParams.offset = -1;\n while (root.update(traversalParams)) {\n if (--traversalParams.offset < -MAX_MAPS) {\n break;\n }\n }\n traversalParams.offset = 1;\n while (root.update(traversalParams)) {\n if (++traversalParams.offset > MAX_MAPS) {\n break;\n }\n }\n }\n\n return root.getSelected();\n}\n"],"file":"tile-2d-traversal.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tileset-2d/tile-2d-traversal.ts"],"names":["TILE_SIZE","MAX_MAPS","REF_POINTS_5","REF_POINTS_9","concat","REF_POINTS_11","OSMNode","x","y","z","childVisible","selected","_children","update","params","viewport","cullingVolume","elevationBounds","minZ","maxZ","bounds","offset","project","boundingVolume","getBoundingVolume","insideBounds","isInside","computeVisibility","distance","distanceTo","cameraPosition","scale","height","Math","floor","log2","children","child","getSelected","result","push","node","minX","minY","maxX","maxY","pow","extent","zRange","worldOffset","refPoints","refPointPositions","p","lngLat","originX","originY","AxisAlignedBoundingBox","getOSMTileIndices","_GlobeViewport","resolution","projectPosition","planes","Object","values","getFrustumPlanes","map","normal","Plane","clone","negate","CullingVolume","unitsPerMeter","distanceScales","elevationMin","elevationMax","WebMercatorViewport","pitch","minLng","minLat","maxLng","maxLat","topLeft","bottomRight","root","traversalParams","subViewports","length"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAEA;;AAMA;;AAEA;;;;;;;;AAEA,IAAMA,SAAS,GAAG,GAAlB;AAEA,IAAMC,QAAQ,GAAG,CAAjB;AAEA,IAAMC,YAAY,GAAG,CACnB,CAAC,GAAD,EAAM,GAAN,CADmB,EAEnB,CAAC,CAAD,EAAI,CAAJ,CAFmB,EAGnB,CAAC,CAAD,EAAI,CAAJ,CAHmB,EAInB,CAAC,CAAD,EAAI,CAAJ,CAJmB,EAKnB,CAAC,CAAD,EAAI,CAAJ,CALmB,CAArB;AAOA,IAAMC,YAAY,GAAGD,YAAY,CAACE,MAAb,CAAoB,CACvC,CAAC,CAAD,EAAI,GAAJ,CADuC,EAEvC,CAAC,GAAD,EAAM,CAAN,CAFuC,EAGvC,CAAC,CAAD,EAAI,GAAJ,CAHuC,EAIvC,CAAC,GAAD,EAAM,CAAN,CAJuC,CAApB,CAArB;AAMA,IAAMC,aAAa,GAAGF,YAAY,CAACC,MAAb,CAAoB,CACxC,CAAC,IAAD,EAAO,GAAP,CADwC,EAExC,CAAC,IAAD,EAAO,GAAP,CAFwC,CAApB,CAAtB;;IAKME,O;AAUJ,mBAAYC,CAAZ,EAAeC,CAAf,EAAkBC,CAAlB,EAAqB;AAAA;AAAA,SATrBF,CASqB;AAAA,SARrBC,CAQqB;AAAA,SAPrBC,CAOqB;AAAA,SALbC,YAKa;AAAA,SAJbC,QAIa;AAAA,SAFbC,SAEa;AACnB,SAAKL,CAAL,GAASA,CAAT;AACA,SAAKC,CAAL,GAASA,CAAT;AACA,SAAKC,CAAL,GAASA,CAAT;AACD;;;;SAkBDI,M,GAAA,gBAAOC,MAAP,EASG;AACD,QAAOC,QAAP,GAAwFD,MAAxF,CAAOC,QAAP;AAAA,QAAiBC,aAAjB,GAAwFF,MAAxF,CAAiBE,aAAjB;AAAA,QAAgCC,eAAhC,GAAwFH,MAAxF,CAAgCG,eAAhC;AAAA,QAAiDC,IAAjD,GAAwFJ,MAAxF,CAAiDI,IAAjD;AAAA,QAAuDC,IAAvD,GAAwFL,MAAxF,CAAuDK,IAAvD;AAAA,QAA6DC,MAA7D,GAAwFN,MAAxF,CAA6DM,MAA7D;AAAA,QAAqEC,MAArE,GAAwFP,MAAxF,CAAqEO,MAArE;AAAA,QAA6EC,OAA7E,GAAwFR,MAAxF,CAA6EQ,OAA7E;AACA,QAAMC,cAAc,GAAG,KAAKC,iBAAL,CAAuBP,eAAvB,EAAwCI,MAAxC,EAAgDC,OAAhD,CAAvB;;AAGA,QAAIF,MAAM,IAAI,CAAC,KAAKK,YAAL,CAAkBL,MAAlB,CAAf,EAA0C;AACxC,aAAO,KAAP;AACD;;AAED,QAAMM,QAAQ,GAAGV,aAAa,CAACW,iBAAd,CAAgCJ,cAAhC,CAAjB;;AACA,QAAIG,QAAQ,GAAG,CAAf,EAAkB;AAChB,aAAO,KAAP;AACD;;AAGD,QAAI,CAAC,KAAKhB,YAAV,EAAwB;AACtB,UAAKD,CAAL,GAAU,IAAV,CAAKA,CAAL;;AACA,UAAIA,CAAC,GAAGU,IAAJ,IAAYV,CAAC,IAAIS,IAArB,EAA2B;AAGzB,YAAMU,QAAQ,GACXL,cAAc,CAACM,UAAf,CAA0Bd,QAAQ,CAACe,cAAnC,IAAqDf,QAAQ,CAACgB,KAA/D,GAAwEhB,QAAQ,CAACiB,MADnF;AAEAvB,QAAAA,CAAC,IAAIwB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,IAAL,CAAUP,QAAV,CAAX,CAAL;AACD;;AACD,UAAInB,CAAC,IAAIU,IAAT,EAAe;AAEb,aAAKR,QAAL,GAAgB,IAAhB;AACA,eAAO,IAAP;AACD;AACF;;AAGD,SAAKA,QAAL,GAAgB,KAAhB;AACA,SAAKD,YAAL,GAAoB,IAApB;;AAjCC,+CAkCmB,KAAK0B,QAlCxB;AAAA;;AAAA;AAkCD,0DAAmC;AAAA,YAAxBC,KAAwB;AACjCA,QAAAA,KAAK,CAACxB,MAAN,CAAaC,MAAb;AACD;AApCA;AAAA;AAAA;AAAA;AAAA;;AAqCD,WAAO,IAAP;AACD,G;;SAEDwB,W,GAAA,uBAA+C;AAAA,QAAnCC,MAAmC,uEAAf,EAAe;;AAC7C,QAAI,KAAK5B,QAAT,EAAmB;AACjB4B,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAZ;AACD;;AACD,QAAI,KAAK5B,SAAT,EAAoB;AAAA,kDACC,KAAKA,SADN;AAAA;;AAAA;AAClB,+DAAmC;AAAA,cAAxB6B,IAAwB;AACjCA,UAAAA,IAAI,CAACH,WAAL,CAAiBC,MAAjB;AACD;AAHiB;AAAA;AAAA;AAAA;AAAA;AAInB;;AACD,WAAOA,MAAP;AACD,G;;SAEDd,Y,GAAA,4BAAwD;AAAA;AAAA,QAA1CiB,IAA0C;AAAA,QAApCC,IAAoC;AAAA,QAA9BC,IAA8B;AAAA,QAAxBC,IAAwB;;AACtD,QAAMd,KAAK,GAAGE,IAAI,CAACa,GAAL,CAAS,CAAT,EAAY,KAAKrC,CAAjB,CAAd;AACA,QAAMsC,MAAM,GAAG/C,SAAS,GAAG+B,KAA3B;AAEA,WACE,KAAKxB,CAAL,GAASwC,MAAT,GAAkBH,IAAlB,IACA,KAAKpC,CAAL,GAASuC,MAAT,GAAkBF,IADlB,IAEA,CAAC,KAAKtC,CAAL,GAAS,CAAV,IAAewC,MAAf,GAAwBL,IAFxB,IAGA,CAAC,KAAKlC,CAAL,GAAS,CAAV,IAAeuC,MAAf,GAAwBJ,IAJ1B;AAMD,G;;SAEDnB,iB,GAAA,2BACEwB,MADF,EAEEC,WAFF,EAGE3B,OAHF,EAIE;AACA,QAAIA,OAAJ,EAAa;AAIX,UAAM4B,SAAS,GAAG,KAAKzC,CAAL,GAAS,CAAT,GAAaJ,aAAb,GAA6B,KAAKI,CAAL,GAAS,CAAT,GAAaN,YAAb,GAA4BD,YAA3E;AAGA,UAAMiD,iBAA6B,GAAG,EAAtC;;AAPW,kDAQKD,SARL;AAAA;;AAAA;AAQX,+DAA2B;AAAA,cAAhBE,CAAgB;AACzB,cAAMC,MAAgB,GAAG,2BAAe,KAAK9C,CAAL,GAAS6C,CAAC,CAAC,CAAD,CAAzB,EAA8B,KAAK5C,CAAL,GAAS4C,CAAC,CAAC,CAAD,CAAxC,EAA6C,KAAK3C,CAAlD,CAAzB;AACA4C,UAAAA,MAAM,CAAC,CAAD,CAAN,GAAYL,MAAM,CAAC,CAAD,CAAlB;AACAG,UAAAA,iBAAiB,CAACX,IAAlB,CAAuBlB,OAAO,CAAC+B,MAAD,CAA9B;;AAEA,cAAIL,MAAM,CAAC,CAAD,CAAN,KAAcA,MAAM,CAAC,CAAD,CAAxB,EAA6B;AAE3BK,YAAAA,MAAM,CAAC,CAAD,CAAN,GAAYL,MAAM,CAAC,CAAD,CAAlB;AACAG,YAAAA,iBAAiB,CAACX,IAAlB,CAAuBlB,OAAO,CAAC+B,MAAD,CAA9B;AACD;AACF;AAlBU;AAAA;AAAA;AAAA;AAAA;;AAoBX,aAAO,gDAAkCF,iBAAlC,CAAP;AACD;;AAGD,QAAMpB,KAAK,GAAGE,IAAI,CAACa,GAAL,CAAS,CAAT,EAAY,KAAKrC,CAAjB,CAAd;AACA,QAAMsC,MAAM,GAAG/C,SAAS,GAAG+B,KAA3B;AACA,QAAMuB,OAAO,GAAG,KAAK/C,CAAL,GAASwC,MAAT,GAAkBE,WAAW,GAAGjD,SAAhD;AAEA,QAAMuD,OAAO,GAAGvD,SAAS,GAAG,CAAC,KAAKQ,CAAL,GAAS,CAAV,IAAeuC,MAA3C;AAEA,WAAO,IAAIS,+BAAJ,CACL,CAACF,OAAD,EAAUC,OAAV,EAAmBP,MAAM,CAAC,CAAD,CAAzB,CADK,EAEL,CAACM,OAAO,GAAGP,MAAX,EAAmBQ,OAAO,GAAGR,MAA7B,EAAqCC,MAAM,CAAC,CAAD,CAA3C,CAFK,CAAP;AAID,G;;;;SAhID,eAAe;AACb,UAAI,CAAC,KAAKpC,SAAV,EAAqB;AACnB,YAAML,CAAC,GAAG,KAAKA,CAAL,GAAS,CAAnB;AACA,YAAMC,CAAC,GAAG,KAAKA,CAAL,GAAS,CAAnB;AACA,YAAMC,CAAC,GAAG,KAAKA,CAAL,GAAS,CAAnB;AACA,aAAKG,SAAL,GAAiB,CACf,IAAIN,OAAJ,CAAYC,CAAZ,EAAeC,CAAf,EAAkBC,CAAlB,CADe,EAEf,IAAIH,OAAJ,CAAYC,CAAZ,EAAeC,CAAC,GAAG,CAAnB,EAAsBC,CAAtB,CAFe,EAGf,IAAIH,OAAJ,CAAYC,CAAC,GAAG,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,CAHe,EAIf,IAAIH,OAAJ,CAAYC,CAAC,GAAG,CAAhB,EAAmBC,CAAC,GAAG,CAAvB,EAA0BC,CAA1B,CAJe,CAAjB;AAMD;;AACD,aAAO,KAAKG,SAAZ;AACD;;;;;AAuHI,SAAS6C,iBAAT,CACL1C,QADK,EAELI,IAFK,EAGL6B,MAHK,EAIL5B,MAJK,EAKQ;AACb,MAAME,OAA6C,GACjDP,QAAQ,YAAY2C,oBAApB,IAAsC3C,QAAQ,CAAC4C,UAA/C,GAEI5C,QAAQ,CAAC6C,eAFb,GAGI,IAJN;AAOA,MAAMC,MAAe,GAAGC,MAAM,CAACC,MAAP,CAAchD,QAAQ,CAACiD,gBAAT,EAAd,EAA2CC,GAA3C,CACtB;AAAA,QAAEC,MAAF,SAAEA,MAAF;AAAA,QAAUtC,QAAV,SAAUA,QAAV;AAAA,WAAwB,IAAIuC,cAAJ,CAAUD,MAAM,CAACE,KAAP,GAAeC,MAAf,EAAV,EAAmCzC,QAAnC,CAAxB;AAAA,GADsB,CAAxB;AAGA,MAAMZ,aAAa,GAAG,IAAIsD,sBAAJ,CAAkBT,MAAlB,CAAtB;AAGA,MAAMU,aAAa,GAAGxD,QAAQ,CAACyD,cAAT,CAAwBD,aAAxB,CAAsC,CAAtC,CAAtB;AACA,MAAME,YAAY,GAAIzB,MAAM,IAAIA,MAAM,CAAC,CAAD,CAAN,GAAYuB,aAAvB,IAAyC,CAA9D;AACA,MAAMG,YAAY,GAAI1B,MAAM,IAAIA,MAAM,CAAC,CAAD,CAAN,GAAYuB,aAAvB,IAAyC,CAA9D;AAGA,MAAMrD,IAAI,GAAGH,QAAQ,YAAY4D,yBAApB,IAA2C5D,QAAQ,CAAC6D,KAAT,IAAkB,EAA7D,GAAkEzD,IAAlE,GAAyE,CAAtF;;AAGA,MAAIC,MAAJ,EAAY;AACV,kBAAyCA,MAAzC;AAAA;AAAA,QAAOyD,MAAP;AAAA,QAAeC,MAAf;AAAA,QAAuBC,MAAvB;AAAA,QAA+BC,MAA/B;;AACA,QAAMC,OAAO,GAAG,gCAAc,CAACJ,MAAD,EAASG,MAAT,CAAd,CAAhB;AACA,QAAME,WAAW,GAAG,gCAAc,CAACH,MAAD,EAASD,MAAT,CAAd,CAApB;AACA1D,IAAAA,MAAM,GAAG,CAAC6D,OAAO,CAAC,CAAD,CAAR,EAAajF,SAAS,GAAGiF,OAAO,CAAC,CAAD,CAAhC,EAAqCC,WAAW,CAAC,CAAD,CAAhD,EAAqDlF,SAAS,GAAGkF,WAAW,CAAC,CAAD,CAA5E,CAAT;AACD;;AAED,MAAMC,IAAI,GAAG,IAAI7E,OAAJ,CAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,CAAb;AACA,MAAM8E,eAAe,GAAG;AACtBrE,IAAAA,QAAQ,EAARA,QADsB;AAEtBO,IAAAA,OAAO,EAAPA,OAFsB;AAGtBN,IAAAA,aAAa,EAAbA,aAHsB;AAItBC,IAAAA,eAAe,EAAE,CAACwD,YAAD,EAAeC,YAAf,CAJK;AAKtBxD,IAAAA,IAAI,EAAJA,IALsB;AAMtBC,IAAAA,IAAI,EAAJA,IANsB;AAOtBC,IAAAA,MAAM,EAANA,MAPsB;AAStBC,IAAAA,MAAM,EAAE;AATc,GAAxB;AAYA8D,EAAAA,IAAI,CAACtE,MAAL,CAAYuE,eAAZ;;AAEA,MACErE,QAAQ,YAAY4D,yBAApB,IACA5D,QAAQ,CAACsE,YADT,IAEAtE,QAAQ,CAACsE,YAAT,CAAsBC,MAAtB,GAA+B,CAHjC,EAIE;AAEAF,IAAAA,eAAe,CAAC/D,MAAhB,GAAyB,CAAC,CAA1B;;AACA,WAAO8D,IAAI,CAACtE,MAAL,CAAYuE,eAAZ,CAAP,EAAqC;AACnC,UAAI,EAAEA,eAAe,CAAC/D,MAAlB,GAA2B,CAACpB,QAAhC,EAA0C;AACxC;AACD;AACF;;AACDmF,IAAAA,eAAe,CAAC/D,MAAhB,GAAyB,CAAzB;;AACA,WAAO8D,IAAI,CAACtE,MAAL,CAAYuE,eAAZ,CAAP,EAAqC;AACnC,UAAI,EAAEA,eAAe,CAAC/D,MAAlB,GAA2BpB,QAA/B,EAAyC;AACvC;AACD;AACF;AACF;;AAED,SAAOkF,IAAI,CAAC7C,WAAL,EAAP;AACD","sourcesContent":["import {Viewport, WebMercatorViewport, _GlobeViewport} from '@deck.gl/core';\n\nimport {\n CullingVolume,\n Plane,\n AxisAlignedBoundingBox,\n makeOrientedBoundingBoxFromPoints\n} from '@math.gl/culling';\nimport {lngLatToWorld} from '@math.gl/web-mercator';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {osmTile2lngLat} from './utils';\n\nconst TILE_SIZE = 512;\n// number of world copies to check\nconst MAX_MAPS = 3;\n// for calculating bounding volume of a tile in a non-web-mercator viewport\nconst REF_POINTS_5 = [\n [0.5, 0.5],\n [0, 0],\n [0, 1],\n [1, 0],\n [1, 1]\n]; // 4 corners and center\nconst REF_POINTS_9 = REF_POINTS_5.concat([\n [0, 0.5],\n [0.5, 0],\n [1, 0.5],\n [0.5, 1]\n]); // 4 corners, center and 4 mid points\nconst REF_POINTS_11 = REF_POINTS_9.concat([\n [0.25, 0.5],\n [0.75, 0.5]\n]); // 2 additional points on equator for top tile\n\nclass OSMNode {\n x: number;\n y: number;\n z: number;\n\n private childVisible?: boolean;\n private selected?: boolean;\n\n private _children?: OSMNode[];\n\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n get children() {\n if (!this._children) {\n const x = this.x * 2;\n const y = this.y * 2;\n const z = this.z + 1;\n this._children = [\n new OSMNode(x, y, z),\n new OSMNode(x, y + 1, z),\n new OSMNode(x + 1, y, z),\n new OSMNode(x + 1, y + 1, z)\n ];\n }\n return this._children;\n }\n\n // eslint-disable-next-line complexity\n update(params: {\n viewport: Viewport;\n project: ((xyz: number[]) => number[]) | null;\n cullingVolume: CullingVolume;\n elevationBounds: ZRange;\n minZ: number;\n maxZ: number;\n bounds?: Bounds;\n offset: number;\n }) {\n const {viewport, cullingVolume, elevationBounds, minZ, maxZ, bounds, offset, project} = params;\n const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);\n\n // First, check if this tile is visible\n if (bounds && !this.insideBounds(bounds)) {\n return false;\n }\n\n const isInside = cullingVolume.computeVisibility(boundingVolume);\n if (isInside < 0) {\n return false;\n }\n\n // Avoid loading overlapping tiles - if a descendant is requested, do not request the ancester\n if (!this.childVisible) {\n let {z} = this;\n if (z < maxZ && z >= minZ) {\n // Adjust LOD\n // If the tile is far enough from the camera, accept a lower zoom level\n const distance =\n (boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale) / viewport.height;\n z += Math.floor(Math.log2(distance));\n }\n if (z >= maxZ) {\n // LOD is acceptable\n this.selected = true;\n return true;\n }\n }\n\n // LOD is not enough, recursively test child tiles\n this.selected = false;\n this.childVisible = true;\n for (const child of this.children) {\n child.update(params);\n }\n return true;\n }\n\n getSelected(result: OSMNode[] = []): OSMNode[] {\n if (this.selected) {\n result.push(this);\n }\n if (this._children) {\n for (const node of this._children) {\n node.getSelected(result);\n }\n }\n return result;\n }\n\n insideBounds([minX, minY, maxX, maxY]: Bounds): boolean {\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n\n return (\n this.x * extent < maxX &&\n this.y * extent < maxY &&\n (this.x + 1) * extent > minX &&\n (this.y + 1) * extent > minY\n );\n }\n\n getBoundingVolume(\n zRange: ZRange,\n worldOffset: number,\n project: ((xyz: number[]) => number[]) | null\n ) {\n if (project) {\n // Custom projection\n // Estimate bounding box from sample points\n // At low zoom level we need more samples to calculate the bounding volume correctly\n const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;\n\n // Convert from tile-relative coordinates to common space\n const refPointPositions: number[][] = [];\n for (const p of refPoints) {\n const lngLat: number[] = osmTile2lngLat(this.x + p[0], this.y + p[1], this.z);\n lngLat[2] = zRange[0];\n refPointPositions.push(project(lngLat));\n\n if (zRange[0] !== zRange[1]) {\n // Account for the elevation volume\n lngLat[2] = zRange[1];\n refPointPositions.push(project(lngLat));\n }\n }\n\n return makeOrientedBoundingBoxFromPoints(refPointPositions);\n }\n\n // Use WebMercator projection\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n const originX = this.x * extent + worldOffset * TILE_SIZE;\n // deck's common space is y-flipped\n const originY = TILE_SIZE - (this.y + 1) * extent;\n\n return new AxisAlignedBoundingBox(\n [originX, originY, zRange[0]],\n [originX + extent, originY + extent, zRange[1]]\n );\n }\n}\n\n// eslint-disable-next-line complexity\nexport function getOSMTileIndices(\n viewport: Viewport,\n maxZ: number,\n zRange?: ZRange | null,\n bounds?: Bounds\n): TileIndex[] {\n const project: ((xyz: number[]) => number[]) | null =\n viewport instanceof _GlobeViewport && viewport.resolution\n ? // eslint-disable-next-line @typescript-eslint/unbound-method\n viewport.projectPosition\n : null;\n\n // Get the culling volume of the current camera\n const planes: Plane[] = Object.values(viewport.getFrustumPlanes()).map(\n ({normal, distance}) => new Plane(normal.clone().negate(), distance)\n );\n const cullingVolume = new CullingVolume(planes);\n\n // Project zRange from meters to common space\n const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];\n const elevationMin = (zRange && zRange[0] * unitsPerMeter) || 0;\n const elevationMax = (zRange && zRange[1] * unitsPerMeter) || 0;\n\n // Always load at the current zoom level if pitch is small\n const minZ = viewport instanceof WebMercatorViewport && viewport.pitch <= 60 ? maxZ : 0;\n\n // Map extent to OSM position\n if (bounds) {\n const [minLng, minLat, maxLng, maxLat] = bounds;\n const topLeft = lngLatToWorld([minLng, maxLat]);\n const bottomRight = lngLatToWorld([maxLng, minLat]);\n bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];\n }\n\n const root = new OSMNode(0, 0, 0);\n const traversalParams = {\n viewport,\n project,\n cullingVolume,\n elevationBounds: [elevationMin, elevationMax] as ZRange,\n minZ,\n maxZ,\n bounds,\n // num. of worlds from the center. For repeated maps\n offset: 0\n };\n\n root.update(traversalParams);\n\n if (\n viewport instanceof WebMercatorViewport &&\n viewport.subViewports &&\n viewport.subViewports.length > 1\n ) {\n // Check worlds in repeated maps\n traversalParams.offset = -1;\n while (root.update(traversalParams)) {\n if (--traversalParams.offset < -MAX_MAPS) {\n break;\n }\n }\n traversalParams.offset = 1;\n while (root.update(traversalParams)) {\n if (++traversalParams.offset > MAX_MAPS) {\n break;\n }\n }\n }\n\n return root.getSelected();\n}\n"],"file":"tile-2d-traversal.js"}
|
|
@@ -183,7 +183,7 @@ var Tileset2D = function () {
|
|
|
183
183
|
zRange = _ref.zRange,
|
|
184
184
|
modelMatrix = _ref.modelMatrix;
|
|
185
185
|
|
|
186
|
-
var modelMatrixAsMatrix4 = new _core.Matrix4(modelMatrix);
|
|
186
|
+
var modelMatrixAsMatrix4 = modelMatrix ? new _core.Matrix4(modelMatrix) : new _core.Matrix4();
|
|
187
187
|
var isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);
|
|
188
188
|
|
|
189
189
|
if (!this._viewport || !viewport.equals(this._viewport) || !(0, _core.equals)(this._zRange, zRange) || isModelMatrixNew) {
|