@deck.gl/geo-layers 9.0.0-beta.2 → 9.0.0-beta.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 +2796 -7199
- package/dist/geo-cell-layer/GeoCellLayer.js +51 -0
- package/dist/geohash-layer/geohash-layer.js +19 -0
- package/dist/geohash-layer/geohash-utils.js +50 -0
- package/dist/great-circle-layer/great-circle-layer.js +12 -0
- package/dist/h3-layers/h3-cluster-layer.js +47 -0
- package/dist/h3-layers/h3-hexagon-layer.js +204 -0
- package/dist/h3-layers/h3-utils.js +56 -0
- package/dist/index.cjs +3199 -0
- package/dist/index.cjs.map +7 -0
- package/{typed → dist}/index.d.ts +5 -5
- package/{typed → dist}/index.d.ts.map +1 -1
- package/dist/index.js +36 -0
- package/dist/{esm/mesh-layer → mesh-layer}/mesh-layer-fragment.glsl.js +0 -1
- package/dist/{esm/mesh-layer → mesh-layer}/mesh-layer-vertex.glsl.js +0 -1
- package/dist/mesh-layer/mesh-layer.js +129 -0
- package/{typed → dist}/mvt-layer/coordinate-transform.d.ts +1 -1
- package/{typed → dist}/mvt-layer/coordinate-transform.d.ts.map +1 -1
- package/dist/mvt-layer/coordinate-transform.js +41 -0
- package/dist/mvt-layer/find-index-binary.d.ts +11 -0
- package/dist/mvt-layer/find-index-binary.d.ts.map +1 -0
- package/dist/mvt-layer/find-index-binary.js +96 -0
- package/{typed → dist}/mvt-layer/mvt-layer.d.ts +6 -5
- package/dist/mvt-layer/mvt-layer.d.ts.map +1 -0
- package/dist/mvt-layer/mvt-layer.js +305 -0
- package/dist/quadkey-layer/quadkey-layer.js +22 -0
- package/dist/quadkey-layer/quadkey-utils.js +26 -0
- package/dist/s2-layer/s2-geometry.js +123 -0
- package/dist/s2-layer/s2-layer.js +38 -0
- package/dist/s2-layer/s2-utils.js +87 -0
- package/{typed → dist}/terrain-layer/terrain-layer.d.ts +3 -3
- package/dist/terrain-layer/terrain-layer.d.ts.map +1 -0
- package/dist/terrain-layer/terrain-layer.js +233 -0
- package/dist/tile-3d-layer/tile-3d-layer.js +302 -0
- package/{typed → dist}/tile-layer/tile-layer.d.ts +3 -3
- package/dist/tile-layer/tile-layer.d.ts.map +1 -0
- package/dist/tile-layer/tile-layer.js +204 -0
- package/dist/tileset-2d/index.js +4 -0
- package/dist/tileset-2d/memoize.js +41 -0
- package/{typed → dist}/tileset-2d/tile-2d-header.d.ts +2 -1
- package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
- package/dist/tileset-2d/tile-2d-header.js +135 -0
- package/{typed → dist}/tileset-2d/tile-2d-traversal.d.ts +1 -1
- package/{typed → dist}/tileset-2d/tile-2d-traversal.d.ts.map +1 -1
- package/dist/tileset-2d/tile-2d-traversal.js +182 -0
- package/{typed → dist}/tileset-2d/tileset-2d.d.ts +4 -4
- package/{typed → dist}/tileset-2d/tileset-2d.d.ts.map +1 -1
- package/dist/tileset-2d/tileset-2d.js +456 -0
- package/dist/tileset-2d/types.js +1 -0
- package/{typed → dist}/tileset-2d/utils.d.ts +2 -2
- package/dist/tileset-2d/utils.d.ts.map +1 -0
- package/dist/tileset-2d/utils.js +234 -0
- package/dist/trips-layer/trips-layer.js +93 -0
- package/dist/wms-layer/utils.js +13 -0
- package/dist/wms-layer/wms-layer.js +192 -0
- package/dist.min.js +27 -162
- package/package.json +32 -18
- package/src/index.ts +5 -5
- package/src/mvt-layer/coordinate-transform.ts +1 -1
- package/src/mvt-layer/find-index-binary.ts +5 -9
- package/src/mvt-layer/mvt-layer.ts +19 -15
- package/src/terrain-layer/terrain-layer.ts +13 -3
- package/src/tile-layer/tile-layer.ts +8 -9
- package/src/tileset-2d/tile-2d-header.ts +2 -1
- package/src/tileset-2d/tile-2d-traversal.ts +1 -1
- package/src/tileset-2d/tileset-2d.ts +7 -3
- package/src/tileset-2d/utils.ts +2 -2
- package/src/wms-layer/wms-layer.ts +1 -1
- package/dist/es5/geo-cell-layer/GeoCellLayer.js +0 -118
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +0 -1
- package/dist/es5/geohash-layer/geohash-layer.js +0 -67
- package/dist/es5/geohash-layer/geohash-layer.js.map +0 -1
- package/dist/es5/geohash-layer/geohash-utils.js +0 -77
- package/dist/es5/geohash-layer/geohash-utils.js.map +0 -1
- package/dist/es5/great-circle-layer/great-circle-layer.js +0 -48
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +0 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +0 -162
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +0 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +0 -351
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +0 -1
- package/dist/es5/h3-layers/h3-utils.js +0 -111
- package/dist/es5/h3-layers/h3-utils.js.map +0 -1
- package/dist/es5/index.js +0 -132
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +0 -9
- package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +0 -9
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
- package/dist/es5/mesh-layer/mesh-layer.js +0 -217
- package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +0 -83
- package/dist/es5/mvt-layer/coordinate-transform.js.map +0 -1
- package/dist/es5/mvt-layer/find-index-binary.js +0 -127
- package/dist/es5/mvt-layer/find-index-binary.js.map +0 -1
- package/dist/es5/mvt-layer/mvt-layer.js +0 -533
- package/dist/es5/mvt-layer/mvt-layer.js.map +0 -1
- package/dist/es5/quadkey-layer/quadkey-layer.js +0 -72
- package/dist/es5/quadkey-layer/quadkey-layer.js.map +0 -1
- package/dist/es5/quadkey-layer/quadkey-utils.js +0 -53
- package/dist/es5/quadkey-layer/quadkey-utils.js.map +0 -1
- package/dist/es5/s2-layer/s2-geometry.js +0 -158
- package/dist/es5/s2-layer/s2-geometry.js.map +0 -1
- package/dist/es5/s2-layer/s2-layer.js +0 -67
- package/dist/es5/s2-layer/s2-layer.js.map +0 -1
- package/dist/es5/s2-layer/s2-utils.js +0 -80
- package/dist/es5/s2-layer/s2-utils.js.map +0 -1
- package/dist/es5/terrain-layer/terrain-layer.js +0 -347
- package/dist/es5/terrain-layer/terrain-layer.js.map +0 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -511
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
- package/dist/es5/tile-layer/tile-layer.js +0 -363
- package/dist/es5/tile-layer/tile-layer.js.map +0 -1
- package/dist/es5/tileset-2d/index.js +0 -66
- package/dist/es5/tileset-2d/index.js.map +0 -1
- package/dist/es5/tileset-2d/memoize.js +0 -47
- package/dist/es5/tileset-2d/memoize.js.map +0 -1
- package/dist/es5/tileset-2d/tile-2d-header.js +0 -250
- package/dist/es5/tileset-2d/tile-2d-header.js.map +0 -1
- package/dist/es5/tileset-2d/tile-2d-traversal.js +0 -256
- package/dist/es5/tileset-2d/tile-2d-traversal.js.map +0 -1
- package/dist/es5/tileset-2d/tileset-2d.js +0 -757
- package/dist/es5/tileset-2d/tileset-2d.js.map +0 -1
- package/dist/es5/tileset-2d/types.js +0 -2
- package/dist/es5/tileset-2d/types.js.map +0 -1
- package/dist/es5/tileset-2d/utils.js +0 -302
- package/dist/es5/tileset-2d/utils.js.map +0 -1
- package/dist/es5/trips-layer/trips-layer.js +0 -114
- package/dist/es5/trips-layer/trips-layer.js.map +0 -1
- package/dist/es5/wms-layer/utils.js +0 -18
- package/dist/es5/wms-layer/utils.js.map +0 -1
- package/dist/es5/wms-layer/wms-layer.js +0 -376
- package/dist/es5/wms-layer/wms-layer.js.map +0 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js +0 -72
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +0 -1
- package/dist/esm/geohash-layer/geohash-layer.js +0 -26
- package/dist/esm/geohash-layer/geohash-layer.js.map +0 -1
- package/dist/esm/geohash-layer/geohash-utils.js +0 -56
- package/dist/esm/geohash-layer/geohash-utils.js.map +0 -1
- package/dist/esm/great-circle-layer/great-circle-layer.js +0 -12
- package/dist/esm/great-circle-layer/great-circle-layer.js.map +0 -1
- package/dist/esm/h3-layers/h3-cluster-layer.js +0 -79
- package/dist/esm/h3-layers/h3-cluster-layer.js.map +0 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js +0 -280
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +0 -1
- package/dist/esm/h3-layers/h3-utils.js +0 -54
- package/dist/esm/h3-layers/h3-utils.js.map +0 -1
- package/dist/esm/index.js +0 -17
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
- package/dist/esm/mesh-layer/mesh-layer.js +0 -178
- package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
- package/dist/esm/mvt-layer/coordinate-transform.js +0 -49
- package/dist/esm/mvt-layer/coordinate-transform.js.map +0 -1
- package/dist/esm/mvt-layer/find-index-binary.js +0 -99
- package/dist/esm/mvt-layer/find-index-binary.js.map +0 -1
- package/dist/esm/mvt-layer/mvt-layer.js +0 -427
- package/dist/esm/mvt-layer/mvt-layer.js.map +0 -1
- package/dist/esm/quadkey-layer/quadkey-layer.js +0 -31
- package/dist/esm/quadkey-layer/quadkey-layer.js.map +0 -1
- package/dist/esm/quadkey-layer/quadkey-utils.js +0 -24
- package/dist/esm/quadkey-layer/quadkey-utils.js.map +0 -1
- package/dist/esm/s2-layer/s2-geometry.js +0 -126
- package/dist/esm/s2-layer/s2-geometry.js.map +0 -1
- package/dist/esm/s2-layer/s2-layer.js +0 -26
- package/dist/esm/s2-layer/s2-layer.js.map +0 -1
- package/dist/esm/s2-layer/s2-utils.js +0 -69
- package/dist/esm/s2-layer/s2-utils.js.map +0 -1
- package/dist/esm/terrain-layer/terrain-layer.js +0 -292
- package/dist/esm/terrain-layer/terrain-layer.js.map +0 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -438
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
- package/dist/esm/tile-layer/tile-layer.js +0 -299
- package/dist/esm/tile-layer/tile-layer.js.map +0 -1
- package/dist/esm/tileset-2d/index.js +0 -4
- package/dist/esm/tileset-2d/index.js.map +0 -1
- package/dist/esm/tileset-2d/memoize.js +0 -40
- package/dist/esm/tileset-2d/memoize.js.map +0 -1
- package/dist/esm/tileset-2d/tile-2d-header.js +0 -179
- package/dist/esm/tileset-2d/tile-2d-header.js.map +0 -1
- package/dist/esm/tileset-2d/tile-2d-traversal.js +0 -184
- package/dist/esm/tileset-2d/tile-2d-traversal.js.map +0 -1
- package/dist/esm/tileset-2d/tileset-2d.js +0 -509
- package/dist/esm/tileset-2d/tileset-2d.js.map +0 -1
- package/dist/esm/tileset-2d/types.js +0 -2
- package/dist/esm/tileset-2d/types.js.map +0 -1
- package/dist/esm/tileset-2d/utils.js +0 -233
- package/dist/esm/tileset-2d/utils.js.map +0 -1
- package/dist/esm/trips-layer/trips-layer.js +0 -88
- package/dist/esm/trips-layer/trips-layer.js.map +0 -1
- package/dist/esm/wms-layer/utils.js +0 -9
- package/dist/esm/wms-layer/utils.js.map +0 -1
- package/dist/esm/wms-layer/wms-layer.js +0 -231
- package/dist/esm/wms-layer/wms-layer.js.map +0 -1
- package/typed/mvt-layer/find-index-binary.d.ts +0 -12
- package/typed/mvt-layer/find-index-binary.d.ts.map +0 -1
- package/typed/mvt-layer/mvt-layer.d.ts.map +0 -1
- package/typed/terrain-layer/terrain-layer.d.ts.map +0 -1
- package/typed/tile-layer/tile-layer.d.ts.map +0 -1
- package/typed/tileset-2d/tile-2d-header.d.ts.map +0 -1
- package/typed/tileset-2d/utils.d.ts.map +0 -1
- /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts +0 -0
- /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts.map +0 -0
- /package/{typed → dist}/geohash-layer/geohash-layer.d.ts +0 -0
- /package/{typed → dist}/geohash-layer/geohash-layer.d.ts.map +0 -0
- /package/{typed → dist}/geohash-layer/geohash-utils.d.ts +0 -0
- /package/{typed → dist}/geohash-layer/geohash-utils.d.ts.map +0 -0
- /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts +0 -0
- /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts.map +0 -0
- /package/{typed → dist}/h3-layers/h3-cluster-layer.d.ts +0 -0
- /package/{typed → dist}/h3-layers/h3-cluster-layer.d.ts.map +0 -0
- /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts +0 -0
- /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts.map +0 -0
- /package/{typed → dist}/h3-layers/h3-utils.d.ts +0 -0
- /package/{typed → dist}/h3-layers/h3-utils.d.ts.map +0 -0
- /package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts +0 -0
- /package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +0 -0
- /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts +0 -0
- /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +0 -0
- /package/{typed → dist}/mesh-layer/mesh-layer.d.ts +0 -0
- /package/{typed → dist}/mesh-layer/mesh-layer.d.ts.map +0 -0
- /package/{typed → dist}/quadkey-layer/quadkey-layer.d.ts +0 -0
- /package/{typed → dist}/quadkey-layer/quadkey-layer.d.ts.map +0 -0
- /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts +0 -0
- /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts.map +0 -0
- /package/{typed → dist}/s2-layer/s2-geometry.d.ts +0 -0
- /package/{typed → dist}/s2-layer/s2-geometry.d.ts.map +0 -0
- /package/{typed → dist}/s2-layer/s2-layer.d.ts +0 -0
- /package/{typed → dist}/s2-layer/s2-layer.d.ts.map +0 -0
- /package/{typed → dist}/s2-layer/s2-utils.d.ts +0 -0
- /package/{typed → dist}/s2-layer/s2-utils.d.ts.map +0 -0
- /package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts +0 -0
- /package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts.map +0 -0
- /package/{typed → dist}/tileset-2d/index.d.ts +0 -0
- /package/{typed → dist}/tileset-2d/index.d.ts.map +0 -0
- /package/{typed → dist}/tileset-2d/memoize.d.ts +0 -0
- /package/{typed → dist}/tileset-2d/memoize.d.ts.map +0 -0
- /package/{typed → dist}/tileset-2d/types.d.ts +0 -0
- /package/{typed → dist}/tileset-2d/types.d.ts.map +0 -0
- /package/{typed → dist}/trips-layer/trips-layer.d.ts +0 -0
- /package/{typed → dist}/trips-layer/trips-layer.d.ts.map +0 -0
- /package/{typed → dist}/wms-layer/utils.d.ts +0 -0
- /package/{typed → dist}/wms-layer/utils.d.ts.map +0 -0
- /package/{typed → dist}/wms-layer/wms-layer.d.ts +0 -0
- /package/{typed → dist}/wms-layer/wms-layer.d.ts.map +0 -0
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import { parsePBRMaterial } from '@luma.gl/gltf';
|
|
2
|
-
import { pbr } from '@luma.gl/shadertools';
|
|
3
|
-
import { Model } from '@luma.gl/engine';
|
|
4
|
-
import { GL } from '@luma.gl/constants';
|
|
5
|
-
import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
|
|
6
|
-
import vs from './mesh-layer-vertex.glsl';
|
|
7
|
-
import fs from './mesh-layer-fragment.glsl';
|
|
8
|
-
|
|
9
|
-
function validateGeometryAttributes(attributes) {
|
|
10
|
-
const positionAttribute = attributes.positions || attributes.POSITION;
|
|
11
|
-
const vertexCount = positionAttribute.value.length / positionAttribute.size;
|
|
12
|
-
const hasColorAttribute = attributes.COLOR_0 || attributes.colors;
|
|
13
|
-
|
|
14
|
-
if (!hasColorAttribute) {
|
|
15
|
-
attributes.colors = {
|
|
16
|
-
size: 4,
|
|
17
|
-
value: new Uint8Array(vertexCount * 4).fill(255),
|
|
18
|
-
normalized: true
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const defaultProps = {
|
|
24
|
-
pbrMaterial: {
|
|
25
|
-
type: 'object',
|
|
26
|
-
value: null
|
|
27
|
-
},
|
|
28
|
-
featureIds: {
|
|
29
|
-
type: 'array',
|
|
30
|
-
value: null,
|
|
31
|
-
optional: true
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
export default class MeshLayer extends SimpleMeshLayer {
|
|
35
|
-
getShaders() {
|
|
36
|
-
const shaders = super.getShaders();
|
|
37
|
-
const modules = shaders.modules;
|
|
38
|
-
modules.push(pbr);
|
|
39
|
-
return { ...shaders,
|
|
40
|
-
vs,
|
|
41
|
-
fs
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
initializeState() {
|
|
46
|
-
const {
|
|
47
|
-
featureIds
|
|
48
|
-
} = this.props;
|
|
49
|
-
super.initializeState();
|
|
50
|
-
const attributeManager = this.getAttributeManager();
|
|
51
|
-
|
|
52
|
-
if (featureIds) {
|
|
53
|
-
attributeManager.add({
|
|
54
|
-
featureIdsPickingColors: {
|
|
55
|
-
type: 5121,
|
|
56
|
-
size: 3,
|
|
57
|
-
noAlloc: true,
|
|
58
|
-
update: this.calculateFeatureIdsPickingColors
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
updateState(params) {
|
|
65
|
-
super.updateState(params);
|
|
66
|
-
const {
|
|
67
|
-
props,
|
|
68
|
-
oldProps
|
|
69
|
-
} = params;
|
|
70
|
-
|
|
71
|
-
if (props.pbrMaterial !== oldProps.pbrMaterial) {
|
|
72
|
-
this.updatePbrMaterialUniforms(props.pbrMaterial);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
draw(opts) {
|
|
77
|
-
const {
|
|
78
|
-
featureIds
|
|
79
|
-
} = this.props;
|
|
80
|
-
|
|
81
|
-
if (!this.state.model) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
this.state.model.setUniforms({
|
|
86
|
-
u_Camera: this.state.model.uniforms.project_uCameraPosition,
|
|
87
|
-
pickFeatureIds: Boolean(featureIds)
|
|
88
|
-
});
|
|
89
|
-
super.draw(opts);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
getModel(mesh) {
|
|
93
|
-
const {
|
|
94
|
-
id,
|
|
95
|
-
pbrMaterial
|
|
96
|
-
} = this.props;
|
|
97
|
-
const parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);
|
|
98
|
-
this.setState({
|
|
99
|
-
parsedPBRMaterial
|
|
100
|
-
});
|
|
101
|
-
const shaders = this.getShaders();
|
|
102
|
-
validateGeometryAttributes(mesh.attributes);
|
|
103
|
-
const model = new Model(this.context.device, { ...this.getShaders(),
|
|
104
|
-
id,
|
|
105
|
-
geometry: mesh,
|
|
106
|
-
bufferLayout: this.getAttributeManager().getBufferLayouts(),
|
|
107
|
-
defines: { ...shaders.defines,
|
|
108
|
-
...(parsedPBRMaterial === null || parsedPBRMaterial === void 0 ? void 0 : parsedPBRMaterial.defines),
|
|
109
|
-
HAS_UV_REGIONS: mesh.attributes.uvRegions ? 1 : 0
|
|
110
|
-
},
|
|
111
|
-
parameters: parsedPBRMaterial === null || parsedPBRMaterial === void 0 ? void 0 : parsedPBRMaterial.parameters,
|
|
112
|
-
isInstanced: true
|
|
113
|
-
});
|
|
114
|
-
return model;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
updatePbrMaterialUniforms(pbrMaterial) {
|
|
118
|
-
const {
|
|
119
|
-
model
|
|
120
|
-
} = this.state;
|
|
121
|
-
|
|
122
|
-
if (model) {
|
|
123
|
-
const {
|
|
124
|
-
mesh
|
|
125
|
-
} = this.props;
|
|
126
|
-
const parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);
|
|
127
|
-
this.setState({
|
|
128
|
-
parsedPBRMaterial
|
|
129
|
-
});
|
|
130
|
-
model.setBindings(parsedPBRMaterial.bindings);
|
|
131
|
-
model.setUniforms(parsedPBRMaterial.uniforms);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
parseMaterial(pbrMaterial, mesh) {
|
|
136
|
-
const unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
|
|
137
|
-
return parsePBRMaterial(this.context.device, {
|
|
138
|
-
unlit,
|
|
139
|
-
...pbrMaterial
|
|
140
|
-
}, {
|
|
141
|
-
NORMAL: mesh.attributes.normals,
|
|
142
|
-
TEXCOORD_0: mesh.attributes.texCoords
|
|
143
|
-
}, {
|
|
144
|
-
pbrDebug: false,
|
|
145
|
-
lights: true,
|
|
146
|
-
useTangents: false
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
calculateFeatureIdsPickingColors(attribute) {
|
|
151
|
-
const featureIds = this.props.featureIds;
|
|
152
|
-
const value = new Uint8ClampedArray(featureIds.length * attribute.size);
|
|
153
|
-
const pickingColor = [];
|
|
154
|
-
|
|
155
|
-
for (let index = 0; index < featureIds.length; index++) {
|
|
156
|
-
this.encodePickingColor(featureIds[index], pickingColor);
|
|
157
|
-
value[index * 3] = pickingColor[0];
|
|
158
|
-
value[index * 3 + 1] = pickingColor[1];
|
|
159
|
-
value[index * 3 + 2] = pickingColor[2];
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
attribute.value = value;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
finalizeState(context) {
|
|
166
|
-
var _this$state$parsedPBR;
|
|
167
|
-
|
|
168
|
-
super.finalizeState(context);
|
|
169
|
-
(_this$state$parsedPBR = this.state.parsedPBRMaterial) === null || _this$state$parsedPBR === void 0 ? void 0 : _this$state$parsedPBR.generatedTextures.forEach(texture => texture.destroy());
|
|
170
|
-
this.setState({
|
|
171
|
-
parsedPBRMaterial: null
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
MeshLayer.layerName = 'MeshLayer';
|
|
177
|
-
MeshLayer.defaultProps = defaultProps;
|
|
178
|
-
//# sourceMappingURL=mesh-layer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mesh-layer/mesh-layer.ts"],"names":["parsePBRMaterial","pbr","Model","GL","SimpleMeshLayer","vs","fs","validateGeometryAttributes","attributes","positionAttribute","positions","POSITION","vertexCount","value","length","size","hasColorAttribute","COLOR_0","colors","Uint8Array","fill","normalized","defaultProps","pbrMaterial","type","featureIds","optional","MeshLayer","getShaders","shaders","modules","push","initializeState","props","attributeManager","getAttributeManager","add","featureIdsPickingColors","noAlloc","update","calculateFeatureIdsPickingColors","updateState","params","oldProps","updatePbrMaterialUniforms","draw","opts","state","model","setUniforms","u_Camera","uniforms","project_uCameraPosition","pickFeatureIds","Boolean","getModel","mesh","id","parsedPBRMaterial","parseMaterial","setState","context","device","geometry","bufferLayout","getBufferLayouts","defines","HAS_UV_REGIONS","uvRegions","parameters","isInstanced","setBindings","bindings","unlit","pbrMetallicRoughness","baseColorTexture","NORMAL","normals","TEXCOORD_0","texCoords","pbrDebug","lights","useTangents","attribute","Uint8ClampedArray","pickingColor","index","encodePickingColor","finalizeState","generatedTextures","forEach","texture","destroy","layerName"],"mappings":"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","sourcesContent":["import type {NumericArray} from '@math.gl/core';\nimport {parsePBRMaterial, ParsedPBRMaterial} from '@luma.gl/gltf';\nimport {pbr} from '@luma.gl/shadertools';\nimport {Model} from '@luma.gl/engine';\nimport {GL} from '@luma.gl/constants';\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';\nimport {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nexport type Mesh = {\n attributes: MeshAttributes;\n indices?: MeshAttribute;\n};\n\nfunction validateGeometryAttributes(attributes: MeshAttributes) {\n const positionAttribute = attributes.positions || attributes.POSITION;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {\n size: 4,\n value: new Uint8Array(vertexCount * 4).fill(255),\n normalized: true\n };\n }\n}\n\nconst defaultProps: DefaultProps<MeshLayerProps> = {\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\n/** All properties supported by MeshLayer. */\nexport type MeshLayerProps<DataT = unknown> = _MeshLayerProps & SimpleMeshLayerProps<DataT>;\n\n/** Properties added by MeshLayer. */\ntype _MeshLayerProps = {\n /**\n * PBR material object. _lighting must be pbr for this to work\n */\n pbrMaterial?: any; // TODO add type when converting Tile3DLayer\n\n /**\n * List of feature ids.\n */\n featureIds?: NumericArray | null;\n};\n\nexport default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<\n DataT,\n Required<_MeshLayerProps> & ExtraProps\n> {\n static layerName = 'MeshLayer';\n static defaultProps = defaultProps;\n\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n const attributeManager = this.getAttributeManager();\n if (featureIds) {\n // attributeManager is always defined in a primitive layer\n attributeManager!.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState(params: UpdateParameters<this>) {\n super.updateState(params);\n\n const {props, oldProps} = params;\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n // eslint-disable-next-line camelcase\n u_Camera: this.state.model.uniforms.project_uCameraPosition,\n pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n protected getModel(mesh: Mesh): Model {\n const {id, pbrMaterial} = this.props;\n const parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);\n // Keep material to explicitly remove textures\n this.setState({parsedPBRMaterial});\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.device, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n bufferLayout: this.getAttributeManager()!.getBufferLayouts(),\n defines: {\n ...shaders.defines,\n ...parsedPBRMaterial?.defines,\n HAS_UV_REGIONS: mesh.attributes.uvRegions ? 1 : 0\n },\n parameters: parsedPBRMaterial?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh as Mesh);\n // Keep material to explicitly remove textures\n this.setState({parsedPBRMaterial});\n model.setBindings(parsedPBRMaterial.bindings);\n model.setUniforms(parsedPBRMaterial.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh: Mesh): ParsedPBRMaterial {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n\n return parsePBRMaterial(\n this.context.device,\n {unlit, ...pbrMaterial},\n {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n {\n pbrDebug: false,\n lights: true,\n useTangents: false\n }\n );\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n // This updater is only called if featureIds is not null\n const featureIds = this.props.featureIds!;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n\n finalizeState(context: LayerContext) {\n super.finalizeState(context);\n this.state.parsedPBRMaterial?.generatedTextures.forEach(texture => texture.destroy());\n this.setState({parsedPBRMaterial: null});\n }\n}\n"],"file":"mesh-layer.js"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { lerp } from '@math.gl/core';
|
|
2
|
-
const availableTransformations = {
|
|
3
|
-
Point,
|
|
4
|
-
MultiPoint,
|
|
5
|
-
LineString,
|
|
6
|
-
MultiLineString,
|
|
7
|
-
Polygon,
|
|
8
|
-
MultiPolygon
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
function Point([pointX, pointY], [nw, se], viewport) {
|
|
12
|
-
const x = lerp(nw[0], se[0], pointX);
|
|
13
|
-
const y = lerp(nw[1], se[1], pointY);
|
|
14
|
-
return viewport.unprojectFlat([x, y]);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function getPoints(geometry, bbox, viewport) {
|
|
18
|
-
return geometry.map(g => Point(g, bbox, viewport));
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function MultiPoint(multiPoint, bbox, viewport) {
|
|
22
|
-
return getPoints(multiPoint, bbox, viewport);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function LineString(line, bbox, viewport) {
|
|
26
|
-
return getPoints(line, bbox, viewport);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function MultiLineString(multiLineString, bbox, viewport) {
|
|
30
|
-
return multiLineString.map(lineString => LineString(lineString, bbox, viewport));
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function Polygon(polygon, bbox, viewport) {
|
|
34
|
-
return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function MultiPolygon(multiPolygon, bbox, viewport) {
|
|
38
|
-
return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function transform(geometry, bbox, viewport) {
|
|
42
|
-
const nw = viewport.projectFlat([bbox.west, bbox.north]);
|
|
43
|
-
const se = viewport.projectFlat([bbox.east, bbox.south]);
|
|
44
|
-
const projectedBbox = [nw, se];
|
|
45
|
-
return { ...geometry,
|
|
46
|
-
coordinates: availableTransformations[geometry.type](geometry.coordinates, projectedBbox, viewport)
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=coordinate-transform.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/coordinate-transform.ts"],"names":["lerp","availableTransformations","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","pointX","pointY","nw","se","viewport","x","y","unprojectFlat","getPoints","geometry","bbox","map","g","multiPoint","line","multiLineString","lineString","polygon","polygonRing","multiPolygon","transform","projectFlat","west","north","east","south","projectedBbox","coordinates","type"],"mappings":"AACA,SAAQA,IAAR,QAAmB,eAAnB;AAGA,MAAMC,wBAAwB,GAAG;AAC/BC,EAAAA,KAD+B;AAE/BC,EAAAA,UAF+B;AAG/BC,EAAAA,UAH+B;AAI/BC,EAAAA,eAJ+B;AAK/BC,EAAAA,OAL+B;AAM/BC,EAAAA;AAN+B,CAAjC;;AASA,SAASL,KAAT,CAAe,CAACM,MAAD,EAASC,MAAT,CAAf,EAAmD,CAACC,EAAD,EAAKC,EAAL,CAAnD,EAAyEC,QAAzE,EAA6F;AAC3F,QAAMC,CAAC,GAAGb,IAAI,CAACU,EAAE,CAAC,CAAD,CAAH,EAAQC,EAAE,CAAC,CAAD,CAAV,EAAeH,MAAf,CAAd;AACA,QAAMM,CAAC,GAAGd,IAAI,CAACU,EAAE,CAAC,CAAD,CAAH,EAAQC,EAAE,CAAC,CAAD,CAAV,EAAeF,MAAf,CAAd;AAEA,SAAOG,QAAQ,CAACG,aAAT,CAAuB,CAACF,CAAD,EAAIC,CAAJ,CAAvB,CAAP;AACD;;AAED,SAASE,SAAT,CAAmBC,QAAnB,EAA6BC,IAA7B,EAA+CN,QAA/C,EAAmE;AACjE,SAAOK,QAAQ,CAACE,GAAT,CAAaC,CAAC,IAAIlB,KAAK,CAACkB,CAAD,EAAIF,IAAJ,EAAUN,QAAV,CAAvB,CAAP;AACD;;AAED,SAAST,UAAT,CAAoBkB,UAApB,EAAgCH,IAAhC,EAAkDN,QAAlD,EAAsE;AACpE,SAAOI,SAAS,CAACK,UAAD,EAAaH,IAAb,EAAmBN,QAAnB,CAAhB;AACD;;AAED,SAASR,UAAT,CAAoBkB,IAApB,EAA0BJ,IAA1B,EAA4CN,QAA5C,EAAgE;AAC9D,SAAOI,SAAS,CAACM,IAAD,EAAOJ,IAAP,EAAaN,QAAb,CAAhB;AACD;;AAED,SAASP,eAAT,CAAyBkB,eAAzB,EAA0CL,IAA1C,EAA4DN,QAA5D,EAAgF;AAC9E,SAAOW,eAAe,CAACJ,GAAhB,CAAoBK,UAAU,IAAIpB,UAAU,CAACoB,UAAD,EAAaN,IAAb,EAAmBN,QAAnB,CAA5C,CAAP;AACD;;AAED,SAASN,OAAT,CAAiBmB,OAAjB,EAA0BP,IAA1B,EAA4CN,QAA5C,EAAgE;AAC9D,SAAOa,OAAO,CAACN,GAAR,CAAYO,WAAW,IAAIV,SAAS,CAACU,WAAD,EAAcR,IAAd,EAAoBN,QAApB,CAApC,CAAP;AACD;;AAED,SAASL,YAAT,CAAsBoB,YAAtB,EAAoCT,IAApC,EAAsDN,QAAtD,EAA0E;AACxE,SAAOe,YAAY,CAACR,GAAb,CAAiBM,OAAO,IAAInB,OAAO,CAACmB,OAAD,EAAUP,IAAV,EAAgBN,QAAhB,CAAnC,CAAP;AACD;;AAED,OAAO,SAASgB,SAAT,CAAmBX,QAAnB,EAA6BC,IAA7B,EAAmDN,QAAnD,EAAuE;AAC5E,QAAMF,EAAE,GAAGE,QAAQ,CAACiB,WAAT,CAAqB,CAACX,IAAI,CAACY,IAAN,EAAYZ,IAAI,CAACa,KAAjB,CAArB,CAAX;AACA,QAAMpB,EAAE,GAAGC,QAAQ,CAACiB,WAAT,CAAqB,CAACX,IAAI,CAACc,IAAN,EAAYd,IAAI,CAACe,KAAjB,CAArB,CAAX;AACA,QAAMC,aAAa,GAAG,CAACxB,EAAD,EAAKC,EAAL,CAAtB;AAEA,SAAO,EACL,GAAGM,QADE;AAELkB,IAAAA,WAAW,EAAElC,wBAAwB,CAACgB,QAAQ,CAACmB,IAAV,CAAxB,CACXnB,QAAQ,CAACkB,WADE,EAEXD,aAFW,EAGXtB,QAHW;AAFR,GAAP;AAQD","sourcesContent":["import {Viewport} from '@deck.gl/core';\nimport {lerp} from '@math.gl/core';\nimport {GeoBoundingBox} from '../tileset-2d';\n\nconst availableTransformations = {\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon\n};\n\nfunction Point([pointX, pointY]: [number, number], [nw, se]: number[][], viewport: Viewport) {\n const x = lerp(nw[0], se[0], pointX);\n const y = lerp(nw[1], se[1], pointY);\n\n return viewport.unprojectFlat([x, y]);\n}\n\nfunction getPoints(geometry, bbox: number[][], viewport: Viewport) {\n return geometry.map(g => Point(g, bbox, viewport));\n}\n\nfunction MultiPoint(multiPoint, bbox: number[][], viewport: Viewport) {\n return getPoints(multiPoint, bbox, viewport);\n}\n\nfunction LineString(line, bbox: number[][], viewport: Viewport) {\n return getPoints(line, bbox, viewport);\n}\n\nfunction MultiLineString(multiLineString, bbox: number[][], viewport: Viewport) {\n return multiLineString.map(lineString => LineString(lineString, bbox, viewport));\n}\n\nfunction Polygon(polygon, bbox: number[][], viewport: Viewport) {\n return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));\n}\n\nfunction MultiPolygon(multiPolygon, bbox: number[][], viewport: Viewport) {\n return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));\n}\n\nexport function transform(geometry, bbox: GeoBoundingBox, viewport: Viewport) {\n const nw = viewport.projectFlat([bbox.west, bbox.north]);\n const se = viewport.projectFlat([bbox.east, bbox.south]);\n const projectedBbox = [nw, se];\n\n return {\n ...geometry,\n coordinates: availableTransformations[geometry.type](\n geometry.coordinates,\n projectedBbox,\n viewport\n )\n };\n}\n"],"file":"coordinate-transform.js"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
const GEOM_TYPES = ['points', 'lines', 'polygons'];
|
|
2
|
-
export default function findIndexBinary(data, uniqueIdProperty, featureId, layerName) {
|
|
3
|
-
for (const gt of GEOM_TYPES) {
|
|
4
|
-
const index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);
|
|
5
|
-
|
|
6
|
-
if (index >= 0) {
|
|
7
|
-
return index;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return -1;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {
|
|
15
|
-
const featureIds = geomData.featureIds.value;
|
|
16
|
-
|
|
17
|
-
if (!featureIds.length) {
|
|
18
|
-
return -1;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
let startFeatureIndex = 0;
|
|
22
|
-
let endFeatureIndex = featureIds[featureIds.length - 1] + 1;
|
|
23
|
-
|
|
24
|
-
if (layerName) {
|
|
25
|
-
const layerRange = getLayerRange(geomData, layerName);
|
|
26
|
-
|
|
27
|
-
if (layerRange) {
|
|
28
|
-
startFeatureIndex = layerRange[0];
|
|
29
|
-
endFeatureIndex = layerRange[1] + 1;
|
|
30
|
-
} else {
|
|
31
|
-
return -1;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
let featureIndex = -1;
|
|
36
|
-
|
|
37
|
-
if (uniqueIdProperty in geomData.numericProps) {
|
|
38
|
-
const vertexIndex = geomData.numericProps[uniqueIdProperty].value.findIndex((x, i) => x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex);
|
|
39
|
-
return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;
|
|
40
|
-
} else if (uniqueIdProperty) {
|
|
41
|
-
featureIndex = findIndex(geomData.properties, elem => elem[uniqueIdProperty] === featureId, startFeatureIndex, endFeatureIndex);
|
|
42
|
-
} else if (geomData.fields) {
|
|
43
|
-
featureIndex = findIndex(geomData.fields, elem => elem.id === featureId, startFeatureIndex, endFeatureIndex);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function getLayerRange(geomData, layerName) {
|
|
50
|
-
if (!geomData.__layers) {
|
|
51
|
-
const layerNames = {};
|
|
52
|
-
const {
|
|
53
|
-
properties
|
|
54
|
-
} = geomData;
|
|
55
|
-
|
|
56
|
-
for (let i = 0; i < properties.length; i++) {
|
|
57
|
-
const {
|
|
58
|
-
layerName: key
|
|
59
|
-
} = properties[i];
|
|
60
|
-
|
|
61
|
-
if (!key) {} else if (layerNames[key]) {
|
|
62
|
-
layerNames[key][1] = i;
|
|
63
|
-
} else {
|
|
64
|
-
layerNames[key] = [i, i];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
geomData.__layers = layerNames;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return geomData.__layers[layerName];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function getGlobalFeatureId(geomData, featureIndex) {
|
|
75
|
-
if (!geomData.__ids) {
|
|
76
|
-
const result = [];
|
|
77
|
-
const featureIds = geomData.featureIds.value;
|
|
78
|
-
const globalFeatureIds = geomData.globalFeatureIds.value;
|
|
79
|
-
|
|
80
|
-
for (let i = 0; i < featureIds.length; i++) {
|
|
81
|
-
result[featureIds[i]] = globalFeatureIds[i];
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
geomData.__ids = result;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return geomData.__ids[featureIndex];
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function findIndex(array, predicate, startIndex, endIndex) {
|
|
91
|
-
for (let i = startIndex; i < endIndex; i++) {
|
|
92
|
-
if (predicate(array[i], i)) {
|
|
93
|
-
return i;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return -1;
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=find-index-binary.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/find-index-binary.ts"],"names":["GEOM_TYPES","findIndexBinary","data","uniqueIdProperty","featureId","layerName","gt","index","findIndexByType","geomData","featureIds","value","length","startFeatureIndex","endFeatureIndex","layerRange","getLayerRange","featureIndex","numericProps","vertexIndex","findIndex","x","i","globalFeatureIds","properties","elem","fields","id","getGlobalFeatureId","__layers","layerNames","key","__ids","result","array","predicate","startIndex","endIndex"],"mappings":"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","sourcesContent":["import type {\n BinaryFeatureCollection,\n BinaryLineFeature,\n BinaryPointFeature,\n BinaryPolygonFeature\n} from '@loaders.gl/schema';\n\ntype FeatureTypes = BinaryPointFeature | BinaryLineFeature | BinaryPolygonFeature;\n\nconst GEOM_TYPES = ['points', 'lines', 'polygons'];\n/**\n * Return the index of feature (numericProps or featureIds) for given feature id\n * Example: findIndexBinary(data, 'id', 33) will return the index in the array of numericProps\n * of the feature 33.\n * @param {Object} data - The data in binary format\n * @param {String} uniqueIdProperty - Name of the unique id property\n * @param {Number|String} featureId - feature id to find\n * @param {String} layerName - the layer to search in\n */\nexport default function findIndexBinary(\n data: BinaryFeatureCollection,\n uniqueIdProperty: string,\n featureId: string | number,\n layerName: string\n): number {\n for (const gt of GEOM_TYPES) {\n const index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);\n if (index >= 0) {\n return index;\n }\n }\n\n return -1;\n}\n\nfunction findIndexByType(\n geomData: FeatureTypes,\n uniqueIdProperty: string,\n featureId: string | number,\n layerName: string\n): number {\n const featureIds = geomData.featureIds.value;\n\n if (!featureIds.length) {\n return -1;\n }\n\n let startFeatureIndex = 0;\n let endFeatureIndex = featureIds[featureIds.length - 1] + 1;\n if (layerName) {\n const layerRange = getLayerRange(geomData, layerName);\n if (layerRange) {\n startFeatureIndex = layerRange[0];\n endFeatureIndex = layerRange[1] + 1;\n } else {\n return -1;\n }\n }\n\n // Look for the uniqueIdProperty\n let featureIndex = -1;\n if (uniqueIdProperty in geomData.numericProps) {\n const vertexIndex = geomData.numericProps[uniqueIdProperty].value.findIndex(\n (x, i) =>\n x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex\n );\n return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;\n } else if (uniqueIdProperty) {\n featureIndex = findIndex(\n geomData.properties,\n elem => elem[uniqueIdProperty] === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n } else if (geomData.fields) {\n featureIndex = findIndex(\n geomData.fields,\n (elem: any) => elem.id === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n }\n return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;\n}\n\ntype LayerRange = [firstFeatureIndex: number, lastFeatureIndex: number];\n\n// Returns [firstFeatureIndex, lastFeatureIndex]\n// MVTLoader parses tiles layer-by-layer, so each layer is a continuous range\nfunction getLayerRange(\n geomData: FeatureTypes & {\n __layers?: Record<string, LayerRange>;\n },\n layerName: string\n): LayerRange | undefined {\n if (!geomData.__layers) {\n // Cache a map from properties.layerName to index ranges\n const layerNames: Record<string, LayerRange> = {};\n const {properties} = geomData;\n for (let i = 0; i < properties.length; i++) {\n const {layerName: key} = properties[i] as Record<string, any>;\n if (!key) {\n // ignore\n } else if (layerNames[key]) {\n layerNames[key][1] = i;\n } else {\n layerNames[key] = [i, i];\n }\n }\n geomData.__layers = layerNames;\n }\n return geomData.__layers[layerName];\n}\n\n// Returns global feature id\nfunction getGlobalFeatureId(geomData, featureIndex: number) {\n if (!geomData.__ids) {\n // Cache a map from featureId to globalFeatureId\n const result: string[] = [];\n const featureIds = geomData.featureIds.value;\n const globalFeatureIds = geomData.globalFeatureIds.value;\n for (let i = 0; i < featureIds.length; i++) {\n result[featureIds[i]] = globalFeatureIds[i];\n }\n geomData.__ids = result;\n }\n return geomData.__ids[featureIndex];\n}\n\n// Like array.findIndex, but only search within a range\nfunction findIndex<T>(\n array: T[],\n predicate: (v: T, index: number) => boolean,\n startIndex: number,\n endIndex: number\n): number {\n for (let i = startIndex; i < endIndex; i++) {\n if (predicate(array[i], i)) {\n return i;\n }\n }\n return -1;\n}\n"],"file":"find-index-binary.js"}
|