@deck.gl/geo-layers 8.9.0-alpha.5 → 8.9.0-beta.2
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 +25764 -66606
- 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 +2 -2
- 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 +4 -8
- 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.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +9 -9
- 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 +6 -9
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +9 -8
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +32 -14
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tileset-2d/index.js +66 -0
- package/dist/es5/tileset-2d/index.js.map +1 -0
- package/dist/es5/tileset-2d/memoize.js +47 -0
- package/dist/es5/tileset-2d/memoize.js.map +1 -0
- package/dist/es5/{tile-layer → tileset-2d}/tile-2d-header.js +3 -5
- package/dist/es5/tileset-2d/tile-2d-header.js.map +1 -0
- package/dist/es5/{tile-layer → tileset-2d}/tile-2d-traversal.js +0 -0
- package/dist/es5/tileset-2d/tile-2d-traversal.js.map +1 -0
- package/dist/es5/{tile-layer → tileset-2d}/tileset-2d.js +166 -121
- package/dist/es5/tileset-2d/tileset-2d.js.map +1 -0
- package/dist/es5/{tile-layer → tileset-2d}/types.js +0 -0
- package/dist/es5/{tile-layer → tileset-2d}/types.js.map +0 -0
- package/dist/es5/{tile-layer → tileset-2d}/utils.js +17 -18
- package/dist/es5/tileset-2d/utils.js.map +1 -0
- 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.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 +1 -1
- 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 +3 -3
- 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-vertex.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +3 -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-layer.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +2 -5
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +9 -10
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +16 -6
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tileset-2d/index.js +4 -0
- package/dist/esm/tileset-2d/index.js.map +1 -0
- package/dist/esm/tileset-2d/memoize.js +40 -0
- package/dist/esm/tileset-2d/memoize.js.map +1 -0
- package/dist/esm/{tile-layer → tileset-2d}/tile-2d-header.js +2 -3
- package/dist/esm/tileset-2d/tile-2d-header.js.map +1 -0
- package/dist/esm/{tile-layer → tileset-2d}/tile-2d-traversal.js +0 -0
- package/dist/esm/tileset-2d/tile-2d-traversal.js.map +1 -0
- package/dist/esm/{tile-layer → tileset-2d}/tileset-2d.js +48 -16
- package/dist/esm/tileset-2d/tileset-2d.js.map +1 -0
- package/dist/esm/{tile-layer → tileset-2d}/types.js +0 -0
- package/dist/esm/{tile-layer → tileset-2d}/types.js.map +0 -0
- package/dist/esm/{tile-layer → tileset-2d}/utils.js +16 -20
- package/dist/esm/tileset-2d/utils.js.map +1 -0
- package/dist/esm/trips-layer/trips-layer.js.map +1 -1
- package/dist.min.js +188 -6
- package/package.json +11 -11
- package/src/geo-cell-layer/GeoCellLayer.ts +2 -2
- package/src/geohash-layer/geohash-layer.ts +4 -4
- package/src/great-circle-layer/great-circle-layer.ts +2 -2
- package/src/h3-layers/h3-cluster-layer.ts +2 -2
- package/src/h3-layers/h3-hexagon-layer.ts +4 -1
- package/src/index.ts +9 -5
- package/src/mesh-layer/mesh-layer.ts +1 -1
- package/src/mvt-layer/coordinate-transform.ts +1 -1
- package/src/mvt-layer/mvt-layer.ts +18 -11
- package/src/quadkey-layer/quadkey-layer.ts +1 -1
- package/src/s2-layer/s2-layer.ts +1 -1
- package/src/terrain-layer/terrain-layer.ts +11 -9
- package/src/tile-3d-layer/tile-3d-layer.ts +13 -11
- package/src/tile-layer/tile-layer.ts +23 -11
- package/src/tileset-2d/index.ts +25 -0
- package/src/tileset-2d/memoize.ts +45 -0
- package/src/{tile-layer → tileset-2d}/tile-2d-header.ts +4 -4
- package/src/{tile-layer → tileset-2d}/tile-2d-traversal.ts +3 -1
- package/src/{tile-layer → tileset-2d}/tileset-2d.ts +91 -39
- package/src/{tile-layer → tileset-2d}/types.ts +0 -0
- package/src/{tile-layer → tileset-2d}/utils.ts +26 -12
- package/src/trips-layer/trips-layer.ts +1 -1
- package/typed/geo-cell-layer/GeoCellLayer.d.ts +2 -2
- package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
- package/typed/geo-cell-layer/GeoCellLayer.js +49 -0
- package/typed/geohash-layer/geohash-layer.d.ts +3 -3
- package/typed/geohash-layer/geohash-layer.d.ts.map +1 -1
- package/typed/great-circle-layer/great-circle-layer.d.ts +3 -2
- package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
- package/typed/great-circle-layer/great-circle-layer.js +29 -0
- package/typed/h3-layers/h3-cluster-layer.d.ts +1 -1
- package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-cluster-layer.js +33 -0
- package/typed/h3-layers/h3-hexagon-layer.d.ts +1 -1
- package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-hexagon-layer.js +251 -0
- package/typed/index.d.ts +5 -5
- package/typed/index.d.ts.map +1 -1
- package/typed/index.js +33 -0
- package/typed/mesh-layer/mesh-layer-fragment.glsl.js +55 -0
- package/typed/mesh-layer/mesh-layer-vertex.glsl.js +80 -0
- package/typed/mesh-layer/mesh-layer.d.ts +1 -1
- package/typed/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer.js +110 -0
- package/typed/mvt-layer/coordinate-transform.d.ts +1 -1
- package/typed/mvt-layer/coordinate-transform.d.ts.map +1 -1
- package/typed/mvt-layer/coordinate-transform.js +41 -0
- package/typed/mvt-layer/find-index-binary.js +96 -0
- package/typed/mvt-layer/mvt-layer.d.ts +3 -4
- package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
- package/typed/mvt-layer/mvt-layer.js +297 -0
- package/typed/quadkey-layer/quadkey-layer.d.ts +1 -1
- package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
- package/typed/quadkey-layer/quadkey-layer.js +18 -0
- package/typed/quadkey-layer/quadkey-utils.js +26 -0
- package/typed/s2-layer/s2-geometry.js +123 -0
- package/typed/s2-layer/s2-layer.d.ts +1 -1
- package/typed/s2-layer/s2-layer.d.ts.map +1 -1
- package/typed/s2-layer/s2-layer.js +37 -0
- package/typed/s2-layer/s2-utils.js +88 -0
- package/typed/terrain-layer/terrain-layer.d.ts +8 -5
- package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
- package/typed/terrain-layer/terrain-layer.js +226 -0
- package/typed/tile-3d-layer/tile-3d-layer.d.ts +3 -3
- package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
- package/typed/tile-3d-layer/tile-3d-layer.js +294 -0
- package/typed/tile-layer/tile-2d-header.js +113 -0
- package/typed/tile-layer/tile-2d-traversal.js +181 -0
- package/typed/tile-layer/tile-layer.d.ts +6 -7
- package/typed/tile-layer/tile-layer.d.ts.map +1 -1
- package/typed/tile-layer/tile-layer.js +192 -0
- package/typed/tile-layer/tileset-2d.d.ts.map +1 -1
- package/typed/tile-layer/tileset-2d.js +399 -0
- package/typed/tile-layer/types.js +1 -0
- package/typed/tile-layer/utils.d.ts +1 -1
- package/typed/tile-layer/utils.d.ts.map +1 -1
- package/typed/tile-layer/utils.js +197 -0
- package/typed/tileset-2d/index.d.ts +7 -0
- package/typed/tileset-2d/index.d.ts.map +1 -0
- package/typed/tileset-2d/memoize.d.ts +7 -0
- package/typed/tileset-2d/memoize.d.ts.map +1 -0
- package/typed/tileset-2d/tile-2d-header.d.ts +39 -0
- package/typed/tileset-2d/tile-2d-header.d.ts.map +1 -0
- package/typed/tileset-2d/tile-2d-traversal.d.ts +4 -0
- package/typed/tileset-2d/tile-2d-traversal.d.ts.map +1 -0
- package/typed/tileset-2d/tileset-2d.d.ts +121 -0
- package/typed/tileset-2d/tileset-2d.d.ts.map +1 -0
- package/typed/tileset-2d/types.d.ts +30 -0
- package/typed/tileset-2d/types.d.ts.map +1 -0
- package/typed/tileset-2d/utils.d.ts +52 -0
- package/typed/tileset-2d/utils.d.ts.map +1 -0
- package/typed/trips-layer/trips-layer.d.ts +1 -1
- package/typed/trips-layer/trips-layer.d.ts.map +1 -1
- package/typed/trips-layer/trips-layer.js +92 -0
- package/dist/es5/tile-layer/tile-2d-header.js.map +0 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +0 -1
- package/dist/es5/tile-layer/tileset-2d.js.map +0 -1
- package/dist/es5/tile-layer/utils.js.map +0 -1
- package/dist/esm/tile-layer/tile-2d-header.js.map +0 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js.map +0 -1
- package/dist/esm/tile-layer/tileset-2d.js.map +0 -1
- package/dist/esm/tile-layer/utils.js.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": "8.9.0-
|
|
5
|
+
"version": "8.9.0-beta.2",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -26,17 +26,17 @@
|
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"scripts": {
|
|
29
|
-
"build-bundle": "
|
|
30
|
-
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env
|
|
29
|
+
"build-bundle": "ocular-bundle ./bundle.ts",
|
|
30
|
+
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@loaders.gl/3d-tiles": "^3.
|
|
34
|
-
"@loaders.gl/gis": "^3.
|
|
35
|
-
"@loaders.gl/loader-utils": "^3.
|
|
36
|
-
"@loaders.gl/mvt": "^3.
|
|
37
|
-
"@loaders.gl/schema": "^3.
|
|
38
|
-
"@loaders.gl/terrain": "^3.
|
|
39
|
-
"@loaders.gl/tiles": "^3.
|
|
33
|
+
"@loaders.gl/3d-tiles": "^3.3.1",
|
|
34
|
+
"@loaders.gl/gis": "^3.3.1",
|
|
35
|
+
"@loaders.gl/loader-utils": "^3.3.1",
|
|
36
|
+
"@loaders.gl/mvt": "^3.3.1",
|
|
37
|
+
"@loaders.gl/schema": "^3.3.1",
|
|
38
|
+
"@loaders.gl/terrain": "^3.3.1",
|
|
39
|
+
"@loaders.gl/tiles": "^3.3.1",
|
|
40
40
|
"@luma.gl/constants": "^8.5.16",
|
|
41
41
|
"@luma.gl/experimental": "^8.5.16",
|
|
42
42
|
"@math.gl/core": "^3.6.2",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"@loaders.gl/core": "^3.0.0",
|
|
55
55
|
"@luma.gl/core": "^8.0.0"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "5dae086e4f3eb46c30d8e761f9d600be4f68e949"
|
|
58
58
|
}
|
|
@@ -8,11 +8,11 @@ const defaultProps: DefaultProps<GeoCellLayerProps> = {
|
|
|
8
8
|
/** All properties supported by GeoCellLayer. */
|
|
9
9
|
export type GeoCellLayerProps<DataT = any> = PolygonLayerProps<DataT> & CompositeLayerProps<DataT>;
|
|
10
10
|
|
|
11
|
-
export default class GeoCellLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<
|
|
11
|
+
export default class GeoCellLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<
|
|
12
12
|
Required<GeoCellLayerProps<DataT>> & ExtraProps
|
|
13
13
|
> {
|
|
14
14
|
static layerName = 'GeoCellLayer';
|
|
15
|
-
static defaultProps = defaultProps;
|
|
15
|
+
static defaultProps: DefaultProps = defaultProps;
|
|
16
16
|
|
|
17
17
|
/** Implement to generate props to create geometry. */
|
|
18
18
|
indexToBounds(): Partial<GeoCellLayer['props']> | null {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {AccessorFunction} from '@deck.gl/core';
|
|
1
|
+
import {AccessorFunction, DefaultProps} from '@deck.gl/core';
|
|
2
2
|
import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
|
|
3
3
|
import {getGeohashPolygon} from './geohash-utils';
|
|
4
4
|
|
|
5
|
-
const defaultProps = {
|
|
5
|
+
const defaultProps: DefaultProps<GeohashLayerProps> = {
|
|
6
6
|
getGeohash: {type: 'accessor', value: d => d.geohash}
|
|
7
7
|
};
|
|
8
8
|
|
|
@@ -19,12 +19,12 @@ type GeohashLayerProps<DataT = any> = {
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
/** Render filled and/or stroked polygons based on the [Geohash](https://en.wikipedia.org/wiki/Geohash) geospatial indexing system. */
|
|
22
|
-
export default class GeohashLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<
|
|
22
|
+
export default class GeohashLayer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<
|
|
23
23
|
DataT,
|
|
24
24
|
Required<GeohashLayerProps> & ExtraProps
|
|
25
25
|
> {
|
|
26
26
|
static layerName = 'GeohashLayer';
|
|
27
|
-
static defaultProps
|
|
27
|
+
static defaultProps = defaultProps;
|
|
28
28
|
|
|
29
29
|
indexToBounds(): Partial<GeoCellLayer['props']> | null {
|
|
30
30
|
const {data, getGeohash} = this.props;
|
|
@@ -31,10 +31,10 @@ export type GreatCircleLayerProps<DataT = any> = ArcLayerProps<DataT>;
|
|
|
31
31
|
// This layer has been merged into the core ArcLayer
|
|
32
32
|
// Keeping for backward-compatibility
|
|
33
33
|
/** @deprecated Use ArcLayer with `greatCircle: true` instead */
|
|
34
|
-
export default class GreatCircleLayer<DataT = any, ExtraProps = {}> extends ArcLayer<
|
|
34
|
+
export default class GreatCircleLayer<DataT = any, ExtraProps extends {} = {}> extends ArcLayer<
|
|
35
35
|
DataT,
|
|
36
36
|
ExtraProps
|
|
37
37
|
> {
|
|
38
38
|
static layerName = 'GreatCircleLayer';
|
|
39
|
-
static defaultProps
|
|
39
|
+
static defaultProps = defaultProps;
|
|
40
40
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {h3SetToMultiPolygon, H3IndexInput} from 'h3-js';
|
|
2
2
|
|
|
3
3
|
import {AccessorFunction, createIterable, UpdateParameters, DefaultProps} from '@deck.gl/core';
|
|
4
|
-
import {H3HexagonLayer} from '
|
|
4
|
+
import {default as H3HexagonLayer} from './h3-hexagon-layer';
|
|
5
5
|
import GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';
|
|
6
6
|
|
|
7
7
|
const defaultProps: DefaultProps<H3ClusterLayerProps> = {
|
|
@@ -22,7 +22,7 @@ type _H3ClusterLayerProps<DataT> = {
|
|
|
22
22
|
getHexagons?: AccessorFunction<DataT, H3IndexInput[]>;
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
export default class H3ClusterLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<
|
|
25
|
+
export default class H3ClusterLayer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<
|
|
26
26
|
DataT,
|
|
27
27
|
Required<_H3ClusterLayerProps<DataT>> & ExtraProps
|
|
28
28
|
> {
|
|
@@ -145,7 +145,10 @@ type _H3HexagonLayerProps<DataT> = {
|
|
|
145
145
|
/**
|
|
146
146
|
* Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.
|
|
147
147
|
*/
|
|
148
|
-
export default class H3HexagonLayer<
|
|
148
|
+
export default class H3HexagonLayer<
|
|
149
|
+
DataT = any,
|
|
150
|
+
ExtraPropsT extends {} = {}
|
|
151
|
+
> extends CompositeLayer<
|
|
149
152
|
ExtraPropsT & Required<_H3HexagonLayerProps<DataT> & Required<PolygonLayerProps<DataT>>>
|
|
150
153
|
> {
|
|
151
154
|
static defaultProps = defaultProps;
|
package/src/index.ts
CHANGED
|
@@ -32,9 +32,6 @@ export {default as MVTLayer} from './mvt-layer/mvt-layer';
|
|
|
32
32
|
export {default as GeohashLayer} from './geohash-layer/geohash-layer';
|
|
33
33
|
|
|
34
34
|
export {default as _GeoCellLayer} from './geo-cell-layer/GeoCellLayer';
|
|
35
|
-
export {getURLFromTemplate as _getURLFromTemplate} from './tile-layer/utils';
|
|
36
|
-
export {default as _Tileset2D} from './tile-layer/tileset-2d';
|
|
37
|
-
export {default as _Tile2DHeader} from './tile-layer/tile-2d-header';
|
|
38
35
|
|
|
39
36
|
// Types
|
|
40
37
|
export type {H3ClusterLayerProps} from './h3-layers/h3-cluster-layer';
|
|
@@ -42,10 +39,17 @@ export type {H3HexagonLayerProps} from './h3-layers/h3-hexagon-layer';
|
|
|
42
39
|
export type {GreatCircleLayerProps} from './great-circle-layer/great-circle-layer';
|
|
43
40
|
export type {S2LayerProps} from './s2-layer/s2-layer';
|
|
44
41
|
export type {TileLayerProps} from './tile-layer/tile-layer';
|
|
45
|
-
export type {GeoBoundingBox, NonGeoBoundingBox} from './tile-layer/types';
|
|
46
42
|
export type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';
|
|
47
|
-
export type {TileLoadProps as _TileLoadProps} from './tile-layer/types';
|
|
48
43
|
export type {TerrainLayerProps} from './terrain-layer/terrain-layer';
|
|
49
44
|
export type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';
|
|
50
45
|
export type {MVTLayerProps} from './mvt-layer/mvt-layer';
|
|
51
46
|
export type {GeoCellLayerProps as _GeoCellLayerProps} from './geo-cell-layer/GeoCellLayer';
|
|
47
|
+
|
|
48
|
+
// Tileset2D
|
|
49
|
+
|
|
50
|
+
export type {GeoBoundingBox, NonGeoBoundingBox} from './tileset-2d';
|
|
51
|
+
export type {TileLoadProps as _TileLoadProps} from './tileset-2d';
|
|
52
|
+
|
|
53
|
+
export {getURLFromTemplate as _getURLFromTemplate} from './tileset-2d';
|
|
54
|
+
export {Tileset2D as _Tileset2D} from './tileset-2d';
|
|
55
|
+
export {Tile2DHeader as _Tile2DHeader} from './tileset-2d';
|
|
@@ -42,7 +42,7 @@ type _MeshLayerProps<DataT> = {
|
|
|
42
42
|
featureIds?: NumericArray | null;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
export default class MeshLayer<DataT = any, ExtraProps = {}> extends SimpleMeshLayer<
|
|
45
|
+
export default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<
|
|
46
46
|
DataT,
|
|
47
47
|
Required<_MeshLayerProps<DataT>> & ExtraProps
|
|
48
48
|
> {
|
|
@@ -10,23 +10,30 @@ import {
|
|
|
10
10
|
DefaultProps
|
|
11
11
|
} from '@deck.gl/core';
|
|
12
12
|
import {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';
|
|
13
|
+
import {ClipExtension} from '@deck.gl/extensions';
|
|
14
|
+
|
|
13
15
|
import {Matrix4} from '@math.gl/core';
|
|
14
16
|
import {MVTWorkerLoader} from '@loaders.gl/mvt';
|
|
15
17
|
import {binaryToGeojson} from '@loaders.gl/gis';
|
|
16
|
-
import {ClipExtension} from '@deck.gl/extensions';
|
|
17
18
|
|
|
18
19
|
import type {Loader} from '@loaders.gl/loader-utils';
|
|
19
20
|
import type {BinaryFeatures} from '@loaders.gl/schema';
|
|
20
21
|
import type {Feature} from 'geojson';
|
|
21
22
|
|
|
22
|
-
import TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';
|
|
23
|
-
import Tileset2D, {Tileset2DProps} from '../tile-layer/tileset-2d';
|
|
24
|
-
import {getURLFromTemplate, isGeoBoundingBox, isURLTemplate} from '../tile-layer/utils';
|
|
25
|
-
import {GeoBoundingBox, TileLoadProps} from '../tile-layer/types';
|
|
26
|
-
import Tile2DHeader from '../tile-layer/tile-2d-header';
|
|
27
23
|
import {transform} from './coordinate-transform';
|
|
28
24
|
import findIndexBinary from './find-index-binary';
|
|
29
25
|
|
|
26
|
+
import TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';
|
|
27
|
+
|
|
28
|
+
import type {Tileset2DProps, TileLoadProps, GeoBoundingBox} from '../tileset-2d';
|
|
29
|
+
import {
|
|
30
|
+
Tileset2D,
|
|
31
|
+
Tile2DHeader,
|
|
32
|
+
getURLFromTemplate,
|
|
33
|
+
isGeoBoundingBox,
|
|
34
|
+
isURLTemplate
|
|
35
|
+
} from '../tileset-2d';
|
|
36
|
+
|
|
30
37
|
const WORLD_SIZE = 512;
|
|
31
38
|
|
|
32
39
|
const defaultProps: DefaultProps<MVTLayerProps> = {
|
|
@@ -86,10 +93,10 @@ export type _MVTLayerProps = {
|
|
|
86
93
|
type ContentWGS84Cache = {_contentWGS84?: Feature[]};
|
|
87
94
|
|
|
88
95
|
/** Render data formatted as [Mapbox Vector Tiles](https://docs.mapbox.com/vector-tiles/specification/). */
|
|
89
|
-
export default class MVTLayer<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
> {
|
|
96
|
+
export default class MVTLayer<
|
|
97
|
+
DataT extends Feature = Feature,
|
|
98
|
+
ExtraProps extends {} = {}
|
|
99
|
+
> extends TileLayer<ParsedMvtTile, Required<_MVTLayerProps> & ExtraProps> {
|
|
93
100
|
static layerName = 'MVTLayer';
|
|
94
101
|
static defaultProps = defaultProps;
|
|
95
102
|
|
|
@@ -285,7 +292,7 @@ export default class MVTLayer<DataT extends Feature = Feature, ExtraProps = {}>
|
|
|
285
292
|
if (info.object && !isWGS84) {
|
|
286
293
|
info.object = transformTileCoordsToWGS84(
|
|
287
294
|
info.object,
|
|
288
|
-
info.tile!.bbox as GeoBoundingBox,
|
|
295
|
+
info.tile!.bbox as GeoBoundingBox, // eslint-disable-line
|
|
289
296
|
this.context.viewport
|
|
290
297
|
);
|
|
291
298
|
}
|
|
@@ -20,7 +20,7 @@ type _QuadkeyLayerProps<DataT> = {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
/** Render filled and/or stroked polygons based on the [Quadkey](https://towardsdatascience.com/geospatial-indexing-with-quadkeys-d933dff01496) geospatial indexing system. */
|
|
23
|
-
export default class QuadkeyLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<
|
|
23
|
+
export default class QuadkeyLayer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<
|
|
24
24
|
DataT,
|
|
25
25
|
Required<_QuadkeyLayerProps<DataT>> & ExtraProps
|
|
26
26
|
> {
|
package/src/s2-layer/s2-layer.ts
CHANGED
|
@@ -40,7 +40,7 @@ type _S2LayerProps<DataT> = {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
/** Render filled and/or stroked polygons based on the [S2](http://s2geometry.io/) geospatial indexing system. */
|
|
43
|
-
export default class S2Layer<DataT = any, ExtraProps = {}> extends GeoCellLayer<
|
|
43
|
+
export default class S2Layer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<
|
|
44
44
|
DataT,
|
|
45
45
|
Required<_S2LayerProps<DataT>> & ExtraProps
|
|
46
46
|
> {
|
|
@@ -35,9 +35,8 @@ import {COORDINATE_SYSTEM} from '@deck.gl/core';
|
|
|
35
35
|
import type {MeshAttributes} from '@loaders.gl/schema';
|
|
36
36
|
import {TerrainWorkerLoader} from '@loaders.gl/terrain';
|
|
37
37
|
import TileLayer, {TileLayerProps} from '../tile-layer/tile-layer';
|
|
38
|
-
import
|
|
39
|
-
import {
|
|
40
|
-
import {urlType, getURLFromTemplate} from '../tile-layer/utils';
|
|
38
|
+
import type {Bounds, GeoBoundingBox, TileBoundingBox, TileLoadProps, ZRange} from '../tileset-2d';
|
|
39
|
+
import {Tile2DHeader, urlType, getURLFromTemplate, URLTemplate} from '../tileset-2d';
|
|
41
40
|
|
|
42
41
|
const DUMMY_DATA = [1];
|
|
43
42
|
|
|
@@ -64,7 +63,7 @@ const defaultProps: DefaultProps<TerrainLayerProps> = {
|
|
|
64
63
|
}
|
|
65
64
|
},
|
|
66
65
|
// Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.
|
|
67
|
-
workerUrl:
|
|
66
|
+
workerUrl: '',
|
|
68
67
|
// Same as SimpleMeshLayer wireframe
|
|
69
68
|
wireframe: false,
|
|
70
69
|
material: true,
|
|
@@ -72,10 +71,8 @@ const defaultProps: DefaultProps<TerrainLayerProps> = {
|
|
|
72
71
|
loaders: [TerrainWorkerLoader]
|
|
73
72
|
};
|
|
74
73
|
|
|
75
|
-
type URLTemplate = string | string[];
|
|
76
|
-
|
|
77
74
|
// Turns array of templates into a single string to work around shallow change
|
|
78
|
-
function urlTemplateToUpdateTrigger(template: URLTemplate
|
|
75
|
+
function urlTemplateToUpdateTrigger(template: URLTemplate): string {
|
|
79
76
|
if (Array.isArray(template)) {
|
|
80
77
|
return template.join(';');
|
|
81
78
|
}
|
|
@@ -104,7 +101,7 @@ type _TerrainLayerProps = {
|
|
|
104
101
|
elevationData: URLTemplate;
|
|
105
102
|
|
|
106
103
|
/** Image url to use as texture. **/
|
|
107
|
-
texture?: URLTemplate
|
|
104
|
+
texture?: URLTemplate;
|
|
108
105
|
|
|
109
106
|
/** Martini error tolerance in meters, smaller number -> more detailed mesh. **/
|
|
110
107
|
meshMaxError?: number;
|
|
@@ -123,10 +120,15 @@ type _TerrainLayerProps = {
|
|
|
123
120
|
|
|
124
121
|
/** Material props for lighting effect. **/
|
|
125
122
|
material?: Material;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @deprecated Use `loadOptions.terrain.workerUrl` instead
|
|
126
|
+
*/
|
|
127
|
+
workerUrl?: string;
|
|
126
128
|
};
|
|
127
129
|
|
|
128
130
|
/** Render mesh surfaces from height map images. */
|
|
129
|
-
export default class TerrainLayer<ExtraPropsT = {}> extends CompositeLayer<
|
|
131
|
+
export default class TerrainLayer<ExtraPropsT extends {} = {}> extends CompositeLayer<
|
|
130
132
|
ExtraPropsT & Required<_TerrainLayerProps & Required<TileLayerProps<MeshAndTexture>>>
|
|
131
133
|
> {
|
|
132
134
|
static defaultProps = defaultProps;
|
|
@@ -76,10 +76,10 @@ type _Tile3DLayerProps<DataT> = {
|
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
/** Render 3d tiles data formatted according to the [3D Tiles Specification](https://www.opengeospatial.org/standards/3DTiles) and [`ESRI I3S`](https://github.com/Esri/i3s-spec) */
|
|
79
|
-
export default class Tile3DLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<
|
|
79
|
+
export default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<
|
|
80
80
|
ExtraPropsT & Required<_Tile3DLayerProps<DataT>>
|
|
81
81
|
> {
|
|
82
|
-
static defaultProps = defaultProps
|
|
82
|
+
static defaultProps = defaultProps;
|
|
83
83
|
static layerName = 'Tile3DLayer';
|
|
84
84
|
|
|
85
85
|
state!: {
|
|
@@ -114,6 +114,7 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT = {}> extends Composit
|
|
|
114
114
|
|
|
115
115
|
updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {
|
|
116
116
|
if (props.data && props.data !== oldProps.data) {
|
|
117
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
117
118
|
this._loadTileset(props.data);
|
|
118
119
|
}
|
|
119
120
|
|
|
@@ -147,14 +148,11 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT = {}> extends Composit
|
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
getPickingInfo({info, sourceLayer}: GetPickingInfoParams) {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
// layerId: this.id-[scenegraph|pointcloud]-tileId
|
|
154
|
-
const substr = layerId.substring(this.id.length + 1);
|
|
155
|
-
const tileId = substr.substring(substr.indexOf('-') + 1);
|
|
156
|
-
info.object = layerMap[tileId] && layerMap[tileId].tile;
|
|
151
|
+
const sourceTile = sourceLayer && (sourceLayer.props as any).tile;
|
|
152
|
+
if (info.picked) {
|
|
153
|
+
info.object = sourceTile;
|
|
157
154
|
}
|
|
155
|
+
(info as any).sourceTile = sourceTile;
|
|
158
156
|
|
|
159
157
|
return info;
|
|
160
158
|
}
|
|
@@ -167,8 +165,10 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT = {}> extends Composit
|
|
|
167
165
|
}
|
|
168
166
|
|
|
169
167
|
protected _updateAutoHighlight(info: PickingInfo): void {
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
const sourceTile = (info as any).sourceTile;
|
|
169
|
+
const layerCache = this.state.layerMap[sourceTile?.id];
|
|
170
|
+
if (layerCache && layerCache.layer) {
|
|
171
|
+
layerCache.layer.updateAutoHighlight(info);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
|
|
@@ -235,6 +235,8 @@ export default class Tile3DLayer<DataT = any, ExtraPropsT = {}> extends Composit
|
|
|
235
235
|
if (!timeline || !viewportsNumber || !tileset3d) {
|
|
236
236
|
return;
|
|
237
237
|
}
|
|
238
|
+
|
|
239
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
238
240
|
tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {
|
|
239
241
|
const tilesetChanged = this.state.frameNumber !== frameNumber;
|
|
240
242
|
if (tilesetChanged) {
|
|
@@ -12,16 +12,21 @@ import {
|
|
|
12
12
|
} from '@deck.gl/core';
|
|
13
13
|
import {GeoJsonLayer} from '@deck.gl/layers';
|
|
14
14
|
import {LayersList} from '@deck.gl/core';
|
|
15
|
-
import Tile2DHeader from './tile-2d-header';
|
|
16
15
|
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
|
|
16
|
+
import type {TileLoadProps, ZRange} from '../tileset-2d';
|
|
17
|
+
import {
|
|
18
|
+
Tileset2D,
|
|
19
|
+
Tile2DHeader,
|
|
20
|
+
RefinementStrategy,
|
|
21
|
+
STRATEGY_DEFAULT,
|
|
22
|
+
Tileset2DProps
|
|
23
|
+
} from '../tileset-2d';
|
|
24
|
+
import {urlType, getURLFromTemplate} from '../tileset-2d';
|
|
20
25
|
|
|
21
26
|
const defaultProps: DefaultProps<TileLayerProps> = {
|
|
22
27
|
TilesetClass: Tileset2D,
|
|
23
28
|
data: {type: 'data', value: []},
|
|
24
|
-
dataComparator: urlType.
|
|
29
|
+
dataComparator: urlType.equal,
|
|
25
30
|
renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},
|
|
26
31
|
getTileData: {type: 'function', optional: true, value: null, compare: false},
|
|
27
32
|
// TODO - change to onViewportLoad to align with Tile3DLayer
|
|
@@ -77,7 +82,7 @@ type _TileLayerProps<DataT> = {
|
|
|
77
82
|
onTileUnload?: (tile: Tile2DHeader<DataT>) => void;
|
|
78
83
|
|
|
79
84
|
/** Called when a tile failed to load. */
|
|
80
|
-
onTileError?: (err: any) => void;
|
|
85
|
+
onTileError?: (err: any, tile?) => void;
|
|
81
86
|
|
|
82
87
|
/** The bounding box of the layer's data. */
|
|
83
88
|
extent?: number[] | null;
|
|
@@ -141,10 +146,10 @@ export type TiledPickingInfo<DataT = any> = PickingInfo & {
|
|
|
141
146
|
*
|
|
142
147
|
* Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.
|
|
143
148
|
*/
|
|
144
|
-
export default class TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<
|
|
149
|
+
export default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<
|
|
145
150
|
ExtraPropsT & Required<_TileLayerProps<DataT>>
|
|
146
151
|
> {
|
|
147
|
-
static defaultProps = defaultProps
|
|
152
|
+
static defaultProps: DefaultProps = defaultProps;
|
|
148
153
|
static layerName = 'TileLayer';
|
|
149
154
|
|
|
150
155
|
initializeState() {
|
|
@@ -310,13 +315,20 @@ export default class TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeL
|
|
|
310
315
|
}
|
|
311
316
|
|
|
312
317
|
getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {
|
|
313
|
-
|
|
318
|
+
const sourceTile = (sourceLayer as any).props.tile;
|
|
319
|
+
if (info.picked) {
|
|
320
|
+
(info as any).tile = sourceTile;
|
|
321
|
+
}
|
|
322
|
+
(info as any).sourceTile = sourceTile;
|
|
314
323
|
return info;
|
|
315
324
|
}
|
|
316
325
|
|
|
317
326
|
protected _updateAutoHighlight(info: PickingInfo): void {
|
|
318
|
-
|
|
319
|
-
|
|
327
|
+
const sourceTile = (info as any).sourceTile as Tile2DHeader;
|
|
328
|
+
if (sourceTile && sourceTile.layers) {
|
|
329
|
+
for (const layer of sourceTile.layers) {
|
|
330
|
+
layer.updateAutoHighlight(info);
|
|
331
|
+
}
|
|
320
332
|
}
|
|
321
333
|
}
|
|
322
334
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// deck.gl, MIT license
|
|
2
|
+
|
|
3
|
+
export type {
|
|
4
|
+
TileLoadProps,
|
|
5
|
+
Bounds,
|
|
6
|
+
ZRange,
|
|
7
|
+
GeoBoundingBox,
|
|
8
|
+
NonGeoBoundingBox,
|
|
9
|
+
TileBoundingBox
|
|
10
|
+
} from './types';
|
|
11
|
+
|
|
12
|
+
export type {Tileset2DProps, RefinementStrategy} from './tileset-2d';
|
|
13
|
+
export {Tileset2D, STRATEGY_DEFAULT} from './tileset-2d';
|
|
14
|
+
|
|
15
|
+
export {Tile2DHeader} from './tile-2d-header';
|
|
16
|
+
|
|
17
|
+
export type {URLTemplate} from './utils';
|
|
18
|
+
export {
|
|
19
|
+
isGeoBoundingBox,
|
|
20
|
+
isURLTemplate,
|
|
21
|
+
urlType,
|
|
22
|
+
getURLFromTemplate,
|
|
23
|
+
getTileIndices,
|
|
24
|
+
tileToBoundingBox
|
|
25
|
+
} from './utils';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// deck.gl, MIT license
|
|
2
|
+
// @note - this is a duplicate of the deck.gl core export (because Tileset2D should be deck.gl independent)
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Speed up consecutive function calls by caching the result of calls with identical input
|
|
6
|
+
* https://en.wikipedia.org/wiki/Memoization
|
|
7
|
+
* @param compute - the function to be memoized
|
|
8
|
+
*/
|
|
9
|
+
export function memoize<In, Out>(compute: (args: In) => Out): (args: In) => Out {
|
|
10
|
+
let cachedArgs: any = {};
|
|
11
|
+
let cachedResult: Out;
|
|
12
|
+
|
|
13
|
+
return (args: In) => {
|
|
14
|
+
for (const key in args) {
|
|
15
|
+
if (!isEqual(args[key], cachedArgs[key])) {
|
|
16
|
+
cachedResult = compute(args);
|
|
17
|
+
cachedArgs = args;
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return cachedResult;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function isEqual(a, b) {
|
|
26
|
+
if (a === b) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(a)) {
|
|
30
|
+
// Special treatment for arrays: compare 1-level deep
|
|
31
|
+
// This is to support equality of matrix/coordinate props
|
|
32
|
+
const len = a.length;
|
|
33
|
+
if (!b || b.length !== len) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
for (let i = 0; i < len; i++) {
|
|
38
|
+
if (a[i] !== b[i]) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/* eslint-env browser */
|
|
2
|
-
import {Layer, log} from '@deck.gl/core';
|
|
3
2
|
import {RequestScheduler} from '@loaders.gl/loader-utils';
|
|
4
3
|
import {TileBoundingBox, TileIndex, TileLoadProps} from './types';
|
|
5
4
|
|
|
@@ -10,7 +9,7 @@ export type TileLoadDataProps<DataT = any> = {
|
|
|
10
9
|
onError: (error: any, tile: Tile2DHeader<DataT>) => void;
|
|
11
10
|
};
|
|
12
11
|
|
|
13
|
-
export
|
|
12
|
+
export class Tile2DHeader<DataT = any> {
|
|
14
13
|
index: TileIndex;
|
|
15
14
|
isVisible: boolean;
|
|
16
15
|
isSelected: boolean;
|
|
@@ -18,7 +17,7 @@ export default class Tile2DHeader<DataT = any> {
|
|
|
18
17
|
children: Tile2DHeader[] | null;
|
|
19
18
|
content: DataT | null;
|
|
20
19
|
state?: number;
|
|
21
|
-
layers?: Layer[] | null
|
|
20
|
+
layers?: any[] | null; // Layer[] | null
|
|
22
21
|
|
|
23
22
|
id!: string; // assigned _always_ with result of `getTileId`
|
|
24
23
|
bbox!: TileBoundingBox; // assigned _always_ with result of `getTileMetadata`
|
|
@@ -68,7 +67,8 @@ export default class Tile2DHeader<DataT = any> {
|
|
|
68
67
|
get byteLength(): number {
|
|
69
68
|
const result = this.content ? (this.content as any).byteLength : 0;
|
|
70
69
|
if (!Number.isFinite(result)) {
|
|
71
|
-
|
|
70
|
+
// eslint-disable-next-line no-console
|
|
71
|
+
console.error('byteLength not defined in tile data');
|
|
72
72
|
}
|
|
73
73
|
return result;
|
|
74
74
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/* eslint-disable complexity */
|
|
2
1
|
import {Viewport, WebMercatorViewport, _GlobeViewport} from '@deck.gl/core';
|
|
2
|
+
|
|
3
3
|
import {
|
|
4
4
|
CullingVolume,
|
|
5
5
|
Plane,
|
|
@@ -63,6 +63,7 @@ class OSMNode {
|
|
|
63
63
|
return this._children;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
// eslint-disable-next-line complexity
|
|
66
67
|
update(params: {
|
|
67
68
|
viewport: Viewport;
|
|
68
69
|
project: ((xyz: number[]) => number[]) | null;
|
|
@@ -178,6 +179,7 @@ class OSMNode {
|
|
|
178
179
|
}
|
|
179
180
|
}
|
|
180
181
|
|
|
182
|
+
// eslint-disable-next-line complexity
|
|
181
183
|
export function getOSMTileIndices(
|
|
182
184
|
viewport: Viewport,
|
|
183
185
|
maxZ: number,
|