@deck.gl/carto 8.8.0-beta.4 → 8.8.1
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 +1253 -107
- package/dist/es5/index.js +23 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +3 -3
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/layers/h3-tile-layer.js +26 -3
- package/dist/es5/layers/h3-tile-layer.js.map +1 -1
- package/dist/es5/layers/h3-tileset-2d.js +19 -13
- package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
- package/dist/es5/layers/quadbin-layer.js +71 -0
- package/dist/es5/layers/quadbin-layer.js.map +1 -0
- package/dist/es5/layers/{quadkey-tile-layer.js → quadbin-tile-layer.js} +17 -17
- package/dist/es5/layers/quadbin-tile-layer.js.map +1 -0
- package/dist/es5/layers/{quadkey-tileset-2d.js → quadbin-tileset-2d.js} +25 -57
- package/dist/es5/layers/quadbin-tileset-2d.js.map +1 -0
- package/dist/es5/layers/quadbin-utils.js +122 -0
- package/dist/es5/layers/quadbin-utils.js.map +1 -0
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +3 -3
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/layers/h3-tile-layer.js +20 -3
- package/dist/esm/layers/h3-tile-layer.js.map +1 -1
- package/dist/esm/layers/h3-tileset-2d.js +20 -16
- package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
- package/dist/esm/layers/quadbin-layer.js +29 -0
- package/dist/esm/layers/quadbin-layer.js.map +1 -0
- package/dist/esm/layers/{quadkey-tile-layer.js → quadbin-tile-layer.js} +10 -10
- package/dist/esm/layers/quadbin-tile-layer.js.map +1 -0
- package/dist/esm/layers/quadbin-tileset-2d.js +37 -0
- package/dist/esm/layers/quadbin-tileset-2d.js.map +1 -0
- package/dist/esm/layers/quadbin-utils.js +88 -0
- package/dist/esm/layers/quadbin-utils.js.map +1 -0
- package/dist.min.js +138 -138
- package/package.json +2 -2
- package/src/index.ts +6 -1
- package/src/layers/carto-layer.ts +7 -7
- package/src/layers/h3-tile-layer.ts +24 -3
- package/src/layers/h3-tileset-2d.ts +20 -10
- package/src/layers/quadbin-layer.ts +43 -0
- package/src/layers/{quadkey-tile-layer.ts → quadbin-tile-layer.ts} +15 -13
- package/src/layers/quadbin-tileset-2d.ts +34 -0
- package/src/layers/quadbin-utils.ts +102 -0
- package/typed/index.d.ts +2 -1
- package/typed/index.d.ts.map +1 -1
- package/typed/layers/carto-layer.d.ts +2 -2
- package/typed/layers/carto-layer.d.ts.map +1 -1
- package/typed/layers/h3-tile-layer.d.ts.map +1 -1
- package/typed/layers/h3-tileset-2d.d.ts +6 -0
- package/typed/layers/h3-tileset-2d.d.ts.map +1 -1
- package/typed/layers/quadbin-layer.d.ts +20 -0
- package/typed/layers/quadbin-layer.d.ts.map +1 -0
- package/typed/layers/quadbin-tile-layer.d.ts +21 -0
- package/typed/layers/quadbin-tile-layer.d.ts.map +1 -0
- package/typed/layers/quadbin-tileset-2d.d.ts +13 -0
- package/typed/layers/quadbin-tileset-2d.d.ts.map +1 -0
- package/typed/layers/quadbin-utils.d.ts +11 -0
- package/typed/layers/quadbin-utils.d.ts.map +1 -0
- package/dist/es5/layers/quadkey-tile-layer.js.map +0 -1
- package/dist/es5/layers/quadkey-tileset-2d.js.map +0 -1
- package/dist/esm/layers/quadkey-tile-layer.js.map +0 -1
- package/dist/esm/layers/quadkey-tileset-2d.js +0 -71
- package/dist/esm/layers/quadkey-tileset-2d.js.map +0 -1
- package/src/layers/quadkey-tileset-2d.ts +0 -59
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/carto",
|
|
3
3
|
"description": "CARTO official integration with Deck.gl. Build geospatial applications using CARTO and Deck.gl.",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "8.8.
|
|
5
|
+
"version": "8.8.1",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"@deck.gl/layers": "^8.0.0",
|
|
62
62
|
"@loaders.gl/core": "^3.0.0"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "fb84b75176a1c2114411e8d0b4063de594023567"
|
|
65
65
|
}
|
package/src/index.ts
CHANGED
|
@@ -2,7 +2,12 @@ export {getDefaultCredentials, setDefaultCredentials} from './config';
|
|
|
2
2
|
export {default as CartoLayer} from './layers/carto-layer';
|
|
3
3
|
export {default as _CartoTileLayer} from './layers/carto-tile-layer';
|
|
4
4
|
export {default as _H3TileLayer} from './layers/h3-tile-layer';
|
|
5
|
-
export {default as
|
|
5
|
+
export {default as _QuadbinTileLayer} from './layers/quadbin-tile-layer';
|
|
6
|
+
export {
|
|
7
|
+
tileToQuadbin as _tileToQuadbin,
|
|
8
|
+
quadbinToTile as _quadbinToTile,
|
|
9
|
+
quadbinZoom as _quadbinZoom
|
|
10
|
+
} from './layers/quadbin-utils';
|
|
6
11
|
export {default as BASEMAP} from './basemap';
|
|
7
12
|
export {default as colorBins} from './style/color-bins-style';
|
|
8
13
|
export {default as colorCategories} from './style/color-categories-style';
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from '@deck.gl/core';
|
|
9
9
|
import CartoTileLayer from './carto-tile-layer';
|
|
10
10
|
import H3TileLayer from './h3-tile-layer';
|
|
11
|
-
import
|
|
11
|
+
import QuadbinTileLayer from './quadbin-tile-layer';
|
|
12
12
|
import {MVTLayer} from '@deck.gl/geo-layers';
|
|
13
13
|
import {fetchLayerData, getDataV2, API_VERSIONS} from '../api';
|
|
14
14
|
import {
|
|
@@ -62,10 +62,10 @@ const defaultProps = {
|
|
|
62
62
|
// (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.
|
|
63
63
|
columns: {type: 'array', value: null},
|
|
64
64
|
|
|
65
|
-
// (String, optional):
|
|
65
|
+
// (String, optional): aggregation SQL expression. Only used for spatial index datasets
|
|
66
66
|
aggregationExp: null,
|
|
67
67
|
|
|
68
|
-
// (Number, optional):
|
|
68
|
+
// (Number, optional): aggregation resolution level. Only used for spatial index datasets, defaults to 6 for quadbins, 4 for h3
|
|
69
69
|
aggregationResLevel: null
|
|
70
70
|
};
|
|
71
71
|
|
|
@@ -146,10 +146,10 @@ type _CartoLayerProps = {
|
|
|
146
146
|
|
|
147
147
|
clientId?: string;
|
|
148
148
|
|
|
149
|
-
/**
|
|
149
|
+
/** Aggregation SQL expression. Only used for spatial index datasets **/
|
|
150
150
|
aggregationExp?: string;
|
|
151
151
|
|
|
152
|
-
/**
|
|
152
|
+
/** Aggregation resolution level. Only used for spatial index datasets, defaults to 6 for quadbins, 4 for h3. **/
|
|
153
153
|
aggregationResLevel?: number;
|
|
154
154
|
};
|
|
155
155
|
|
|
@@ -303,8 +303,8 @@ export default class CartoLayer<ExtraProps = {}> extends CompositeLayer<
|
|
|
303
303
|
if (data.scheme === 'h3') {
|
|
304
304
|
return [H3TileLayer, props];
|
|
305
305
|
}
|
|
306
|
-
if (data.scheme === '
|
|
307
|
-
return [
|
|
306
|
+
if (data.scheme === 'quadbin') {
|
|
307
|
+
return [QuadbinTileLayer, props];
|
|
308
308
|
}
|
|
309
309
|
return props.formatTiles === TILE_FORMATS.MVT ? [MVTLayer, props] : [CartoTileLayer, props];
|
|
310
310
|
}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
DefaultProps
|
|
8
8
|
} from '@deck.gl/core';
|
|
9
9
|
import {H3HexagonLayer} from '@deck.gl/geo-layers';
|
|
10
|
-
import H3Tileset2D from './h3-tileset-2d';
|
|
10
|
+
import H3Tileset2D, {getHexagonResolution} from './h3-tileset-2d';
|
|
11
11
|
import SpatialIndexTileLayer from './spatial-index-tile-layer';
|
|
12
12
|
|
|
13
13
|
const renderSubLayers = props => {
|
|
@@ -65,7 +65,26 @@ export default class H3TileLayer<DataT = any, ExtraPropsT = {}> extends Composit
|
|
|
65
65
|
|
|
66
66
|
renderLayers(): Layer | null | LayersList {
|
|
67
67
|
const {data, tileJSON} = this.state;
|
|
68
|
-
|
|
68
|
+
let minresolution = parseInt(tileJSON.minresolution);
|
|
69
|
+
let maxresolution = parseInt(tileJSON.maxresolution);
|
|
70
|
+
|
|
71
|
+
// Convert Mercator zooms provided in props into H3 res levels
|
|
72
|
+
// and clip into valid range provided from the tilejson
|
|
73
|
+
if (this.props.minZoom) {
|
|
74
|
+
minresolution = Math.max(
|
|
75
|
+
minresolution,
|
|
76
|
+
getHexagonResolution({zoom: this.props.minZoom, latitude: 0})
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
if (this.props.maxZoom) {
|
|
80
|
+
maxresolution = Math.min(
|
|
81
|
+
maxresolution,
|
|
82
|
+
getHexagonResolution({zoom: this.props.maxZoom, latitude: 0})
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// The naming is unfortunate, but minZoom & maxZoom in the context
|
|
87
|
+
// of a Tileset2D refer to the resolution levels, not the Mercator zooms
|
|
69
88
|
return [
|
|
70
89
|
new SpatialIndexTileLayer(this.props, {
|
|
71
90
|
id: `h3-tile-layer-${this.props.id}`,
|
|
@@ -73,7 +92,9 @@ export default class H3TileLayer<DataT = any, ExtraPropsT = {}> extends Composit
|
|
|
73
92
|
// @ts-expect-error Tileset2D should be generic over TileIndex
|
|
74
93
|
TilesetClass: H3Tileset2D,
|
|
75
94
|
renderSubLayers,
|
|
76
|
-
maxZoom
|
|
95
|
+
// minZoom and maxZoom are H3 resolutions, however we must use this naming as that is what the Tileset2D class expects
|
|
96
|
+
minZoom: minresolution,
|
|
97
|
+
maxZoom: maxresolution
|
|
77
98
|
})
|
|
78
99
|
];
|
|
79
100
|
}
|
|
@@ -7,16 +7,20 @@ function getHexagonsInBoundingBox(
|
|
|
7
7
|
{west, north, east, south}: GeoBoundingBox,
|
|
8
8
|
resolution: number
|
|
9
9
|
): string[] {
|
|
10
|
-
|
|
10
|
+
const longitudeSpan = Math.abs(east - west);
|
|
11
|
+
if (longitudeSpan > 180) {
|
|
11
12
|
// This is a known issue in h3-js: polyfill does not work correctly
|
|
12
13
|
// when longitude span is larger than 180 degrees.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
const nSegments = Math.ceil(longitudeSpan / 180);
|
|
15
|
+
let h3Indices: string[] = [];
|
|
16
|
+
for (let s = 0; s < nSegments; s++) {
|
|
17
|
+
const segmentEast = east + s * 180;
|
|
18
|
+
const segmentWest = Math.min(segmentEast + 179.9999999, west);
|
|
19
|
+
h3Indices = h3Indices.concat(
|
|
20
|
+
getHexagonsInBoundingBox({west: segmentWest, north, east: segmentEast, south}, resolution)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
return [...new Set(h3Indices)];
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
// `polyfill()` fills based on hexagon center, which means tiles vanish
|
|
@@ -55,7 +59,7 @@ function tileToBoundingBox(index: string): GeoBoundingBox {
|
|
|
55
59
|
// similar
|
|
56
60
|
// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)
|
|
57
61
|
const BIAS = 2;
|
|
58
|
-
function getHexagonResolution(viewport): number {
|
|
62
|
+
export function getHexagonResolution(viewport): number {
|
|
59
63
|
const hexagonScaleFactor = (2 / 3) * viewport.zoom;
|
|
60
64
|
const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));
|
|
61
65
|
|
|
@@ -64,6 +68,11 @@ function getHexagonResolution(viewport): number {
|
|
|
64
68
|
}
|
|
65
69
|
|
|
66
70
|
export default class H3Tileset2D extends Tileset2D {
|
|
71
|
+
/**
|
|
72
|
+
* Returns all tile indices in the current viewport. If the current zoom level is smaller
|
|
73
|
+
* than minZoom, return an empty array. If the current zoom level is greater than maxZoom,
|
|
74
|
+
* return tiles that are on maxZoom.
|
|
75
|
+
*/
|
|
67
76
|
// @ts-expect-error Tileset2D should be generic over TileIndex
|
|
68
77
|
getTileIndices({viewport, minZoom, maxZoom}): H3TileIndex[] {
|
|
69
78
|
const [east, south, west, north] = viewport.getBounds();
|
|
@@ -71,7 +80,8 @@ export default class H3Tileset2D extends Tileset2D {
|
|
|
71
80
|
let z = getHexagonResolution(viewport);
|
|
72
81
|
let indices: string[];
|
|
73
82
|
if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {
|
|
74
|
-
|
|
83
|
+
// TODO support `extent` prop
|
|
84
|
+
return [];
|
|
75
85
|
}
|
|
76
86
|
if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {
|
|
77
87
|
z = maxZoom;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {AccessorFunction, DefaultProps} from '@deck.gl/core';
|
|
2
|
+
import {
|
|
3
|
+
_GeoCellLayer as GeoCellLayer,
|
|
4
|
+
_GeoCellLayerProps as GeoCellLayerProps
|
|
5
|
+
} from '@deck.gl/geo-layers';
|
|
6
|
+
import {getQuadbinPolygon} from './quadbin-utils';
|
|
7
|
+
|
|
8
|
+
const defaultProps: DefaultProps<QuadbinLayerProps> = {
|
|
9
|
+
getQuadbin: {type: 'accessor', value: d => d.quadbin}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/** All properties supported by QuadbinLayer. */
|
|
13
|
+
export type QuadbinLayerProps<DataT = any> = _QuadbinLayerProps<DataT> & GeoCellLayerProps<DataT>;
|
|
14
|
+
|
|
15
|
+
/** Properties added by QuadbinLayer. */
|
|
16
|
+
type _QuadbinLayerProps<DataT> = {
|
|
17
|
+
/**
|
|
18
|
+
* Called for each data object to retrieve the quadbin string identifier.
|
|
19
|
+
*
|
|
20
|
+
* By default, it reads `quadbin` property of data object.
|
|
21
|
+
*/
|
|
22
|
+
getQuadbin?: AccessorFunction<DataT, string>;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default class QuadbinLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<
|
|
26
|
+
DataT,
|
|
27
|
+
Required<_QuadbinLayerProps<DataT>> & ExtraProps
|
|
28
|
+
> {
|
|
29
|
+
static layerName = 'QuadbinLayer';
|
|
30
|
+
static defaultProps = defaultProps;
|
|
31
|
+
|
|
32
|
+
indexToBounds(): Partial<GeoCellLayer['props']> | null {
|
|
33
|
+
const {data, getQuadbin} = this.props;
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
data,
|
|
37
|
+
_normalize: false,
|
|
38
|
+
positionFormat: 'XY',
|
|
39
|
+
|
|
40
|
+
getPolygon: (x: DataT, objectInfo) => getQuadbinPolygon(getQuadbin(x, objectInfo))
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -6,33 +6,35 @@ import {
|
|
|
6
6
|
UpdateParameters,
|
|
7
7
|
DefaultProps
|
|
8
8
|
} from '@deck.gl/core';
|
|
9
|
-
import
|
|
10
|
-
import
|
|
9
|
+
import QuadbinLayer, {QuadbinLayerProps} from './quadbin-layer';
|
|
10
|
+
import QuadbinTileset2D from './quadbin-tileset-2d';
|
|
11
11
|
import SpatialIndexTileLayer from './spatial-index-tile-layer';
|
|
12
12
|
|
|
13
13
|
const renderSubLayers = props => {
|
|
14
14
|
const {data} = props;
|
|
15
15
|
if (!data || !data.length) return null;
|
|
16
|
-
return new
|
|
16
|
+
return new QuadbinLayer(props, {
|
|
17
|
+
getQuadbin: d => d.id
|
|
18
|
+
});
|
|
17
19
|
};
|
|
18
20
|
|
|
19
|
-
const defaultProps: DefaultProps<
|
|
21
|
+
const defaultProps: DefaultProps<QuadbinTileLayerProps> = {
|
|
20
22
|
aggregationResLevel: 6
|
|
21
23
|
};
|
|
22
24
|
|
|
23
|
-
/** All properties supported by
|
|
24
|
-
export type
|
|
25
|
+
/** All properties supported by QuadbinTileLayer. */
|
|
26
|
+
export type QuadbinTileLayerProps<DataT = any> = _QuadbinTileLayerProps<DataT> &
|
|
25
27
|
CompositeLayerProps<DataT>;
|
|
26
28
|
|
|
27
|
-
/** Properties added by
|
|
28
|
-
type
|
|
29
|
+
/** Properties added by QuadbinTileLayer. */
|
|
30
|
+
type _QuadbinTileLayerProps<DataT> = QuadbinLayerProps<DataT> & {
|
|
29
31
|
aggregationResLevel?: number;
|
|
30
32
|
};
|
|
31
33
|
|
|
32
|
-
export default class
|
|
33
|
-
ExtraProps & Required<
|
|
34
|
+
export default class QuadbinTileLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<
|
|
35
|
+
ExtraProps & Required<_QuadbinTileLayerProps<DataT>>
|
|
34
36
|
> {
|
|
35
|
-
static layerName = '
|
|
37
|
+
static layerName = 'QuadbinTileLayer';
|
|
36
38
|
static defaultProps = defaultProps;
|
|
37
39
|
|
|
38
40
|
state!: {
|
|
@@ -57,10 +59,10 @@ export default class QuadkeyTileLayer<DataT = any, ExtraProps = {}> extends Comp
|
|
|
57
59
|
const maxZoom = parseInt(tileJSON?.maxresolution);
|
|
58
60
|
return [
|
|
59
61
|
new SpatialIndexTileLayer(this.props, {
|
|
60
|
-
id: `
|
|
62
|
+
id: `quadbin-tile-layer-${this.props.id}`,
|
|
61
63
|
data,
|
|
62
64
|
// TODO: Tileset2D should be generic over TileIndex type
|
|
63
|
-
TilesetClass:
|
|
65
|
+
TilesetClass: QuadbinTileset2D as any,
|
|
64
66
|
renderSubLayers,
|
|
65
67
|
maxZoom
|
|
66
68
|
})
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';
|
|
2
|
+
import {tileToQuadbin, quadbinToTile, quadbinParent, quadbinZoom} from './quadbin-utils';
|
|
3
|
+
|
|
4
|
+
type QuadbinTileIndex = {i: string};
|
|
5
|
+
|
|
6
|
+
export default class QuadbinTileset2D extends Tileset2D {
|
|
7
|
+
// @ts-expect-error for spatial indices, TileSet2d should be parametrized by TileIndexT
|
|
8
|
+
getTileIndices(opts): QuadbinTileIndex[] {
|
|
9
|
+
return super
|
|
10
|
+
.getTileIndices(opts)
|
|
11
|
+
.map(tileToQuadbin)
|
|
12
|
+
.map(i => ({i}));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// @ts-expect-error TileIndex must be generic
|
|
16
|
+
getTileId({i}: QuadbinTileIndex): string {
|
|
17
|
+
return i;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// @ts-expect-error TileIndex must be generic
|
|
21
|
+
getTileMetadata({i}: QuadbinTileIndex) {
|
|
22
|
+
return super.getTileMetadata(quadbinToTile(i));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// @ts-expect-error TileIndex must be generic
|
|
26
|
+
getTileZoom({i}: QuadbinTileIndex): number {
|
|
27
|
+
return Number(quadbinZoom(i));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// @ts-expect-error TileIndex must be generic
|
|
31
|
+
getParentIndex({i}: QuadbinTileIndex): QuadbinTileIndex {
|
|
32
|
+
return {i: quadbinParent(i)};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import {worldToLngLat} from '@math.gl/web-mercator';
|
|
2
|
+
|
|
3
|
+
const TILE_SIZE = 512;
|
|
4
|
+
|
|
5
|
+
const B = [
|
|
6
|
+
0x5555555555555555n,
|
|
7
|
+
0x3333333333333333n,
|
|
8
|
+
0x0f0f0f0f0f0f0f0fn,
|
|
9
|
+
0x00ff00ff00ff00ffn,
|
|
10
|
+
0x0000ffff0000ffffn,
|
|
11
|
+
0x00000000ffffffffn
|
|
12
|
+
];
|
|
13
|
+
const S = [0n, 1n, 2n, 4n, 8n, 16n];
|
|
14
|
+
|
|
15
|
+
function indexToBigInt(index: string): bigint {
|
|
16
|
+
return BigInt(`0x${index}`);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function bigIntToIndex(quadbin: bigint): string {
|
|
20
|
+
return quadbin.toString(16);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function tileToQuadbin(tile): string {
|
|
24
|
+
if (tile.z < 0 || tile.z > 26) {
|
|
25
|
+
throw new Error('Wrong zoom');
|
|
26
|
+
}
|
|
27
|
+
const z = BigInt(tile.z);
|
|
28
|
+
let x = BigInt(tile.x) << (32n - z);
|
|
29
|
+
let y = BigInt(tile.y) << (32n - z);
|
|
30
|
+
|
|
31
|
+
for (let i = 0; i < 5; i++) {
|
|
32
|
+
const s = S[5 - i];
|
|
33
|
+
const b = B[4 - i];
|
|
34
|
+
x = (x | (x << s)) & b;
|
|
35
|
+
y = (y | (y << s)) & b;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const quadbin =
|
|
39
|
+
0x4000000000000000n |
|
|
40
|
+
(1n << 59n) | // | (mode << 59) | (mode_dep << 57)
|
|
41
|
+
(z << 52n) |
|
|
42
|
+
((x | (y << 1n)) >> 12n) |
|
|
43
|
+
(0xfffffffffffffn >> (z * 2n));
|
|
44
|
+
return bigIntToIndex(quadbin);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function quadbinToTile(index: string) {
|
|
48
|
+
const quadbin = indexToBigInt(index);
|
|
49
|
+
const mode = (quadbin >> 59n) & 7n;
|
|
50
|
+
const modeDep = (quadbin >> 57n) & 3n;
|
|
51
|
+
const z = (quadbin >> 52n) & 0x1fn;
|
|
52
|
+
const q = (quadbin & 0xfffffffffffffn) << 12n;
|
|
53
|
+
|
|
54
|
+
if (mode !== 1n && modeDep !== 0n) {
|
|
55
|
+
throw new Error('Wrong mode');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
let x = q;
|
|
59
|
+
let y = q >> 1n;
|
|
60
|
+
|
|
61
|
+
for (let i = 0; i < 6; i++) {
|
|
62
|
+
const s = S[i];
|
|
63
|
+
const b = B[i];
|
|
64
|
+
x = (x | (x >> s)) & b;
|
|
65
|
+
y = (y | (y >> s)) & b;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
x = x >> (32n - z);
|
|
69
|
+
y = y >> (32n - z);
|
|
70
|
+
|
|
71
|
+
return {z: Number(z), x: Number(x), y: Number(y)};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function quadbinZoom(index: string) {
|
|
75
|
+
const quadbin = indexToBigInt(index);
|
|
76
|
+
return (quadbin >> 52n) & 0x1fn;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function quadbinParent(index: string) {
|
|
80
|
+
const quadbin = indexToBigInt(index);
|
|
81
|
+
const zparent = quadbinZoom(index) - 1n;
|
|
82
|
+
const parent =
|
|
83
|
+
(quadbin & ~(0x1fn << 52n)) | (zparent << 52n) | (0xfffffffffffffn >> (zparent * 2n));
|
|
84
|
+
return bigIntToIndex(parent);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function quadbinToWorldBounds(quadbin: string): [number[], number[]] {
|
|
88
|
+
const {x, y, z} = quadbinToTile(quadbin);
|
|
89
|
+
const mask = 1 << z;
|
|
90
|
+
const scale = mask / TILE_SIZE;
|
|
91
|
+
return [
|
|
92
|
+
[x / scale, TILE_SIZE - y / scale],
|
|
93
|
+
[(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function getQuadbinPolygon(quadbin: string): number[] {
|
|
98
|
+
const [topLeft, bottomRight] = quadbinToWorldBounds(quadbin);
|
|
99
|
+
const [w, n] = worldToLngLat(topLeft);
|
|
100
|
+
const [e, s] = worldToLngLat(bottomRight);
|
|
101
|
+
return [e, n, e, s, w, s, w, n, e, n];
|
|
102
|
+
}
|
package/typed/index.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ export { getDefaultCredentials, setDefaultCredentials } from './config';
|
|
|
2
2
|
export { default as CartoLayer } from './layers/carto-layer';
|
|
3
3
|
export { default as _CartoTileLayer } from './layers/carto-tile-layer';
|
|
4
4
|
export { default as _H3TileLayer } from './layers/h3-tile-layer';
|
|
5
|
-
export { default as
|
|
5
|
+
export { default as _QuadbinTileLayer } from './layers/quadbin-tile-layer';
|
|
6
|
+
export { tileToQuadbin as _tileToQuadbin, quadbinToTile as _quadbinToTile, quadbinZoom as _quadbinZoom } from './layers/quadbin-utils';
|
|
6
7
|
export { default as BASEMAP } from './basemap';
|
|
7
8
|
export { default as colorBins } from './style/color-bins-style';
|
|
8
9
|
export { default as colorCategories } from './style/color-categories-style';
|
package/typed/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAE,qBAAqB,EAAC,MAAM,UAAU,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,SAAS,IAAI,UAAU,EACvB,gBAAgB,IAAI,iBAAiB,EACtC,MAAM,OAAO,CAAC;AAEf,YAAY,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAE,qBAAqB,EAAC,MAAM,UAAU,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACzE,OAAO,EACL,aAAa,IAAI,cAAc,EAC/B,aAAa,IAAI,cAAc,EAC/B,WAAW,IAAI,YAAY,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,SAAS,IAAI,UAAU,EACvB,gBAAgB,IAAI,iBAAiB,EACtC,MAAM,OAAO,CAAC;AAEf,YAAY,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC"}
|
|
@@ -67,9 +67,9 @@ declare type _CartoLayerProps = {
|
|
|
67
67
|
*/
|
|
68
68
|
onDataError?: (err: unknown) => void;
|
|
69
69
|
clientId?: string;
|
|
70
|
-
/**
|
|
70
|
+
/** Aggregation SQL expression. Only used for spatial index datasets **/
|
|
71
71
|
aggregationExp?: string;
|
|
72
|
-
/**
|
|
72
|
+
/** Aggregation resolution level. Only used for spatial index datasets, defaults to 6 for quadbins, 4 for h3. **/
|
|
73
73
|
aggregationResLevel?: number;
|
|
74
74
|
};
|
|
75
75
|
export default class CartoLayer<ExtraProps = {}> extends CompositeLayer<Required<_CartoLayerProps> & ExtraProps> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carto-layer.d.ts","sourceRoot":"","sources":["../../src/layers/carto-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,EAEL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AAMvB,OAAO,EAIL,OAAO,EAEP,UAAU,EAEX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,WAAW,EAEZ,MAAM,WAAW,CAAC;AA4CnB,8CAA8C;AAC9C,oBAAY,eAAe,CAAC,KAAK,GAAG,GAAG,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEzF,sCAAsC;AACtC,aAAK,gBAAgB,GAAG;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IAEzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAErC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,
|
|
1
|
+
{"version":3,"file":"carto-layer.d.ts","sourceRoot":"","sources":["../../src/layers/carto-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,EAEL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AAMvB,OAAO,EAIL,OAAO,EAEP,UAAU,EAEX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,WAAW,EAEZ,MAAM,WAAW,CAAC;AA4CnB,8CAA8C;AAC9C,oBAAY,eAAe,CAAC,KAAK,GAAG,GAAG,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEzF,sCAAsC;AACtC,aAAK,gBAAgB,GAAG;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IAEzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAErC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,UAAU,GAAG,EAAE,CAAE,SAAQ,cAAc,CACrE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,UAAU,CACxC;IACC,MAAM,CAAC,SAAS,SAAgB;IAChC,MAAM,CAAC,YAAY,MAAuB;IAE1C,eAAe,IAAI,IAAI;IAOvB,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAuCzC,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,WAAW,EACZ,EAAE;QACD,KAAK,EAAE,eAAe,CAAC;QACvB,QAAQ,EAAE,eAAe,CAAC;QAC1B,OAAO,EAAE,GAAG,CAAC;QACb,WAAW,EAAE,WAAW,CAAC;KAC1B,GAAG,IAAI;IAoBF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAuClC,oBAAoB,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC;IAgCzC,YAAY,IAAI,KAAK,GAAG,IAAI;CAqB7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/h3-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,eAAe,CAAC;AAqBvB,+CAA+C;AAC/C,oBAAY,gBAAgB,CAAC,KAAK,GAAG,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAIlG,aAAK,mBAAmB,CAAC,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE5D,uCAAuC;AACvC,aAAK,iBAAiB,CAAC,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAC3D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,WAAW,GAAG,EAAE,CAAE,SAAQ,cAAc,CACpF,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CACjD;IACC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,YAAY,yCAAgB;IAEnC,KAAK,EAAG;QACN,QAAQ,EAAE,GAAG,CAAC;QACd,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;IAEF,eAAe,IAAI,IAAI;IAKvB,WAAW,CAAC,EAAC,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IASxD,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"h3-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/h3-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,eAAe,CAAC;AAqBvB,+CAA+C;AAC/C,oBAAY,gBAAgB,CAAC,KAAK,GAAG,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAIlG,aAAK,mBAAmB,CAAC,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE5D,uCAAuC;AACvC,aAAK,iBAAiB,CAAC,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAC3D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,WAAW,GAAG,EAAE,CAAE,SAAQ,cAAc,CACpF,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CACjD;IACC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,YAAY,yCAAgB;IAEnC,KAAK,EAAG;QACN,QAAQ,EAAE,GAAG,CAAC;QACd,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;IAEF,eAAe,IAAI,IAAI;IAKvB,WAAW,CAAC,EAAC,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IASxD,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CAmC1C"}
|
|
@@ -2,7 +2,13 @@ import { _Tileset2D as Tileset2D, GeoBoundingBox } from '@deck.gl/geo-layers/typ
|
|
|
2
2
|
export declare type H3TileIndex = {
|
|
3
3
|
i: string;
|
|
4
4
|
};
|
|
5
|
+
export declare function getHexagonResolution(viewport: any): number;
|
|
5
6
|
export default class H3Tileset2D extends Tileset2D {
|
|
7
|
+
/**
|
|
8
|
+
* Returns all tile indices in the current viewport. If the current zoom level is smaller
|
|
9
|
+
* than minZoom, return an empty array. If the current zoom level is greater than maxZoom,
|
|
10
|
+
* return tiles that are on maxZoom.
|
|
11
|
+
*/
|
|
6
12
|
getTileIndices({ viewport, minZoom, maxZoom }: {
|
|
7
13
|
viewport: any;
|
|
8
14
|
minZoom: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/layers/h3-tileset-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,IAAI,SAAS,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAG5E,oBAAY,WAAW,GAAG;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"h3-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/layers/h3-tileset-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,IAAI,SAAS,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAG5E,oBAAY,WAAW,GAAG;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AA0DtC,wBAAgB,oBAAoB,CAAC,QAAQ,KAAA,GAAG,MAAM,CAMrD;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAChD;;;;OAIG;IAEH,cAAc,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAC;;;;KAAA,GAAG,WAAW,EAAE;IAwB3D,SAAS,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW,GAAG,MAAM;IAKnC,eAAe,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW;;;IAKhC,WAAW,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW,GAAG,MAAM;IAKrC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAKhD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AccessorFunction, DefaultProps } from '@deck.gl/core/typed';
|
|
2
|
+
import { _GeoCellLayer as GeoCellLayer, _GeoCellLayerProps as GeoCellLayerProps } from '@deck.gl/geo-layers/typed';
|
|
3
|
+
/** All properties supported by QuadbinLayer. */
|
|
4
|
+
export declare type QuadbinLayerProps<DataT = any> = _QuadbinLayerProps<DataT> & GeoCellLayerProps<DataT>;
|
|
5
|
+
/** Properties added by QuadbinLayer. */
|
|
6
|
+
declare type _QuadbinLayerProps<DataT> = {
|
|
7
|
+
/**
|
|
8
|
+
* Called for each data object to retrieve the quadbin string identifier.
|
|
9
|
+
*
|
|
10
|
+
* By default, it reads `quadbin` property of data object.
|
|
11
|
+
*/
|
|
12
|
+
getQuadbin?: AccessorFunction<DataT, string>;
|
|
13
|
+
};
|
|
14
|
+
export default class QuadbinLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<DataT, Required<_QuadbinLayerProps<DataT>> & ExtraProps> {
|
|
15
|
+
static layerName: string;
|
|
16
|
+
static defaultProps: DefaultProps<QuadbinLayerProps<any>>;
|
|
17
|
+
indexToBounds(): Partial<GeoCellLayer['props']> | null;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=quadbin-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quadbin-layer.d.ts","sourceRoot":"","sources":["../../src/layers/quadbin-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,aAAa,IAAI,YAAY,EAC7B,kBAAkB,IAAI,iBAAiB,EACxC,MAAM,qBAAqB,CAAC;AAO7B,gDAAgD;AAChD,oBAAY,iBAAiB,CAAC,KAAK,GAAG,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAElG,wCAAwC;AACxC,aAAK,kBAAkB,CAAC,KAAK,IAAI;IAC/B;;;;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,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CACjD;IACC,MAAM,CAAC,SAAS,SAAkB;IAClC,MAAM,CAAC,YAAY,uCAAgB;IAEnC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;CAWvD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CompositeLayer, CompositeLayerProps, Layer, LayersList, UpdateParameters, DefaultProps } from '@deck.gl/core/typed';
|
|
2
|
+
import { QuadbinLayerProps } from './quadbin-layer';
|
|
3
|
+
/** All properties supported by QuadbinTileLayer. */
|
|
4
|
+
export declare type QuadbinTileLayerProps<DataT = any> = _QuadbinTileLayerProps<DataT> & CompositeLayerProps<DataT>;
|
|
5
|
+
/** Properties added by QuadbinTileLayer. */
|
|
6
|
+
declare type _QuadbinTileLayerProps<DataT> = QuadbinLayerProps<DataT> & {
|
|
7
|
+
aggregationResLevel?: number;
|
|
8
|
+
};
|
|
9
|
+
export default class QuadbinTileLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<ExtraProps & Required<_QuadbinTileLayerProps<DataT>>> {
|
|
10
|
+
static layerName: string;
|
|
11
|
+
static defaultProps: DefaultProps<QuadbinTileLayerProps<any>>;
|
|
12
|
+
state: {
|
|
13
|
+
tileJSON: any;
|
|
14
|
+
data: any;
|
|
15
|
+
};
|
|
16
|
+
initializeState(): void;
|
|
17
|
+
updateState({ changeFlags }: UpdateParameters<this>): void;
|
|
18
|
+
renderLayers(): Layer | null | LayersList;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=quadbin-tile-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quadbin-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/quadbin-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,eAAe,CAAC;AACvB,OAAqB,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAgBhE,oDAAoD;AACpD,oBAAY,qBAAqB,CAAC,KAAK,GAAG,GAAG,IAAI,sBAAsB,CAAC,KAAK,CAAC,GAC5E,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAE7B,4CAA4C;AAC5C,aAAK,sBAAsB,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,gBAAgB,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,EAAE,CAAE,SAAQ,cAAc,CACxF,UAAU,GAAG,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CACrD;IACC,MAAM,CAAC,SAAS,SAAsB;IACtC,MAAM,CAAC,YAAY,2CAAgB;IAEnC,KAAK,EAAG;QACN,QAAQ,EAAE,GAAG,CAAC;QACd,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;IACF,eAAe,IAAI,IAAI;IAIvB,WAAW,CAAC,EAAC,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IASxD,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CAc1C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers/typed';
|
|
2
|
+
declare type QuadbinTileIndex = {
|
|
3
|
+
i: string;
|
|
4
|
+
};
|
|
5
|
+
export default class QuadbinTileset2D extends Tileset2D {
|
|
6
|
+
getTileIndices(opts: any): QuadbinTileIndex[];
|
|
7
|
+
getTileId({ i }: QuadbinTileIndex): string;
|
|
8
|
+
getTileMetadata({ i }: QuadbinTileIndex): Record<string, any>;
|
|
9
|
+
getTileZoom({ i }: QuadbinTileIndex): number;
|
|
10
|
+
getParentIndex({ i }: QuadbinTileIndex): QuadbinTileIndex;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=quadbin-tileset-2d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quadbin-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/layers/quadbin-tileset-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,IAAI,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAG5D,aAAK,gBAAgB,GAAG;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS;IAErD,cAAc,CAAC,IAAI,KAAA,GAAG,gBAAgB,EAAE;IAQxC,SAAS,CAAC,EAAC,CAAC,EAAC,EAAE,gBAAgB,GAAG,MAAM;IAKxC,eAAe,CAAC,EAAC,CAAC,EAAC,EAAE,gBAAgB;IAKrC,WAAW,CAAC,EAAC,CAAC,EAAC,EAAE,gBAAgB,GAAG,MAAM;IAK1C,cAAc,CAAC,EAAC,CAAC,EAAC,EAAE,gBAAgB,GAAG,gBAAgB;CAGxD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function tileToQuadbin(tile: any): string;
|
|
2
|
+
export declare function quadbinToTile(index: string): {
|
|
3
|
+
z: number;
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function quadbinZoom(index: string): bigint;
|
|
8
|
+
export declare function quadbinParent(index: string): string;
|
|
9
|
+
export declare function quadbinToWorldBounds(quadbin: string): [number[], number[]];
|
|
10
|
+
export declare function getQuadbinPolygon(quadbin: string): number[];
|
|
11
|
+
//# sourceMappingURL=quadbin-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quadbin-utils.d.ts","sourceRoot":"","sources":["../../src/layers/quadbin-utils.ts"],"names":[],"mappings":"AAsBA,wBAAgB,aAAa,CAAC,IAAI,KAAA,GAAG,MAAM,CAsB1C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM;;;;EAyB1C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAGxC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,UAM1C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAQ1E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAK3D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/layers/quadkey-tile-layer.ts"],"names":["renderSubLayers","props","data","length","QuadkeyLayer","getQuadkey","d","id","defaultProps","aggregationResLevel","QuadkeyTileLayer","setState","tileJSON","changeFlags","dataChanged","tiles","state","maxZoom","parseInt","maxresolution","SpatialIndexTileLayer","TilesetClass","QuadkeyTileset2D","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;;;;;AAEA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,KAAK,EAAI;AAC/B,MAAOC,IAAP,GAAeD,KAAf,CAAOC,IAAP;AACA,MAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B,OAAO,IAAP;AAC3B,SAAO,IAAIC,uBAAJ,CAAiBH,KAAjB,EAAwB;AAACI,IAAAA,UAAU,EAAE,oBAAAC,CAAC;AAAA,aAAIA,CAAC,CAACC,EAAN;AAAA;AAAd,GAAxB,CAAP;AACD,CAJD;;AAMA,IAAMC,YAAiD,GAAG;AACxDC,EAAAA,mBAAmB,EAAE;AADmC,CAA1D;;IAaqBC,gB;;;;;;;;;;;;;;;;;;;;;WAUnB,2BAAwB;AACtB,WAAKC,QAAL,CAAc;AAACT,QAAAA,IAAI,EAAE,IAAP;AAAaU,QAAAA,QAAQ,EAAE;AAAvB,OAAd;AACD;;;WAED,2BAAyD;AAAA,UAA5CC,WAA4C,QAA5CA,WAA4C;;AACvD,UAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,YAAKZ,IAAL,GAAa,KAAKD,KAAlB,CAAKC,IAAL;AACA,YAAMU,QAAQ,GAAGV,IAAjB;AACAA,QAAAA,IAAI,GAAIU,QAAD,CAAkBG,KAAzB;AACA,aAAKJ,QAAL,CAAc;AAACT,UAAAA,IAAI,EAAJA,IAAD;AAAOU,UAAAA,QAAQ,EAARA;AAAP,SAAd;AACD;AACF;;;WAED,wBAA0C;AACxC,wBAAyB,KAAKI,KAA9B;AAAA,UAAOd,IAAP,eAAOA,IAAP;AAAA,UAAaU,QAAb,eAAaA,QAAb;AACA,UAAMK,OAAO,GAAGC,QAAQ,CAACN,QAAD,aAACA,QAAD,uBAACA,QAAQ,CAAEO,aAAX,CAAxB;AACA,aAAO,CACL,IAAIC,8BAAJ,CAA0B,KAAKnB,KAA/B,EAAsC;AACpCM,QAAAA,EAAE,+BAAwB,KAAKN,KAAL,CAAWM,EAAnC,CADkC;AAEpCL,QAAAA,IAAI,EAAJA,IAFoC;AAIpCmB,QAAAA,YAAY,EAAEC,yBAJsB;AAKpCtB,QAAAA,eAAe,EAAfA,eALoC;AAMpCiB,QAAAA,OAAO,EAAPA;AANoC,OAAtC,CADK,CAAP;AAUD;;;EApCyEM,oB;;;8BAAvDb,gB,eAGA,kB;8BAHAA,gB,kBAIGF,Y","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport {QuadkeyLayer, QuadkeyLayerProps} from '@deck.gl/geo-layers';\nimport QuadkeyTileset2D from './quadkey-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n if (!data || !data.length) return null;\n return new QuadkeyLayer(props, {getQuadkey: d => d.id});\n};\n\nconst defaultProps: DefaultProps<QuadkeyTileLayerProps> = {\n aggregationResLevel: 6\n};\n\n/** All properties supported by QuadkeyTileLayer. */\nexport type QuadkeyTileLayerProps<DataT = any> = _QuadkeyTileLayerProps<DataT> &\n CompositeLayerProps<DataT>;\n\n/** Properties added by QuadkeyTileLayer. */\ntype _QuadkeyTileLayerProps<DataT> = QuadkeyLayerProps<DataT> & {\n aggregationResLevel?: number;\n};\n\nexport default class QuadkeyTileLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<\n ExtraProps & Required<_QuadkeyTileLayerProps<DataT>>\n> {\n static layerName = 'QuadkeyTileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\n initializeState(): void {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({changeFlags}: UpdateParameters<this>): void {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = (tileJSON as any).tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {data, tileJSON} = this.state;\n const maxZoom = parseInt(tileJSON?.maxresolution);\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `quadkey-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadkeyTileset2D as any,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n"],"file":"quadkey-tile-layer.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/layers/quadkey-tileset-2d.ts"],"names":["tileToQuadkey","tile","index","z","b","mask","x","y","toString","i","quadkeyToTile","quadkey","length","q","Number","QuadkeyTileset2D","opts","map","slice","Tileset2D"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAGA,SAASA,aAAT,CAAuBC,IAAvB,EAA+C;AAC7C,MAAIC,KAAK,GAAG,EAAZ;;AACA,OAAK,IAAIC,CAAC,GAAGF,IAAI,CAACE,CAAlB,EAAqBA,CAAC,GAAG,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B,QAAIC,CAAC,GAAG,CAAR;AACA,QAAMC,IAAI,GAAG,KAAMF,CAAC,GAAG,CAAvB;AACA,QAAI,CAACF,IAAI,CAACK,CAAL,GAASD,IAAV,MAAoB,CAAxB,EAA2BD,CAAC;AAC5B,QAAI,CAACH,IAAI,CAACM,CAAL,GAASF,IAAV,MAAoB,CAAxB,EAA2BD,CAAC,IAAI,CAAL;AAC3BF,IAAAA,KAAK,IAAIE,CAAC,CAACI,QAAF,EAAT;AACD;;AACD,SAAO;AAACC,IAAAA,CAAC,EAAEP;AAAJ,GAAP;AACD;;AAED,SAASQ,aAAT,CAAuBR,KAAvB,EAAgD;AAC9C,MAAMS,OAAO,GAAGT,KAAK,CAACO,CAAtB;AACA,MAAMR,IAAI,GAAG;AAACK,IAAAA,CAAC,EAAE,CAAJ;AAAOC,IAAAA,CAAC,EAAE,CAAV;AAAaJ,IAAAA,CAAC,EAAEQ,OAAO,CAACC;AAAxB,GAAb;;AAEA,OAAK,IAAIH,CAAC,GAAGR,IAAI,CAACE,CAAlB,EAAqBM,CAAC,GAAG,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B,QAAMJ,IAAI,GAAG,KAAMI,CAAC,GAAG,CAAvB;AACA,QAAMI,CAAC,GAAGC,MAAM,CAACH,OAAO,CAACV,IAAI,CAACE,CAAL,GAASM,CAAV,CAAR,CAAhB;AACA,QAAII,CAAC,KAAK,CAAV,EAAaZ,IAAI,CAACK,CAAL,IAAUD,IAAV;AACb,QAAIQ,CAAC,KAAK,CAAV,EAAaZ,IAAI,CAACM,CAAL,IAAUF,IAAV;;AACb,QAAIQ,CAAC,KAAK,CAAV,EAAa;AACXZ,MAAAA,IAAI,CAACK,CAAL,IAAUD,IAAV;AACAJ,MAAAA,IAAI,CAACM,CAAL,IAAUF,IAAV;AACD;AACF;;AACD,SAAOJ,IAAP;AACD;;IAEoBc,gB;;;;;;;;;;;;WAEnB,wBAAeC,IAAf,EAAyC;AACvC,aAAO,iHAAqBA,IAArB,EAA2BC,GAA3B,CAA+BjB,aAA/B,CAAP;AACD;;;WAGD,yBAAiC;AAAA,UAAtBS,CAAsB,QAAtBA,CAAsB;AAC/B,aAAOA,CAAP;AACD;;;WAGD,yBAAgBP,KAAhB,EAAyC;AACvC,+HAA6BQ,aAAa,CAACR,KAAD,CAA1C;AACD;;;WAGD,4BAAmC;AAAA,UAAtBO,CAAsB,SAAtBA,CAAsB;AACjC,aAAOA,CAAC,CAACG,MAAT;AACD;;;WAGD,wBAAeV,KAAf,EAAwC;AACtC,UAAMO,CAAC,GAAGP,KAAK,CAACO,CAAN,CAAQS,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;AACA,aAAO;AAACT,QAAAA,CAAC,EAADA;AAAD,OAAP;AACD;;;EAzB2CU,qB","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\n\ntype QuadkeyTileIndex = {i: string};\nfunction tileToQuadkey(tile): QuadkeyTileIndex {\n let index = '';\n for (let z = tile.z; z > 0; z--) {\n let b = 0;\n const mask = 1 << (z - 1);\n if ((tile.x & mask) !== 0) b++;\n if ((tile.y & mask) !== 0) b += 2;\n index += b.toString();\n }\n return {i: index};\n}\n\nfunction quadkeyToTile(index: QuadkeyTileIndex) {\n const quadkey = index.i;\n const tile = {x: 0, y: 0, z: quadkey.length};\n\n for (let i = tile.z; i > 0; i--) {\n const mask = 1 << (i - 1);\n const q = Number(quadkey[tile.z - i]);\n if (q === 1) tile.x |= mask;\n if (q === 2) tile.y |= mask;\n if (q === 3) {\n tile.x |= mask;\n tile.y |= mask;\n }\n }\n return tile;\n}\n\nexport default class QuadkeyTileset2D extends Tileset2D {\n // @ts-expect-error for spatial indices, TileSet2d should be parametrized by TileIndexT\n getTileIndices(opts): QuadkeyTileIndex[] {\n return super.getTileIndices(opts).map(tileToQuadkey);\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileId({i}: QuadkeyTileIndex) {\n return i;\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileMetadata(index: QuadkeyTileIndex) {\n return super.getTileMetadata(quadkeyToTile(index));\n }\n\n // @ts-expect-error TileIndex must be generic\n getTileZoom({i}: QuadkeyTileIndex) {\n return i.length;\n }\n\n // @ts-expect-error TileIndex must be generic\n getParentIndex(index: QuadkeyTileIndex) {\n const i = index.i.slice(0, -1);\n return {i};\n }\n}\n"],"file":"quadkey-tileset-2d.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/layers/quadkey-tile-layer.ts"],"names":["CompositeLayer","QuadkeyLayer","QuadkeyTileset2D","SpatialIndexTileLayer","renderSubLayers","props","data","length","getQuadkey","d","id","defaultProps","aggregationResLevel","QuadkeyTileLayer","initializeState","setState","tileJSON","updateState","changeFlags","dataChanged","tiles","renderLayers","state","maxZoom","parseInt","maxresolution","TilesetClass"],"mappings":";AAAA,SACEA,cADF,QAOO,eAPP;AAQA,SAAQC,YAAR,QAA8C,qBAA9C;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,OAAOC,qBAAP,MAAkC,4BAAlC;;AAEA,MAAMC,eAAe,GAAGC,KAAK,IAAI;AAC/B,QAAM;AAACC,IAAAA;AAAD,MAASD,KAAf;AACA,MAAI,CAACC,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B,OAAO,IAAP;AAC3B,SAAO,IAAIN,YAAJ,CAAiBI,KAAjB,EAAwB;AAACG,IAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACC;AAApB,GAAxB,CAAP;AACD,CAJD;;AAMA,MAAMC,YAAiD,GAAG;AACxDC,EAAAA,mBAAmB,EAAE;AADmC,CAA1D;AAaA,eAAe,MAAMC,gBAAN,SAA6Db,cAA7D,CAEb;AAAA;AAAA;;AAAA;AAAA;;AAQAc,EAAAA,eAAe,GAAS;AACtB,SAAKC,QAAL,CAAc;AAACT,MAAAA,IAAI,EAAE,IAAP;AAAaU,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACC,IAAAA;AAAD,GAAD,EAA8C;AACvD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAACb,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMW,QAAQ,GAAGV,IAAjB;AACAA,MAAAA,IAAI,GAAIU,QAAD,CAAkBI,KAAzB;AACA,WAAKL,QAAL,CAAc;AAACT,QAAAA,IAAD;AAAOU,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDK,EAAAA,YAAY,GAA8B;AACxC,UAAM;AAACf,MAAAA,IAAD;AAAOU,MAAAA;AAAP,QAAmB,KAAKM,KAA9B;AACA,UAAMC,OAAO,GAAGC,QAAQ,CAACR,QAAD,aAACA,QAAD,uBAACA,QAAQ,CAAES,aAAX,CAAxB;AACA,WAAO,CACL,IAAItB,qBAAJ,CAA0B,KAAKE,KAA/B,EAAsC;AACpCK,MAAAA,EAAE,+BAAwB,KAAKL,KAAL,CAAWK,EAAnC,CADkC;AAEpCJ,MAAAA,IAFoC;AAIpCoB,MAAAA,YAAY,EAAExB,gBAJsB;AAKpCE,MAAAA,eALoC;AAMpCmB,MAAAA;AANoC,KAAtC,CADK,CAAP;AAUD;;AAlCD;;gBAFmBV,gB,eAGA,kB;;gBAHAA,gB,kBAIGF,Y","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport {QuadkeyLayer, QuadkeyLayerProps} from '@deck.gl/geo-layers';\nimport QuadkeyTileset2D from './quadkey-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n if (!data || !data.length) return null;\n return new QuadkeyLayer(props, {getQuadkey: d => d.id});\n};\n\nconst defaultProps: DefaultProps<QuadkeyTileLayerProps> = {\n aggregationResLevel: 6\n};\n\n/** All properties supported by QuadkeyTileLayer. */\nexport type QuadkeyTileLayerProps<DataT = any> = _QuadkeyTileLayerProps<DataT> &\n CompositeLayerProps<DataT>;\n\n/** Properties added by QuadkeyTileLayer. */\ntype _QuadkeyTileLayerProps<DataT> = QuadkeyLayerProps<DataT> & {\n aggregationResLevel?: number;\n};\n\nexport default class QuadkeyTileLayer<DataT = any, ExtraProps = {}> extends CompositeLayer<\n ExtraProps & Required<_QuadkeyTileLayerProps<DataT>>\n> {\n static layerName = 'QuadkeyTileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\n initializeState(): void {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({changeFlags}: UpdateParameters<this>): void {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = (tileJSON as any).tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {data, tileJSON} = this.state;\n const maxZoom = parseInt(tileJSON?.maxresolution);\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `quadkey-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadkeyTileset2D as any,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n"],"file":"quadkey-tile-layer.js"}
|