@deck.gl/geo-layers 8.10.0-alpha.7 → 9.0.0-alpha.3
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} +9 -9
- 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 +436 -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 +436 -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/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
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/geo-layers",
|
|
3
3
|
"description": "deck.gl layers supporting geospatial use cases and GIS formats",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "9.0.0-alpha.3",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -31,16 +31,15 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@babel/runtime": "^7.0.0",
|
|
34
|
-
"@loaders.gl/3d-tiles": "
|
|
35
|
-
"@loaders.gl/gis": "
|
|
36
|
-
"@loaders.gl/loader-utils": "
|
|
37
|
-
"@loaders.gl/mvt": "
|
|
38
|
-
"@loaders.gl/schema": "
|
|
39
|
-
"@loaders.gl/terrain": "
|
|
40
|
-
"@loaders.gl/tiles": "
|
|
41
|
-
"@loaders.gl/wms": "
|
|
42
|
-
"@luma.gl/
|
|
43
|
-
"@luma.gl/experimental": "^8.5.20",
|
|
34
|
+
"@loaders.gl/3d-tiles": "4.0.3",
|
|
35
|
+
"@loaders.gl/gis": "4.0.3",
|
|
36
|
+
"@loaders.gl/loader-utils": "4.0.3",
|
|
37
|
+
"@loaders.gl/mvt": "4.0.3",
|
|
38
|
+
"@loaders.gl/schema": "4.0.3",
|
|
39
|
+
"@loaders.gl/terrain": "4.0.3",
|
|
40
|
+
"@loaders.gl/tiles": "4.0.3",
|
|
41
|
+
"@loaders.gl/wms": "4.0.3",
|
|
42
|
+
"@luma.gl/core": "9.0.0-alpha.42",
|
|
44
43
|
"@math.gl/core": "^4.0.0",
|
|
45
44
|
"@math.gl/culling": "^4.0.0",
|
|
46
45
|
"@math.gl/web-mercator": "^4.0.0",
|
|
@@ -53,8 +52,9 @@
|
|
|
53
52
|
"@deck.gl/extensions": "^8.0.0",
|
|
54
53
|
"@deck.gl/layers": "^8.0.0",
|
|
55
54
|
"@deck.gl/mesh-layers": "^8.0.0",
|
|
56
|
-
"@loaders.gl/core": "
|
|
57
|
-
"@luma.gl/core": "
|
|
55
|
+
"@loaders.gl/core": "4.0.3",
|
|
56
|
+
"@luma.gl/core": "9.0.0-alpha.42",
|
|
57
|
+
"@luma.gl/shadertools": "9.0.0-alpha.42"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "51dfb88f9168ccf478d01b28a2c5ada7bd8281c7"
|
|
60
60
|
}
|
|
@@ -6,7 +6,7 @@ const defaultProps: DefaultProps<GeoCellLayerProps> = {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
/** All properties supported by GeoCellLayer. */
|
|
9
|
-
export type GeoCellLayerProps<DataT =
|
|
9
|
+
export type GeoCellLayerProps<DataT = unknown> = PolygonLayerProps<DataT>;
|
|
10
10
|
|
|
11
11
|
export default class GeoCellLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<
|
|
12
12
|
Required<GeoCellLayerProps<DataT>> & ExtraProps
|
|
@@ -3,13 +3,13 @@ import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
|
|
|
3
3
|
import {getGeohashPolygon} from './geohash-utils';
|
|
4
4
|
|
|
5
5
|
const defaultProps: DefaultProps<GeohashLayerProps> = {
|
|
6
|
-
getGeohash: {type: 'accessor', value: d => d.geohash}
|
|
6
|
+
getGeohash: {type: 'accessor', value: (d: any) => d.geohash}
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Properties of `GeohashLayer`.
|
|
11
11
|
*/
|
|
12
|
-
type GeohashLayerProps<DataT =
|
|
12
|
+
type GeohashLayerProps<DataT = unknown> = {
|
|
13
13
|
/**
|
|
14
14
|
* Called for each data object to retrieve the geohash string identifier.
|
|
15
15
|
*
|
|
@@ -26,7 +26,7 @@ const defaultProps: DefaultProps<ArcLayerProps> = {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
/** All properties supported by GreatCircleLayer. */
|
|
29
|
-
export type GreatCircleLayerProps<DataT =
|
|
29
|
+
export type GreatCircleLayerProps<DataT = unknown> = ArcLayerProps<DataT>;
|
|
30
30
|
|
|
31
31
|
// This layer has been merged into the core ArcLayer
|
|
32
32
|
// Keeping for backward-compatibility
|
|
@@ -6,11 +6,11 @@ import GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';
|
|
|
6
6
|
import {normalizeLongitudes} from './h3-utils';
|
|
7
7
|
|
|
8
8
|
const defaultProps: DefaultProps<H3ClusterLayerProps> = {
|
|
9
|
-
getHexagons: {type: 'accessor', value: d => d.hexagons}
|
|
9
|
+
getHexagons: {type: 'accessor', value: (d: any) => d.hexagons}
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
/** All properties supported by H3ClusterLayer. */
|
|
13
|
-
export type H3ClusterLayerProps<DataT =
|
|
13
|
+
export type H3ClusterLayerProps<DataT = unknown> = _H3ClusterLayerProps<DataT> &
|
|
14
14
|
GeoCellLayerProps<DataT>;
|
|
15
15
|
|
|
16
16
|
/** Properties added by H3ClusterLayer. */
|
|
@@ -30,6 +30,10 @@ export default class H3ClusterLayer<DataT = any, ExtraProps extends {} = {}> ext
|
|
|
30
30
|
static layerName = 'H3ClusterLayer';
|
|
31
31
|
static defaultProps = defaultProps;
|
|
32
32
|
|
|
33
|
+
state!: {
|
|
34
|
+
polygons: {polygon: number[][][]}[];
|
|
35
|
+
};
|
|
36
|
+
|
|
33
37
|
initializeState(): void {
|
|
34
38
|
H3HexagonLayer._checkH3Lib();
|
|
35
39
|
}
|
|
@@ -42,12 +42,12 @@ const defaultProps: DefaultProps<H3HexagonLayerProps> = {
|
|
|
42
42
|
highPrecision: 'auto',
|
|
43
43
|
coverage: {type: 'number', min: 0, max: 1, value: 1},
|
|
44
44
|
centerHexagon: null,
|
|
45
|
-
getHexagon: {type: 'accessor', value: x => x.hexagon},
|
|
45
|
+
getHexagon: {type: 'accessor', value: (x: any) => x.hexagon},
|
|
46
46
|
extruded: true
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
/** All properties supported by H3HexagonLayer */
|
|
50
|
-
export type H3HexagonLayerProps<DataT =
|
|
50
|
+
export type H3HexagonLayerProps<DataT = unknown> = _H3HexagonLayerProps<DataT> &
|
|
51
51
|
PolygonLayerProps<DataT>;
|
|
52
52
|
|
|
53
53
|
/** Props added by the H3HexagonLayer */
|
package/src/index.ts
CHANGED
|
@@ -27,7 +27,8 @@ export {default as TileLayer} from './tile-layer/tile-layer';
|
|
|
27
27
|
export {default as TripsLayer} from './trips-layer/trips-layer';
|
|
28
28
|
export {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';
|
|
29
29
|
export {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';
|
|
30
|
-
|
|
30
|
+
// TODO v9 layers that depend on luma glTF code
|
|
31
|
+
// export {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';
|
|
31
32
|
export {default as TerrainLayer} from './terrain-layer/terrain-layer';
|
|
32
33
|
export {default as MVTLayer} from './mvt-layer/mvt-layer';
|
|
33
34
|
export {default as GeohashLayer} from './geohash-layer/geohash-layer';
|
|
@@ -43,8 +44,9 @@ export type {S2LayerProps} from './s2-layer/s2-layer';
|
|
|
43
44
|
export type {TileLayerProps} from './tile-layer/tile-layer';
|
|
44
45
|
export type {TripsLayerProps} from './trips-layer/trips-layer';
|
|
45
46
|
export type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';
|
|
47
|
+
// TODO v9 layers that depend on luma glTF code
|
|
46
48
|
export type {TerrainLayerProps} from './terrain-layer/terrain-layer';
|
|
47
|
-
export type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';
|
|
49
|
+
// export type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';
|
|
48
50
|
export type {MVTLayerProps} from './mvt-layer/mvt-layer';
|
|
49
51
|
export type {GeoCellLayerProps as _GeoCellLayerProps} from './geo-cell-layer/GeoCellLayer';
|
|
50
52
|
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import type {NumericArray} from '@math.gl/core';
|
|
2
|
+
import {GLTFMaterialParser} from '@luma.gl/experimental';
|
|
3
|
+
import {pbr} from '@luma.gl/shadertools';
|
|
4
|
+
import {Model} from '@luma.gl/engine';
|
|
5
|
+
import {GL} from '@luma.gl/constants';
|
|
6
|
+
import type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';
|
|
7
|
+
import type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';
|
|
8
|
+
import {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';
|
|
9
|
+
|
|
10
|
+
import vs from './mesh-layer-vertex.glsl';
|
|
11
|
+
import fs from './mesh-layer-fragment.glsl';
|
|
12
|
+
|
|
13
|
+
export type Mesh = {
|
|
14
|
+
attributes: MeshAttributes;
|
|
15
|
+
indices?: MeshAttribute;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
function validateGeometryAttributes(attributes) {
|
|
19
|
+
const hasColorAttribute = attributes.COLOR_0 || attributes.colors;
|
|
20
|
+
if (!hasColorAttribute) {
|
|
21
|
+
attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const defaultProps: DefaultProps<MeshLayerProps> = {
|
|
26
|
+
pbrMaterial: {type: 'object', value: null},
|
|
27
|
+
featureIds: {type: 'array', value: null, optional: true}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/** All properties supported by MeshLayer. */
|
|
31
|
+
export type MeshLayerProps<DataT = unknown> = _MeshLayerProps & SimpleMeshLayerProps<DataT>;
|
|
32
|
+
|
|
33
|
+
/** Properties added by MeshLayer. */
|
|
34
|
+
type _MeshLayerProps = {
|
|
35
|
+
/**
|
|
36
|
+
* PBR material object. _lighting must be pbr for this to work
|
|
37
|
+
*/
|
|
38
|
+
pbrMaterial?: any; // TODO add type when converting Tile3DLayer
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* List of feature ids.
|
|
42
|
+
*/
|
|
43
|
+
featureIds?: NumericArray | null;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<
|
|
47
|
+
DataT,
|
|
48
|
+
Required<_MeshLayerProps> & ExtraProps
|
|
49
|
+
> {
|
|
50
|
+
static layerName = 'MeshLayer';
|
|
51
|
+
static defaultProps = defaultProps;
|
|
52
|
+
|
|
53
|
+
getShaders() {
|
|
54
|
+
const shaders = super.getShaders();
|
|
55
|
+
const modules = shaders.modules;
|
|
56
|
+
modules.push(pbr);
|
|
57
|
+
return {...shaders, vs, fs};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
initializeState() {
|
|
61
|
+
const {featureIds} = this.props;
|
|
62
|
+
super.initializeState();
|
|
63
|
+
|
|
64
|
+
const attributeManager = this.getAttributeManager();
|
|
65
|
+
if (featureIds) {
|
|
66
|
+
// attributeManager is always defined in a primitive layer
|
|
67
|
+
attributeManager.add({
|
|
68
|
+
featureIdsPickingColors: {
|
|
69
|
+
type: GL.UNSIGNED_BYTE,
|
|
70
|
+
size: 3,
|
|
71
|
+
noAlloc: true,
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
73
|
+
update: this.calculateFeatureIdsPickingColors
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
updateState(params: UpdateParameters<this>) {
|
|
80
|
+
super.updateState(params);
|
|
81
|
+
|
|
82
|
+
const {props, oldProps} = params;
|
|
83
|
+
if (props.pbrMaterial !== oldProps.pbrMaterial) {
|
|
84
|
+
this.updatePbrMaterialUniforms(props.pbrMaterial);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
draw(opts) {
|
|
89
|
+
const {featureIds} = this.props;
|
|
90
|
+
if (!this.state.model) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.state.model.setUniforms({
|
|
94
|
+
// Needed for PBR (TODO: find better way to get it)
|
|
95
|
+
// eslint-disable-next-line camelcase
|
|
96
|
+
u_Camera: this.state.model.getUniforms().project_uCameraPosition,
|
|
97
|
+
pickFeatureIds: Boolean(featureIds)
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
super.draw(opts);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
protected getModel(mesh: Mesh): Model {
|
|
104
|
+
const {id, pbrMaterial} = this.props;
|
|
105
|
+
const materialParser = this.parseMaterial(pbrMaterial, mesh);
|
|
106
|
+
// Keep material parser to explicitly remove textures
|
|
107
|
+
this.setState({materialParser});
|
|
108
|
+
const shaders = this.getShaders();
|
|
109
|
+
validateGeometryAttributes(mesh.attributes);
|
|
110
|
+
const model = new Model(this.context.device, {
|
|
111
|
+
...this.getShaders(),
|
|
112
|
+
id,
|
|
113
|
+
geometry: mesh,
|
|
114
|
+
defines: {
|
|
115
|
+
...shaders.defines,
|
|
116
|
+
...materialParser?.defines,
|
|
117
|
+
HAS_UV_REGIONS: mesh.attributes.uvRegions
|
|
118
|
+
},
|
|
119
|
+
parameters: materialParser?.parameters,
|
|
120
|
+
isInstanced: true
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
return model;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
updatePbrMaterialUniforms(pbrMaterial) {
|
|
127
|
+
const {model} = this.state;
|
|
128
|
+
if (model) {
|
|
129
|
+
const {mesh} = this.props;
|
|
130
|
+
const materialParser = this.parseMaterial(pbrMaterial, mesh);
|
|
131
|
+
// Keep material parser to explicitly remove textures
|
|
132
|
+
this.setState({materialParser});
|
|
133
|
+
model.setUniforms(materialParser.uniforms);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
parseMaterial(pbrMaterial, mesh) {
|
|
138
|
+
const unlit = Boolean(
|
|
139
|
+
pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
this.state.materialParser?.delete();
|
|
143
|
+
|
|
144
|
+
return new GLTFMaterialParser(this.context.device, {
|
|
145
|
+
attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},
|
|
146
|
+
material: {unlit, ...pbrMaterial},
|
|
147
|
+
pbrDebug: false,
|
|
148
|
+
imageBasedLightingEnvironment: null,
|
|
149
|
+
lights: true,
|
|
150
|
+
useTangents: false
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
calculateFeatureIdsPickingColors(attribute) {
|
|
155
|
+
// This updater is only called if featureIds is not null
|
|
156
|
+
const featureIds = this.props.featureIds;
|
|
157
|
+
const value = new Uint8ClampedArray(featureIds.length * attribute.size);
|
|
158
|
+
|
|
159
|
+
const pickingColor = [];
|
|
160
|
+
for (let index = 0; index < featureIds.length; index++) {
|
|
161
|
+
this.encodePickingColor(featureIds[index], pickingColor);
|
|
162
|
+
|
|
163
|
+
value[index * 3] = pickingColor[0];
|
|
164
|
+
value[index * 3 + 1] = pickingColor[1];
|
|
165
|
+
value[index * 3 + 2] = pickingColor[2];
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
attribute.value = value;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
finalizeState(context: LayerContext) {
|
|
172
|
+
super.finalizeState(context);
|
|
173
|
+
this.state.materialParser?.delete();
|
|
174
|
+
this.setState({materialParser: null});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
Tileset2D,
|
|
32
32
|
Tile2DHeader,
|
|
33
33
|
getURLFromTemplate,
|
|
34
|
+
URLTemplate,
|
|
34
35
|
isGeoBoundingBox,
|
|
35
36
|
isURLTemplate
|
|
36
37
|
} from '../tileset-2d';
|
|
@@ -102,6 +103,15 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
|
|
|
102
103
|
static layerName = 'MVTLayer';
|
|
103
104
|
static defaultProps = defaultProps;
|
|
104
105
|
|
|
106
|
+
state!: TileLayer<ParsedMvtTile>['state'] & {
|
|
107
|
+
binary: boolean;
|
|
108
|
+
data: URLTemplate;
|
|
109
|
+
tileJSON: any;
|
|
110
|
+
highlightColor: number[];
|
|
111
|
+
hoveredFeatureId: number | string | null;
|
|
112
|
+
hoveredFeatureLayerName: string | null;
|
|
113
|
+
};
|
|
114
|
+
|
|
105
115
|
initializeState(): void {
|
|
106
116
|
super.initializeState();
|
|
107
117
|
// GlobeView doesn't work well with binary data
|
|
@@ -114,7 +124,7 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
|
|
|
114
124
|
}
|
|
115
125
|
|
|
116
126
|
get isLoaded(): boolean {
|
|
117
|
-
return this.state && this.state.data && this.state.tileset && super.isLoaded;
|
|
127
|
+
return Boolean(this.state && this.state.data && this.state.tileset && super.isLoaded);
|
|
118
128
|
}
|
|
119
129
|
|
|
120
130
|
updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {
|
|
@@ -169,14 +179,14 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
|
|
|
169
179
|
|
|
170
180
|
if (tileJSON) {
|
|
171
181
|
if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {
|
|
172
|
-
opts.minZoom = tileJSON.minzoom
|
|
182
|
+
opts.minZoom = tileJSON.minzoom;
|
|
173
183
|
}
|
|
174
184
|
|
|
175
185
|
if (
|
|
176
186
|
Number.isFinite(tileJSON.maxzoom) &&
|
|
177
187
|
(!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))
|
|
178
188
|
) {
|
|
179
|
-
opts.maxZoom = tileJSON.maxzoom
|
|
189
|
+
opts.maxZoom = tileJSON.maxzoom;
|
|
180
190
|
}
|
|
181
191
|
}
|
|
182
192
|
return opts;
|
|
@@ -340,8 +350,8 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
|
|
|
340
350
|
return findIndexBinary(
|
|
341
351
|
data,
|
|
342
352
|
uniqueIdProperty,
|
|
343
|
-
featureIdToHighlight
|
|
344
|
-
isHighlighted ? '' : hoveredFeatureLayerName
|
|
353
|
+
featureIdToHighlight!,
|
|
354
|
+
isHighlighted ? '' : hoveredFeatureLayerName!
|
|
345
355
|
);
|
|
346
356
|
}
|
|
347
357
|
|
|
@@ -382,7 +392,7 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
|
|
|
382
392
|
|
|
383
393
|
private _setWGS84PropertyForTiles(): void {
|
|
384
394
|
const propName = 'dataInWGS84';
|
|
385
|
-
const tileset: Tileset2D = this.state.tileset
|
|
395
|
+
const tileset: Tileset2D = this.state.tileset!;
|
|
386
396
|
|
|
387
397
|
// @ts-expect-error selectedTiles are always initialized when tile is being processed
|
|
388
398
|
tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {
|
|
@@ -3,11 +3,12 @@ import GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';
|
|
|
3
3
|
import {getQuadkeyPolygon} from './quadkey-utils';
|
|
4
4
|
|
|
5
5
|
const defaultProps: DefaultProps<QuadkeyLayerProps> = {
|
|
6
|
-
getQuadkey: {type: 'accessor', value: d => d.quadkey}
|
|
6
|
+
getQuadkey: {type: 'accessor', value: (d: any) => d.quadkey}
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
/** All properties supported by QuadkeyLayer. */
|
|
10
|
-
export type QuadkeyLayerProps<DataT =
|
|
10
|
+
export type QuadkeyLayerProps<DataT = unknown> = _QuadkeyLayerProps<DataT> &
|
|
11
|
+
GeoCellLayerProps<DataT>;
|
|
11
12
|
|
|
12
13
|
/** Properties added by QuadkeyLayer. */
|
|
13
14
|
type _QuadkeyLayerProps<DataT> = {
|
package/src/s2-layer/s2-layer.ts
CHANGED
|
@@ -23,11 +23,11 @@ import GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';
|
|
|
23
23
|
import {getS2Polygon} from './s2-utils';
|
|
24
24
|
|
|
25
25
|
const defaultProps: DefaultProps<S2LayerProps> = {
|
|
26
|
-
getS2Token: {type: 'accessor', value: d => d.token}
|
|
26
|
+
getS2Token: {type: 'accessor', value: (d: any) => d.token}
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
/** All properties supported by S2Layer. */
|
|
30
|
-
export type S2LayerProps<DataT =
|
|
30
|
+
export type S2LayerProps<DataT = unknown> = _S2LayerProps<DataT> & GeoCellLayerProps<DataT>;
|
|
31
31
|
|
|
32
32
|
/** Properties added by S2Layer. */
|
|
33
33
|
type _S2LayerProps<DataT> = {
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
LayersList,
|
|
28
28
|
log,
|
|
29
29
|
Material,
|
|
30
|
-
|
|
30
|
+
TextureSource,
|
|
31
31
|
UpdateParameters
|
|
32
32
|
} from '@deck.gl/core';
|
|
33
33
|
import {SimpleMeshLayer} from '@deck.gl/mesh-layers';
|
|
@@ -88,7 +88,7 @@ type TerrainLoadProps = {
|
|
|
88
88
|
signal?: AbortSignal;
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
-
type MeshAndTexture = [MeshAttributes | null,
|
|
91
|
+
type MeshAndTexture = [MeshAttributes | null, TextureSource | null];
|
|
92
92
|
|
|
93
93
|
/** All properties supported by TerrainLayer */
|
|
94
94
|
export type TerrainLayerProps = _TerrainLayerProps &
|