@deck.gl/geo-layers 8.8.0-alpha.6 → 8.8.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 +32245 -42466
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/es5/geohash-layer/geohash-layer.js +71 -0
- package/dist/es5/geohash-layer/geohash-layer.js.map +1 -0
- package/dist/es5/geohash-layer/geohash-utils.js +77 -0
- package/dist/es5/geohash-layer/geohash-utils.js.map +1 -0
- package/dist/es5/great-circle-layer/great-circle-layer.js +12 -8
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +5 -4
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +49 -34
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer.js +22 -26
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +6 -3
- 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-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +4 -2
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +57 -34
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +31 -16
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +8 -3
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +38 -1
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +46 -12
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +9 -7
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/esm/geohash-layer/geohash-layer.js +29 -0
- package/dist/esm/geohash-layer/geohash-layer.js.map +1 -0
- package/dist/esm/geohash-layer/geohash-utils.js +56 -0
- package/dist/esm/geohash-layer/geohash-utils.js.map +1 -0
- package/dist/esm/great-circle-layer/great-circle-layer.js +7 -3
- package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-cluster-layer.js +6 -4
- package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js +38 -24
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js +15 -17
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +6 -3
- 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-geometry.js.map +1 -1
- package/dist/esm/s2-layer/s2-layer.js +5 -2
- package/dist/esm/s2-layer/s2-layer.js.map +1 -1
- package/dist/esm/s2-layer/s2-utils.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +35 -13
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +21 -10
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +10 -3
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +36 -3
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist/esm/tile-layer/utils.js +36 -0
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist/esm/trips-layer/trips-layer.js +8 -5
- package/dist/esm/trips-layer/trips-layer.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +17 -15
- package/src/geo-cell-layer/GeoCellLayer.ts +2 -2
- package/src/geohash-layer/geohash-layer.ts +38 -0
- package/src/geohash-layer/geohash-utils.ts +54 -0
- package/src/great-circle-layer/{great-circle-layer.js → great-circle-layer.ts} +17 -8
- package/src/h3-layers/h3-cluster-layer.ts +60 -0
- package/src/h3-layers/{h3-hexagon-layer.js → h3-hexagon-layer.ts} +110 -42
- package/src/index.ts +7 -0
- package/src/mesh-layer/{mesh-layer-fragment.glsl.js → mesh-layer-fragment.glsl.ts} +0 -0
- package/src/mesh-layer/{mesh-layer-vertex.glsl.js → mesh-layer-vertex.glsl.ts} +2 -2
- package/src/mesh-layer/{mesh-layer.js → mesh-layer.ts} +46 -13
- package/src/mvt-layer/mvt-layer.ts +5 -3
- package/src/quadkey-layer/quadkey-layer.ts +5 -5
- package/src/s2-layer/{s2-geometry.js → s2-geometry.ts} +17 -9
- package/src/s2-layer/{s2-layer.js → s2-layer.ts} +25 -8
- package/src/s2-layer/{s2-utils.js → s2-utils.ts} +14 -7
- package/src/terrain-layer/{terrain-layer.js → terrain-layer.ts} +119 -37
- package/src/tile-3d-layer/{tile-3d-layer.js → tile-3d-layer.ts} +107 -36
- package/src/tile-layer/tile-layer.ts +11 -8
- package/src/tile-layer/tileset-2d.ts +42 -6
- package/src/tile-layer/utils.ts +44 -0
- package/src/trips-layer/{trips-layer.js → trips-layer.ts} +41 -10
- package/typed/geo-cell-layer/GeoCellLayer.d.ts +2 -37
- package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
- package/typed/geohash-layer/geohash-layer.d.ts +20 -0
- package/typed/geohash-layer/geohash-layer.d.ts.map +1 -0
- package/typed/geohash-layer/geohash-utils.d.ts +3 -0
- package/typed/geohash-layer/geohash-utils.d.ts.map +1 -0
- package/typed/great-circle-layer/great-circle-layer.d.ts +7 -13
- package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-cluster-layer.d.ts +20 -14
- package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-hexagon-layer.d.ts +55 -92
- package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
- package/typed/index.d.ts +7 -0
- package/typed/index.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts +1 -1
- package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts +1 -1
- package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer.d.ts +32 -22
- package/typed/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/typed/mvt-layer/mvt-layer.d.ts +2 -34
- package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
- package/typed/quadkey-layer/quadkey-layer.d.ts +4 -4
- package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
- package/typed/s2-layer/s2-geometry.d.ts +8 -8
- package/typed/s2-layer/s2-geometry.d.ts.map +1 -1
- package/typed/s2-layer/s2-layer.d.ts +18 -14
- package/typed/s2-layer/s2-layer.d.ts.map +1 -1
- package/typed/s2-layer/s2-utils.d.ts +3 -4
- package/typed/s2-layer/s2-utils.d.ts.map +1 -1
- package/typed/terrain-layer/terrain-layer.d.ts +61 -26
- package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
- package/typed/tile-3d-layer/tile-3d-layer.d.ts +58 -68
- package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
- package/typed/tile-layer/tile-layer.d.ts +5 -7
- package/typed/tile-layer/tile-layer.d.ts.map +1 -1
- package/typed/tile-layer/tileset-2d.d.ts +12 -3
- package/typed/tile-layer/tileset-2d.d.ts.map +1 -1
- package/typed/tile-layer/utils.d.ts +14 -0
- package/typed/tile-layer/utils.d.ts.map +1 -1
- package/typed/trips-layer/trips-layer.d.ts +34 -30
- package/typed/trips-layer/trips-layer.d.ts.map +1 -1
- package/src/h3-layers/h3-cluster-layer.js +0 -43
|
@@ -1,21 +1,38 @@
|
|
|
1
1
|
import GL from '@luma.gl/constants';
|
|
2
2
|
import {Geometry} from '@luma.gl/core';
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
Accessor,
|
|
6
|
+
Color,
|
|
7
|
+
CompositeLayer,
|
|
8
|
+
CompositeLayerProps,
|
|
9
|
+
COORDINATE_SYSTEM,
|
|
10
|
+
FilterContext,
|
|
11
|
+
GetPickingInfoParams,
|
|
12
|
+
Layer,
|
|
13
|
+
LayersList,
|
|
14
|
+
log,
|
|
15
|
+
PickingInfo,
|
|
16
|
+
UpdateParameters,
|
|
17
|
+
Viewport,
|
|
18
|
+
DefaultProps
|
|
19
|
+
} from '@deck.gl/core';
|
|
4
20
|
import {PointCloudLayer} from '@deck.gl/layers';
|
|
5
21
|
import {ScenegraphLayer} from '@deck.gl/mesh-layers';
|
|
6
|
-
import {default as
|
|
7
|
-
import {log} from '@deck.gl/core';
|
|
22
|
+
import {default as MeshLayer} from '../mesh-layer/mesh-layer';
|
|
8
23
|
|
|
9
24
|
import {load} from '@loaders.gl/core';
|
|
10
|
-
import {
|
|
25
|
+
import {MeshAttributes} from '@loaders.gl/schema';
|
|
26
|
+
import {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';
|
|
11
27
|
import {Tiles3DLoader} from '@loaders.gl/3d-tiles';
|
|
12
28
|
|
|
13
29
|
const SINGLE_DATA = [0];
|
|
14
30
|
|
|
15
|
-
const defaultProps = {
|
|
31
|
+
const defaultProps: DefaultProps<Tile3DLayerProps> = {
|
|
16
32
|
getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},
|
|
17
33
|
pointSize: 1.0,
|
|
18
34
|
|
|
35
|
+
// @ts-expect-error Disable async data loading (handling it in _loadTileSet)
|
|
19
36
|
data: null,
|
|
20
37
|
loader: Tiles3DLoader,
|
|
21
38
|
|
|
@@ -26,7 +43,52 @@ const defaultProps = {
|
|
|
26
43
|
_getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}
|
|
27
44
|
};
|
|
28
45
|
|
|
29
|
-
|
|
46
|
+
/** All properties supported by Tile3DLayer */
|
|
47
|
+
export type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps<DataT>;
|
|
48
|
+
|
|
49
|
+
/** Props added by the Tile3DLayer */
|
|
50
|
+
type _Tile3DLayerProps<DataT> = {
|
|
51
|
+
/** Color Accessor for point clouds. **/
|
|
52
|
+
getPointColor?: Accessor<DataT, Color>;
|
|
53
|
+
|
|
54
|
+
/** Global radius of all points in pixels. **/
|
|
55
|
+
pointSize?: number;
|
|
56
|
+
|
|
57
|
+
/** A loader which is used to decode the fetched tiles.
|
|
58
|
+
* @deprecated Use `loaders` instead
|
|
59
|
+
*/
|
|
60
|
+
loader?: typeof Tiles3DLoader;
|
|
61
|
+
|
|
62
|
+
/** Called when Tileset JSON file is loaded. **/
|
|
63
|
+
onTilesetLoad?: (tile: Tileset3D) => void;
|
|
64
|
+
|
|
65
|
+
/** Called when a tile in the tileset hierarchy is loaded. **/
|
|
66
|
+
onTileLoad?: (tile: Tile3D) => void;
|
|
67
|
+
|
|
68
|
+
/** Called when a tile is unloaded. **/
|
|
69
|
+
onTileUnload?: (tile: Tile3D) => void;
|
|
70
|
+
|
|
71
|
+
/** Called when a tile fails to load. **/
|
|
72
|
+
onTileError?: (tile: Tile3D, url: string, message: string) => void;
|
|
73
|
+
|
|
74
|
+
/** (Experimental) Accessor to change color of mesh based on properties. **/
|
|
75
|
+
_getMeshColor?: (tile: Tile3D) => Color;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default class Tile3DLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<
|
|
79
|
+
ExtraPropsT & Required<_Tile3DLayerProps<DataT>>
|
|
80
|
+
> {
|
|
81
|
+
static defaultProps = defaultProps as any;
|
|
82
|
+
static layerName = 'Tile3DLayer';
|
|
83
|
+
|
|
84
|
+
state!: {
|
|
85
|
+
activeViewports: {};
|
|
86
|
+
frameNumber?: number;
|
|
87
|
+
lastUpdatedViewports: {[viewportId: string]: Viewport} | null;
|
|
88
|
+
layerMap: {[layerId: string]: any};
|
|
89
|
+
tileset3d: Tileset3D | null;
|
|
90
|
+
};
|
|
91
|
+
|
|
30
92
|
initializeState() {
|
|
31
93
|
if ('onTileLoadFail' in this.props) {
|
|
32
94
|
log.removed('onTileLoadFail', 'onTileError')();
|
|
@@ -40,16 +102,16 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
40
102
|
};
|
|
41
103
|
}
|
|
42
104
|
|
|
43
|
-
get isLoaded() {
|
|
105
|
+
get isLoaded(): boolean {
|
|
44
106
|
const {tileset3d} = this.state;
|
|
45
|
-
return tileset3d && tileset3d.isLoaded();
|
|
107
|
+
return tileset3d !== null && tileset3d.isLoaded();
|
|
46
108
|
}
|
|
47
109
|
|
|
48
|
-
shouldUpdateState({changeFlags}) {
|
|
110
|
+
shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {
|
|
49
111
|
return changeFlags.somethingChanged;
|
|
50
112
|
}
|
|
51
113
|
|
|
52
|
-
updateState({props, oldProps, changeFlags}) {
|
|
114
|
+
updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {
|
|
53
115
|
if (props.data && props.data !== oldProps.data) {
|
|
54
116
|
this._loadTileset(props.data);
|
|
55
117
|
}
|
|
@@ -71,9 +133,9 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
71
133
|
}
|
|
72
134
|
}
|
|
73
135
|
|
|
74
|
-
activateViewport(viewport) {
|
|
136
|
+
activateViewport(viewport: Viewport): void {
|
|
75
137
|
const {activeViewports, lastUpdatedViewports} = this.state;
|
|
76
|
-
this.internalState
|
|
138
|
+
this.internalState!.viewport = viewport;
|
|
77
139
|
|
|
78
140
|
activeViewports[viewport.id] = viewport;
|
|
79
141
|
const lastViewport = lastUpdatedViewports?.[viewport.id];
|
|
@@ -83,7 +145,7 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
83
145
|
}
|
|
84
146
|
}
|
|
85
147
|
|
|
86
|
-
getPickingInfo({info, sourceLayer}) {
|
|
148
|
+
getPickingInfo({info, sourceLayer}: GetPickingInfoParams) {
|
|
87
149
|
const {layerMap} = this.state;
|
|
88
150
|
const layerId = sourceLayer && sourceLayer.id;
|
|
89
151
|
if (layerId) {
|
|
@@ -96,22 +158,24 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
96
158
|
return info;
|
|
97
159
|
}
|
|
98
160
|
|
|
99
|
-
filterSubLayer({layer, viewport}) {
|
|
100
|
-
|
|
161
|
+
filterSubLayer({layer, viewport}: FilterContext): boolean {
|
|
162
|
+
// All sublayers will have a tile prop
|
|
163
|
+
const {tile} = layer.props as unknown as {tile: Tile3D};
|
|
101
164
|
const {id: viewportId} = viewport;
|
|
102
165
|
return tile.selected && tile.viewportIds.includes(viewportId);
|
|
103
166
|
}
|
|
104
167
|
|
|
105
|
-
_updateAutoHighlight(info) {
|
|
168
|
+
protected _updateAutoHighlight(info: PickingInfo): void {
|
|
106
169
|
if (info.sourceLayer) {
|
|
107
170
|
info.sourceLayer.updateAutoHighlight(info);
|
|
108
171
|
}
|
|
109
172
|
}
|
|
110
173
|
|
|
111
|
-
async _loadTileset(tilesetUrl) {
|
|
174
|
+
private async _loadTileset(tilesetUrl) {
|
|
112
175
|
const {loadOptions = {}} = this.props;
|
|
113
176
|
|
|
114
177
|
// TODO: deprecate `loader` in v9.0
|
|
178
|
+
// @ts-ignore
|
|
115
179
|
let loader = this.props.loader || this.props.loaders;
|
|
116
180
|
if (Array.isArray(loader)) {
|
|
117
181
|
loader = loader[0];
|
|
@@ -134,7 +198,7 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
134
198
|
const tileset3d = new Tileset3D(tilesetJson, {
|
|
135
199
|
onTileLoad: this._onTileLoad.bind(this),
|
|
136
200
|
onTileUnload: this._onTileUnload.bind(this),
|
|
137
|
-
|
|
201
|
+
onTileError: this.props.onTileError,
|
|
138
202
|
...options
|
|
139
203
|
});
|
|
140
204
|
|
|
@@ -147,20 +211,23 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
147
211
|
this.props.onTilesetLoad(tileset3d);
|
|
148
212
|
}
|
|
149
213
|
|
|
150
|
-
_onTileLoad(tileHeader) {
|
|
214
|
+
private _onTileLoad(tileHeader: Tile3D): void {
|
|
151
215
|
const {lastUpdatedViewports} = this.state;
|
|
152
216
|
this.props.onTileLoad(tileHeader);
|
|
153
217
|
this._updateTileset(lastUpdatedViewports);
|
|
154
218
|
this.setNeedsUpdate();
|
|
155
219
|
}
|
|
156
220
|
|
|
157
|
-
_onTileUnload(tileHeader) {
|
|
221
|
+
private _onTileUnload(tileHeader: Tile3D): void {
|
|
158
222
|
// Was cleaned up from tileset cache. We no longer need to track it.
|
|
159
223
|
delete this.state.layerMap[tileHeader.id];
|
|
160
224
|
this.props.onTileUnload(tileHeader);
|
|
161
225
|
}
|
|
162
226
|
|
|
163
|
-
_updateTileset(viewports) {
|
|
227
|
+
private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {
|
|
228
|
+
if (!viewports) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
164
231
|
const {tileset3d} = this.state;
|
|
165
232
|
const {timeline} = this.context;
|
|
166
233
|
const viewportsNumber = Object.keys(viewports).length;
|
|
@@ -175,24 +242,30 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
175
242
|
});
|
|
176
243
|
}
|
|
177
244
|
|
|
178
|
-
_getSubLayer(
|
|
245
|
+
private _getSubLayer(
|
|
246
|
+
tileHeader: Tile3D,
|
|
247
|
+
oldLayer?: Layer
|
|
248
|
+
): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {
|
|
179
249
|
if (!tileHeader.content) {
|
|
180
250
|
return null;
|
|
181
251
|
}
|
|
182
252
|
|
|
183
253
|
switch (tileHeader.type) {
|
|
184
254
|
case TILE_TYPE.POINTCLOUD:
|
|
185
|
-
return this._makePointCloudLayer(tileHeader, oldLayer);
|
|
255
|
+
return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);
|
|
186
256
|
case TILE_TYPE.SCENEGRAPH:
|
|
187
|
-
return this._make3DModelLayer(tileHeader
|
|
257
|
+
return this._make3DModelLayer(tileHeader);
|
|
188
258
|
case TILE_TYPE.MESH:
|
|
189
|
-
return this._makeSimpleMeshLayer(tileHeader, oldLayer);
|
|
259
|
+
return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);
|
|
190
260
|
default:
|
|
191
261
|
throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);
|
|
192
262
|
}
|
|
193
263
|
}
|
|
194
264
|
|
|
195
|
-
_makePointCloudLayer(
|
|
265
|
+
private _makePointCloudLayer(
|
|
266
|
+
tileHeader: Tile3D,
|
|
267
|
+
oldLayer?: PointCloudLayer<DataT>
|
|
268
|
+
): PointCloudLayer<DataT> | null {
|
|
196
269
|
const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =
|
|
197
270
|
tileHeader.content;
|
|
198
271
|
const {positions, normals, colors} = attributes;
|
|
@@ -233,7 +306,7 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
233
306
|
);
|
|
234
307
|
}
|
|
235
308
|
|
|
236
|
-
_make3DModelLayer(tileHeader) {
|
|
309
|
+
private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {
|
|
237
310
|
const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;
|
|
238
311
|
|
|
239
312
|
const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);
|
|
@@ -261,7 +334,7 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
261
334
|
);
|
|
262
335
|
}
|
|
263
336
|
|
|
264
|
-
_makeSimpleMeshLayer(tileHeader, oldLayer) {
|
|
337
|
+
private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {
|
|
265
338
|
const content = tileHeader.content;
|
|
266
339
|
const {
|
|
267
340
|
attributes,
|
|
@@ -282,7 +355,7 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
282
355
|
indices
|
|
283
356
|
});
|
|
284
357
|
|
|
285
|
-
const SubLayerClass = this.getSubLayerClass('mesh',
|
|
358
|
+
const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);
|
|
286
359
|
|
|
287
360
|
return new SubLayerClass(
|
|
288
361
|
this.getSubLayerProps({
|
|
@@ -304,13 +377,14 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
304
377
|
);
|
|
305
378
|
}
|
|
306
379
|
|
|
307
|
-
renderLayers() {
|
|
380
|
+
renderLayers(): Layer | null | LayersList {
|
|
308
381
|
const {tileset3d, layerMap} = this.state;
|
|
309
382
|
if (!tileset3d) {
|
|
310
383
|
return null;
|
|
311
384
|
}
|
|
312
385
|
|
|
313
|
-
|
|
386
|
+
// loaders.gl doesn't provide a type for tileset3d.tiles
|
|
387
|
+
return (tileset3d.tiles as Tile3D[])
|
|
314
388
|
.map(tile => {
|
|
315
389
|
const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});
|
|
316
390
|
let {layer} = layerCache;
|
|
@@ -332,8 +406,8 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
332
406
|
}
|
|
333
407
|
}
|
|
334
408
|
|
|
335
|
-
function getMeshGeometry(contentAttributes) {
|
|
336
|
-
const attributes = {};
|
|
409
|
+
function getMeshGeometry(contentAttributes: MeshAttributes): MeshAttributes {
|
|
410
|
+
const attributes: MeshAttributes = {};
|
|
337
411
|
attributes.positions = {
|
|
338
412
|
...contentAttributes.positions,
|
|
339
413
|
value: new Float32Array(contentAttributes.positions.value)
|
|
@@ -352,6 +426,3 @@ function getMeshGeometry(contentAttributes) {
|
|
|
352
426
|
}
|
|
353
427
|
return attributes;
|
|
354
428
|
}
|
|
355
|
-
|
|
356
|
-
Tile3DLayer.layerName = 'Tile3DLayer';
|
|
357
|
-
Tile3DLayer.defaultProps = defaultProps;
|
|
@@ -6,6 +6,8 @@ import {
|
|
|
6
6
|
UpdateParameters,
|
|
7
7
|
PickingInfo,
|
|
8
8
|
GetPickingInfoParams,
|
|
9
|
+
DefaultProps,
|
|
10
|
+
FilterContext,
|
|
9
11
|
_flatten as flatten
|
|
10
12
|
} from '@deck.gl/core';
|
|
11
13
|
import {GeoJsonLayer} from '@deck.gl/layers';
|
|
@@ -16,9 +18,9 @@ import Tileset2D, {RefinementStrategy, STRATEGY_DEFAULT, Tileset2DProps} from '.
|
|
|
16
18
|
import {TileLoadProps, ZRange} from './types';
|
|
17
19
|
import {urlType, getURLFromTemplate} from './utils';
|
|
18
20
|
|
|
19
|
-
const defaultProps = {
|
|
21
|
+
const defaultProps: DefaultProps<TileLayerProps> = {
|
|
20
22
|
TilesetClass: Tileset2D,
|
|
21
|
-
data: [],
|
|
23
|
+
data: {type: 'data', value: []},
|
|
22
24
|
dataComparator: urlType.equals,
|
|
23
25
|
renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},
|
|
24
26
|
getTileData: {type: 'function', optional: true, value: null, compare: false},
|
|
@@ -41,7 +43,7 @@ const defaultProps = {
|
|
|
41
43
|
};
|
|
42
44
|
|
|
43
45
|
/** All props supported by the TileLayer */
|
|
44
|
-
export type TileLayerProps<DataT = any> =
|
|
46
|
+
export type TileLayerProps<DataT = any> = CompositeLayerProps<any> & _TileLayerProps<DataT>;
|
|
45
47
|
|
|
46
48
|
/** Props added by the TileLayer */
|
|
47
49
|
type _TileLayerProps<DataT> = {
|
|
@@ -63,10 +65,10 @@ type _TileLayerProps<DataT> = {
|
|
|
63
65
|
/**
|
|
64
66
|
* If supplied, `getTileData` is called to retrieve the data of each tile.
|
|
65
67
|
*/
|
|
66
|
-
getTileData?: (props: TileLoadProps) => Promise<DataT> | DataT;
|
|
68
|
+
getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;
|
|
67
69
|
|
|
68
70
|
/** Called when all tiles in the current viewport are loaded. */
|
|
69
|
-
onViewportLoad?: (tiles: Tile2DHeader<DataT>[]) => void;
|
|
71
|
+
onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;
|
|
70
72
|
|
|
71
73
|
/** Called when a tile successfully loads. */
|
|
72
74
|
onTileLoad?: (tile: Tile2DHeader<DataT>) => void;
|
|
@@ -332,7 +334,7 @@ export default class TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeL
|
|
|
332
334
|
_offset: 0,
|
|
333
335
|
tile
|
|
334
336
|
});
|
|
335
|
-
tile.layers = (flatten(layers, Boolean) as Layer[]).map(layer =>
|
|
337
|
+
tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>
|
|
336
338
|
layer.clone({
|
|
337
339
|
tile,
|
|
338
340
|
...subLayerProps
|
|
@@ -351,7 +353,8 @@ export default class TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeL
|
|
|
351
353
|
});
|
|
352
354
|
}
|
|
353
355
|
|
|
354
|
-
filterSubLayer({layer}) {
|
|
355
|
-
|
|
356
|
+
filterSubLayer({layer, cullRect}: FilterContext) {
|
|
357
|
+
const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;
|
|
358
|
+
return this.state.tileset.isTileVisible(tile, cullRect);
|
|
356
359
|
}
|
|
357
360
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import Tile2DHeader from './tile-2d-header';
|
|
2
|
-
import {getTileIndices, tileToBoundingBox} from './utils';
|
|
2
|
+
import {getTileIndices, tileToBoundingBox, getCullBounds} from './utils';
|
|
3
3
|
import {RequestScheduler} from '@loaders.gl/loader-utils';
|
|
4
|
-
import {Matrix4} from '@math.gl/core';
|
|
4
|
+
import {Matrix4, equals} from '@math.gl/core';
|
|
5
5
|
import {Viewport} from '@deck.gl/core';
|
|
6
6
|
import {Bounds, TileIndex, ZRange} from './types';
|
|
7
7
|
import {TileLayerProps} from './tile-layer';
|
|
8
|
+
import {_memoize as memoize} from '@deck.gl/core';
|
|
8
9
|
|
|
9
10
|
// bit masks
|
|
10
11
|
const TILE_STATE_VISITED = 1;
|
|
@@ -49,7 +50,6 @@ const STRATEGIES = {
|
|
|
49
50
|
|
|
50
51
|
export type Tileset2DProps = Pick<
|
|
51
52
|
Required<TileLayerProps>,
|
|
52
|
-
| 'getTileData'
|
|
53
53
|
| 'tileSize'
|
|
54
54
|
| 'maxCacheSize'
|
|
55
55
|
| 'maxCacheByteSize'
|
|
@@ -60,6 +60,7 @@ export type Tileset2DProps = Pick<
|
|
|
60
60
|
| 'maxRequests'
|
|
61
61
|
| 'zoomOffset'
|
|
62
62
|
> & {
|
|
63
|
+
getTileData: NonNullable<TileLayerProps['getTileData']>;
|
|
63
64
|
onTileLoad: (tile: Tile2DHeader) => void;
|
|
64
65
|
onTileUnload: (tile: Tile2DHeader) => void;
|
|
65
66
|
onTileError: (error: any, tile: Tile2DHeader) => void;
|
|
@@ -78,6 +79,7 @@ export default class Tileset2D {
|
|
|
78
79
|
|
|
79
80
|
private _cacheByteSize: number;
|
|
80
81
|
private _viewport: Viewport | null;
|
|
82
|
+
private _zRange?: ZRange;
|
|
81
83
|
private _selectedTiles: Tile2DHeader[] | null;
|
|
82
84
|
private _frameNumber: number;
|
|
83
85
|
private _modelMatrix: Matrix4;
|
|
@@ -184,12 +186,18 @@ export default class Tileset2D {
|
|
|
184
186
|
): number {
|
|
185
187
|
const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);
|
|
186
188
|
const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);
|
|
187
|
-
if (
|
|
189
|
+
if (
|
|
190
|
+
!this._viewport ||
|
|
191
|
+
!viewport.equals(this._viewport) ||
|
|
192
|
+
!equals(this._zRange, zRange) ||
|
|
193
|
+
isModelMatrixNew
|
|
194
|
+
) {
|
|
188
195
|
if (isModelMatrixNew) {
|
|
189
196
|
this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();
|
|
190
197
|
this._modelMatrix = modelMatrixAsMatrix4;
|
|
191
198
|
}
|
|
192
199
|
this._viewport = viewport;
|
|
200
|
+
this._zRange = zRange;
|
|
193
201
|
const tileIndices = this.getTileIndices({
|
|
194
202
|
viewport,
|
|
195
203
|
maxZoom: this._maxZoom,
|
|
@@ -225,6 +233,32 @@ export default class Tileset2D {
|
|
|
225
233
|
return this._frameNumber;
|
|
226
234
|
}
|
|
227
235
|
|
|
236
|
+
isTileVisible(
|
|
237
|
+
tile: Tile2DHeader,
|
|
238
|
+
cullRect?: {x: number; y: number; width: number; height: number}
|
|
239
|
+
): boolean {
|
|
240
|
+
if (!tile.isVisible) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (cullRect && this._viewport) {
|
|
245
|
+
const [minX, minY, maxX, maxY] = getCullBounds({
|
|
246
|
+
viewport: this._viewport,
|
|
247
|
+
z: this._zRange,
|
|
248
|
+
cullRect
|
|
249
|
+
});
|
|
250
|
+
const {bbox} = tile;
|
|
251
|
+
if ('west' in bbox) {
|
|
252
|
+
return bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;
|
|
253
|
+
}
|
|
254
|
+
// top/bottom could be swapped depending on the indexing system
|
|
255
|
+
const y0 = Math.min(bbox.top, bbox.bottom);
|
|
256
|
+
const y1 = Math.max(bbox.top, bbox.bottom);
|
|
257
|
+
return bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;
|
|
258
|
+
}
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
|
|
228
262
|
/* Public interface for subclassing */
|
|
229
263
|
|
|
230
264
|
/** Returns array of tile indices in the current viewport */
|
|
@@ -321,7 +355,9 @@ export default class Tileset2D {
|
|
|
321
355
|
|
|
322
356
|
/* Private methods */
|
|
323
357
|
|
|
324
|
-
|
|
358
|
+
private _getCullBounds = memoize(getCullBounds);
|
|
359
|
+
|
|
360
|
+
private _pruneRequests(): void {
|
|
325
361
|
const {maxRequests} = this.opts;
|
|
326
362
|
|
|
327
363
|
const abortCandidates: Tile2DHeader[] = [];
|
|
@@ -345,7 +381,7 @@ export default class Tileset2D {
|
|
|
345
381
|
}
|
|
346
382
|
|
|
347
383
|
// This needs to be called every time some tiles have been added/removed from cache
|
|
348
|
-
_rebuildTree() {
|
|
384
|
+
private _rebuildTree() {
|
|
349
385
|
const {_cache} = this;
|
|
350
386
|
|
|
351
387
|
// Reset states
|
package/src/tile-layer/utils.ts
CHANGED
|
@@ -127,6 +127,50 @@ function getBoundingBox(viewport: Viewport, zRange: number[] | null, extent: Bou
|
|
|
127
127
|
];
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
/** Get culling bounds in world space */
|
|
131
|
+
export function getCullBounds({
|
|
132
|
+
viewport,
|
|
133
|
+
z,
|
|
134
|
+
cullRect
|
|
135
|
+
}: {
|
|
136
|
+
/** Current viewport */
|
|
137
|
+
viewport: Viewport;
|
|
138
|
+
/** Current z range */
|
|
139
|
+
z: ZRange | number | undefined;
|
|
140
|
+
/** Culling rectangle in screen space */
|
|
141
|
+
cullRect: {x: number; y: number; width: number; height: number};
|
|
142
|
+
}): [number, number, number, number] {
|
|
143
|
+
const x = cullRect.x - viewport.x;
|
|
144
|
+
const y = cullRect.y - viewport.y;
|
|
145
|
+
const {width, height} = cullRect;
|
|
146
|
+
|
|
147
|
+
if (!Array.isArray(z)) {
|
|
148
|
+
const unprojectOption = {targetZ: z || 0};
|
|
149
|
+
|
|
150
|
+
const topLeft = viewport.unproject([x, y], unprojectOption);
|
|
151
|
+
const topRight = viewport.unproject([x + width, y], unprojectOption);
|
|
152
|
+
const bottomLeft = viewport.unproject([x, y + height], unprojectOption);
|
|
153
|
+
const bottomRight = viewport.unproject([x + width, y + height], unprojectOption);
|
|
154
|
+
|
|
155
|
+
return [
|
|
156
|
+
Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),
|
|
157
|
+
Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]),
|
|
158
|
+
Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),
|
|
159
|
+
Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])
|
|
160
|
+
];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const bounds0 = getCullBounds({viewport, z: z[0], cullRect});
|
|
164
|
+
const bounds1 = getCullBounds({viewport, z: z[1], cullRect});
|
|
165
|
+
|
|
166
|
+
return [
|
|
167
|
+
Math.min(bounds0[0], bounds1[0]),
|
|
168
|
+
Math.min(bounds0[1], bounds1[1]),
|
|
169
|
+
Math.max(bounds0[2], bounds1[2]),
|
|
170
|
+
Math.max(bounds0[3], bounds1[3])
|
|
171
|
+
];
|
|
172
|
+
}
|
|
173
|
+
|
|
130
174
|
function getIndexingCoords(bbox: Bounds, scale: number, modelMatrixInverse?: Matrix4): Bounds {
|
|
131
175
|
if (modelMatrixInverse) {
|
|
132
176
|
const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(
|
|
@@ -18,16 +18,50 @@
|
|
|
18
18
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
19
|
// THE SOFTWARE.
|
|
20
20
|
|
|
21
|
-
import {
|
|
21
|
+
import type {NumericArray} from '@math.gl/core';
|
|
22
|
+
import {AccessorFunction, DefaultProps} from '@deck.gl/core';
|
|
23
|
+
import {PathLayer, PathLayerProps} from '@deck.gl/layers';
|
|
22
24
|
|
|
23
|
-
const defaultProps = {
|
|
25
|
+
const defaultProps: DefaultProps<TripsLayerProps> = {
|
|
24
26
|
fadeTrail: true,
|
|
25
27
|
trailLength: {type: 'number', value: 120, min: 0},
|
|
26
28
|
currentTime: {type: 'number', value: 0, min: 0},
|
|
27
|
-
getTimestamps: {type: 'accessor', value:
|
|
29
|
+
getTimestamps: {type: 'accessor', value: d => d.timestamps}
|
|
28
30
|
};
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
/** All properties supported by TripsLayer. */
|
|
33
|
+
export type TripsLayerProps<DataT = any> = _TripsLayerProps<DataT> & PathLayerProps<DataT>;
|
|
34
|
+
|
|
35
|
+
/** Properties added by TripsLayer. */
|
|
36
|
+
type _TripsLayerProps<DataT = any> = {
|
|
37
|
+
/**
|
|
38
|
+
* Whether or not the path fades out.
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
41
|
+
fadeTrail?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Trail length.
|
|
44
|
+
* @default 120
|
|
45
|
+
*/
|
|
46
|
+
trailLength?: number;
|
|
47
|
+
/**
|
|
48
|
+
* The current time of the frame.
|
|
49
|
+
* @default 0
|
|
50
|
+
*/
|
|
51
|
+
currentTime?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Timestamp accessor.
|
|
54
|
+
*/
|
|
55
|
+
getTimestamps?: AccessorFunction<DataT, NumericArray>;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default class TripsLayer<DataT = any, ExtraProps = {}> extends PathLayer<
|
|
59
|
+
DataT,
|
|
60
|
+
Required<_TripsLayerProps> & ExtraProps
|
|
61
|
+
> {
|
|
62
|
+
static layerName = 'TripsLayer';
|
|
63
|
+
static defaultProps = defaultProps;
|
|
64
|
+
|
|
31
65
|
getShaders() {
|
|
32
66
|
const shaders = super.getShaders();
|
|
33
67
|
shaders.inject = {
|
|
@@ -63,11 +97,11 @@ if(fadeTrail) {
|
|
|
63
97
|
return shaders;
|
|
64
98
|
}
|
|
65
99
|
|
|
66
|
-
initializeState(
|
|
67
|
-
super.initializeState(
|
|
100
|
+
initializeState() {
|
|
101
|
+
super.initializeState();
|
|
68
102
|
|
|
69
103
|
const attributeManager = this.getAttributeManager();
|
|
70
|
-
attributeManager
|
|
104
|
+
attributeManager!.addInstanced({
|
|
71
105
|
timestamps: {
|
|
72
106
|
size: 1,
|
|
73
107
|
accessor: 'getTimestamps',
|
|
@@ -96,6 +130,3 @@ if(fadeTrail) {
|
|
|
96
130
|
super.draw(params);
|
|
97
131
|
}
|
|
98
132
|
}
|
|
99
|
-
|
|
100
|
-
TripsLayer.layerName = 'TripsLayer';
|
|
101
|
-
TripsLayer.defaultProps = defaultProps;
|
|
@@ -1,45 +1,10 @@
|
|
|
1
|
-
import { CompositeLayer, CompositeLayerProps, Layer, LayersList } from '@deck.gl/core/typed';
|
|
1
|
+
import { CompositeLayer, CompositeLayerProps, Layer, LayersList, DefaultProps } from '@deck.gl/core/typed';
|
|
2
2
|
import { PolygonLayerProps } from '@deck.gl/layers/typed';
|
|
3
3
|
/** All properties supported by GeoCellLayer. */
|
|
4
4
|
export declare type GeoCellLayerProps<DataT = any> = PolygonLayerProps<DataT> & CompositeLayerProps<DataT>;
|
|
5
5
|
export default class GeoCellLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<Required<GeoCellLayerProps<DataT>> & ExtraProps> {
|
|
6
6
|
static layerName: string;
|
|
7
|
-
static defaultProps:
|
|
8
|
-
stroked: boolean;
|
|
9
|
-
filled: boolean;
|
|
10
|
-
extruded: boolean;
|
|
11
|
-
elevationScale: number;
|
|
12
|
-
wireframe: boolean;
|
|
13
|
-
_normalize: boolean;
|
|
14
|
-
_windingOrder: string;
|
|
15
|
-
lineWidthUnits: string;
|
|
16
|
-
lineWidthScale: number;
|
|
17
|
-
lineWidthMinPixels: number;
|
|
18
|
-
lineWidthMaxPixels: number;
|
|
19
|
-
lineJointRounded: boolean;
|
|
20
|
-
lineMiterLimit: number;
|
|
21
|
-
getPolygon: {
|
|
22
|
-
type: string;
|
|
23
|
-
value: (f: any) => any;
|
|
24
|
-
};
|
|
25
|
-
getFillColor: {
|
|
26
|
-
type: string;
|
|
27
|
-
value: number[];
|
|
28
|
-
};
|
|
29
|
-
getLineColor: {
|
|
30
|
-
type: string;
|
|
31
|
-
value: number[];
|
|
32
|
-
};
|
|
33
|
-
getLineWidth: {
|
|
34
|
-
type: string;
|
|
35
|
-
value: number;
|
|
36
|
-
};
|
|
37
|
-
getElevation: {
|
|
38
|
-
type: string;
|
|
39
|
-
value: number;
|
|
40
|
-
};
|
|
41
|
-
material: boolean;
|
|
42
|
-
};
|
|
7
|
+
static defaultProps: DefaultProps<GeoCellLayerProps<any>>;
|
|
43
8
|
/** Implement to generate props to create geometry. */
|
|
44
9
|
indexToBounds(): Partial<GeoCellLayer['props']> | null;
|
|
45
10
|
renderLayers(): Layer | null | LayersList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoCellLayer.d.ts","sourceRoot":"","sources":["../../src/geo-cell-layer/GeoCellLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"GeoCellLayer.d.ts","sourceRoot":"","sources":["../../src/geo-cell-layer/GeoCellLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACnG,OAAO,EAAe,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAMhE,gDAAgD;AAChD,oBAAY,iBAAiB,CAAC,KAAK,GAAG,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEnG,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,EAAE,CAAE,SAAQ,cAAc,CACpF,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAChD;IACC,MAAM,CAAC,SAAS,SAAkB;IAClC,MAAM,CAAC,YAAY,uCAAgB;IAEnC,sDAAsD;IACtD,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;IAItD,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CA+D1C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AccessorFunction } from '@deck.gl/core/typed';
|
|
2
|
+
import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
|
|
3
|
+
/**
|
|
4
|
+
* Properties of `GeohashLayer`.
|
|
5
|
+
*/
|
|
6
|
+
declare type GeohashLayerProps<DataT = any> = {
|
|
7
|
+
/**
|
|
8
|
+
* Called for each data object to retrieve the geohash string identifier.
|
|
9
|
+
*
|
|
10
|
+
* By default, it reads `geohash` property of data object.
|
|
11
|
+
*/
|
|
12
|
+
getGeohash?: AccessorFunction<DataT, string>;
|
|
13
|
+
};
|
|
14
|
+
export default class GeohashLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<DataT, Required<GeohashLayerProps> & ExtraProps> {
|
|
15
|
+
static layerName: string;
|
|
16
|
+
static defaultProps: any;
|
|
17
|
+
indexToBounds(): Partial<GeoCellLayer['props']> | null;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=geohash-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geohash-layer.d.ts","sourceRoot":"","sources":["../../src/geohash-layer/geohash-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,YAAY,MAAM,gCAAgC,CAAC;AAO1D;;GAEG;AACH,aAAK,iBAAiB,CAAC,KAAK,GAAG,GAAG,IAAI;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,EAAE,CAAE,SAAQ,YAAY,CAClF,KAAK,EACL,QAAQ,CAAC,iBAAiB,CAAC,GAAG,UAAU,CACzC;IACC,MAAM,CAAC,SAAS,SAAkB;IAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAgB;IAExC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;CAUvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geohash-utils.d.ts","sourceRoot":"","sources":["../../src/geohash-layer/geohash-utils.ts"],"names":[],"mappings":"AAYA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmC1D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAI3D"}
|