@deck.gl/geo-layers 8.8.0-alpha.5 → 8.8.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.
Files changed (151) hide show
  1. package/dist/dist.dev.js +32562 -62596
  2. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
  3. package/dist/es5/great-circle-layer/great-circle-layer.js +12 -8
  4. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  5. package/dist/es5/h3-layers/h3-cluster-layer.js +5 -4
  6. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js +49 -34
  8. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  9. package/dist/es5/index.js.map +1 -1
  10. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
  11. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  12. package/dist/es5/mesh-layer/mesh-layer.js +22 -26
  13. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  14. package/dist/es5/mvt-layer/mvt-layer.js +6 -3
  15. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  16. package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
  17. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  18. package/dist/es5/s2-layer/s2-layer.js +4 -2
  19. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  20. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  21. package/dist/es5/tile-3d-layer/tile-3d-layer.js +31 -16
  22. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  23. package/dist/es5/tile-layer/tile-layer.js +4 -1
  24. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  25. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  26. package/dist/es5/trips-layer/trips-layer.js +9 -7
  27. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  28. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  29. package/dist/esm/great-circle-layer/great-circle-layer.js +7 -3
  30. package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
  31. package/dist/esm/h3-layers/h3-cluster-layer.js +6 -4
  32. package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
  33. package/dist/esm/h3-layers/h3-hexagon-layer.js +38 -24
  34. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
  37. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +1 -1
  38. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  39. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
  40. package/dist/esm/mesh-layer/mesh-layer.js +15 -17
  41. package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
  42. package/dist/esm/mvt-layer/mvt-layer.js +6 -3
  43. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  44. package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
  45. package/dist/esm/s2-layer/s2-geometry.js.map +1 -1
  46. package/dist/esm/s2-layer/s2-layer.js +5 -2
  47. package/dist/esm/s2-layer/s2-layer.js.map +1 -1
  48. package/dist/esm/s2-layer/s2-utils.js.map +1 -1
  49. package/dist/esm/tile-3d-layer/tile-3d-layer.js +21 -10
  50. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  51. package/dist/esm/tile-layer/tile-layer.js +4 -1
  52. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  53. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  54. package/dist/esm/trips-layer/trips-layer.js +8 -5
  55. package/dist/esm/trips-layer/trips-layer.js.map +1 -1
  56. package/dist.min.js +2 -2
  57. package/package.json +17 -15
  58. package/src/geo-cell-layer/GeoCellLayer.ts +4 -3
  59. package/src/great-circle-layer/great-circle-layer.ts +40 -0
  60. package/src/h3-layers/h3-cluster-layer.ts +60 -0
  61. package/src/h3-layers/{h3-hexagon-layer.js → h3-hexagon-layer.ts} +110 -42
  62. package/src/index.ts +5 -0
  63. package/src/mesh-layer/{mesh-layer-fragment.glsl.js → mesh-layer-fragment.glsl.ts} +0 -0
  64. package/src/mesh-layer/mesh-layer-vertex.glsl.ts +80 -0
  65. package/src/mesh-layer/{mesh-layer.js → mesh-layer.ts} +46 -13
  66. package/src/mvt-layer/mvt-layer.ts +5 -3
  67. package/src/quadkey-layer/quadkey-layer.ts +10 -9
  68. package/src/s2-layer/{s2-geometry.js → s2-geometry.ts} +17 -9
  69. package/src/s2-layer/s2-layer.ts +59 -0
  70. package/src/s2-layer/{s2-utils.js → s2-utils.ts} +14 -7
  71. package/src/tile-3d-layer/{tile-3d-layer.js → tile-3d-layer.ts} +107 -36
  72. package/src/tile-layer/tile-layer.ts +8 -7
  73. package/src/tile-layer/tileset-2d.ts +2 -2
  74. package/src/trips-layer/{trips-layer.js → trips-layer.ts} +41 -10
  75. package/typed/geo-cell-layer/GeoCellLayer.d.ts +12 -0
  76. package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -0
  77. package/typed/geo-cell-layer/GeoCellLayer.js +49 -0
  78. package/typed/great-circle-layer/great-circle-layer.d.ts +9 -0
  79. package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -0
  80. package/{src → typed}/great-circle-layer/great-circle-layer.js +5 -7
  81. package/typed/h3-layers/h3-cluster-layer.d.ts +22 -0
  82. package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -0
  83. package/typed/h3-layers/h3-cluster-layer.js +33 -0
  84. package/typed/h3-layers/h3-hexagon-layer.d.ts +70 -0
  85. package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -0
  86. package/typed/h3-layers/h3-hexagon-layer.js +251 -0
  87. package/typed/index.d.ts +23 -0
  88. package/typed/index.d.ts.map +1 -0
  89. package/typed/index.js +33 -0
  90. package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts +3 -0
  91. package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +1 -0
  92. package/typed/mesh-layer/mesh-layer-fragment.glsl.js +55 -0
  93. package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts +3 -0
  94. package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -0
  95. package/{src → typed}/mesh-layer/mesh-layer-vertex.glsl.js +0 -0
  96. package/typed/mesh-layer/mesh-layer.d.ts +37 -0
  97. package/typed/mesh-layer/mesh-layer.d.ts.map +1 -0
  98. package/typed/mesh-layer/mesh-layer.js +110 -0
  99. package/typed/mvt-layer/coordinate-transform.d.ts +4 -0
  100. package/typed/mvt-layer/coordinate-transform.d.ts.map +1 -0
  101. package/typed/mvt-layer/coordinate-transform.js +41 -0
  102. package/typed/mvt-layer/find-index-binary.d.ts +12 -0
  103. package/typed/mvt-layer/find-index-binary.d.ts.map +1 -0
  104. package/typed/mvt-layer/find-index-binary.js +96 -0
  105. package/typed/mvt-layer/mvt-layer.d.ts +70 -0
  106. package/typed/mvt-layer/mvt-layer.d.ts.map +1 -0
  107. package/typed/mvt-layer/mvt-layer.js +297 -0
  108. package/typed/package.json +6 -0
  109. package/typed/quadkey-layer/quadkey-layer.d.ts +20 -0
  110. package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -0
  111. package/typed/quadkey-layer/quadkey-layer.js +18 -0
  112. package/typed/quadkey-layer/quadkey-utils.d.ts +3 -0
  113. package/typed/quadkey-layer/quadkey-utils.d.ts.map +1 -0
  114. package/typed/quadkey-layer/quadkey-utils.js +26 -0
  115. package/typed/s2-layer/s2-geometry.d.ts +11 -0
  116. package/typed/s2-layer/s2-geometry.d.ts.map +1 -0
  117. package/typed/s2-layer/s2-geometry.js +123 -0
  118. package/typed/s2-layer/s2-layer.d.ts +20 -0
  119. package/typed/s2-layer/s2-layer.d.ts.map +1 -0
  120. package/{src → typed}/s2-layer/s2-layer.js +11 -16
  121. package/typed/s2-layer/s2-utils.d.ts +9 -0
  122. package/typed/s2-layer/s2-utils.d.ts.map +1 -0
  123. package/typed/s2-layer/s2-utils.js +88 -0
  124. package/typed/terrain-layer/terrain-layer.d.ts +28 -0
  125. package/typed/terrain-layer/terrain-layer.d.ts.map +1 -0
  126. package/typed/terrain-layer/terrain-layer.js +226 -0
  127. package/typed/tile-3d-layer/tile-3d-layer.d.ts +60 -0
  128. package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -0
  129. package/typed/tile-3d-layer/tile-3d-layer.js +294 -0
  130. package/typed/tile-layer/tile-2d-header.d.ts +40 -0
  131. package/typed/tile-layer/tile-2d-header.d.ts.map +1 -0
  132. package/typed/tile-layer/tile-2d-header.js +113 -0
  133. package/typed/tile-layer/tile-2d-traversal.d.ts +4 -0
  134. package/typed/tile-layer/tile-2d-traversal.d.ts.map +1 -0
  135. package/typed/tile-layer/tile-2d-traversal.js +181 -0
  136. package/typed/tile-layer/tile-layer.d.ts +118 -0
  137. package/typed/tile-layer/tile-layer.d.ts.map +1 -0
  138. package/typed/tile-layer/tile-layer.js +192 -0
  139. package/typed/tile-layer/tileset-2d.d.ts +88 -0
  140. package/typed/tile-layer/tileset-2d.d.ts.map +1 -0
  141. package/typed/tile-layer/tileset-2d.js +399 -0
  142. package/typed/tile-layer/types.d.ts +29 -0
  143. package/typed/tile-layer/types.d.ts.map +1 -0
  144. package/typed/tile-layer/types.js +1 -0
  145. package/typed/tile-layer/utils.d.ts +37 -0
  146. package/typed/tile-layer/utils.d.ts.map +1 -0
  147. package/typed/tile-layer/utils.js +197 -0
  148. package/typed/trips-layer/trips-layer.d.ts +36 -0
  149. package/typed/trips-layer/trips-layer.d.ts.map +1 -0
  150. package/typed/trips-layer/trips-layer.js +92 -0
  151. package/src/h3-layers/h3-cluster-layer.js +0 -43
@@ -0,0 +1,118 @@
1
+ import { CompositeLayer, CompositeLayerProps, Layer, LayerProps, UpdateParameters, PickingInfo, GetPickingInfoParams } from '@deck.gl/core/typed';
2
+ import { LayersList } from 'modules/core/src/lib/layer-manager';
3
+ import Tile2DHeader from './tile-2d-header';
4
+ import Tileset2D, { RefinementStrategy, Tileset2DProps } from './tileset-2d';
5
+ import { TileLoadProps, ZRange } from './types';
6
+ /** All props supported by the TileLayer */
7
+ export declare type TileLayerProps<DataT = any> = CompositeLayerProps<any> & _TileLayerProps<DataT>;
8
+ /** Props added by the TileLayer */
9
+ declare type _TileLayerProps<DataT> = {
10
+ /**
11
+ * Optionally implement a custom indexing scheme.
12
+ */
13
+ TilesetClass: typeof Tileset2D;
14
+ /**
15
+ * Renders one or an array of Layer instances.
16
+ */
17
+ renderSubLayers?: (props: TileLayerProps<DataT> & {
18
+ id: string;
19
+ data: DataT;
20
+ _offset: number;
21
+ tile: Tile2DHeader<DataT>;
22
+ }) => Layer | null | LayersList;
23
+ /**
24
+ * If supplied, `getTileData` is called to retrieve the data of each tile.
25
+ */
26
+ getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;
27
+ /** Called when all tiles in the current viewport are loaded. */
28
+ onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;
29
+ /** Called when a tile successfully loads. */
30
+ onTileLoad?: (tile: Tile2DHeader<DataT>) => void;
31
+ /** Called when a tile is cleared from cache. */
32
+ onTileUnload?: (tile: Tile2DHeader<DataT>) => void;
33
+ /** Called when a tile failed to load. */
34
+ onTileError?: (err: any) => void;
35
+ /** The bounding box of the layer's data. */
36
+ extent?: number[] | null;
37
+ /** The pixel dimension of the tiles, usually a power of 2. */
38
+ tileSize?: number;
39
+ /** The max zoom level of the layer's data.
40
+ * @default null
41
+ */
42
+ maxZoom?: number | null;
43
+ /** The min zoom level of the layer's data.
44
+ * @default 0
45
+ */
46
+ minZoom?: number | null;
47
+ /** The maximum number of tiles that can be cached. */
48
+ maxCacheSize?: number | null;
49
+ /**
50
+ * The maximum memory used for caching tiles.
51
+ *
52
+ * @default null
53
+ */
54
+ maxCacheByteSize?: number | null;
55
+ /**
56
+ * How the tile layer refines the visibility of tiles.
57
+ *
58
+ * @default 'best-available'
59
+ */
60
+ refinementStrategy?: RefinementStrategy;
61
+ /** Range of minimum and maximum heights in the tile. */
62
+ zRange?: ZRange | null;
63
+ /**
64
+ * The maximum number of concurrent getTileData calls.
65
+ *
66
+ * @default 6
67
+ */
68
+ maxRequests?: number;
69
+ /**
70
+ * This offset changes the zoom level at which the tiles are fetched.
71
+ *
72
+ * Needs to be an integer.
73
+ *
74
+ * @default 0
75
+ */
76
+ zoomOffset?: number;
77
+ };
78
+ export declare type TiledPickingInfo<DataT = any> = PickingInfo & {
79
+ tile?: Tile2DHeader<DataT>;
80
+ };
81
+ /**
82
+ * The TileLayer is a composite layer that makes it possible to visualize very large datasets.
83
+ *
84
+ * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.
85
+ */
86
+ export default class TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<ExtraPropsT & Required<_TileLayerProps<DataT>>> {
87
+ static defaultProps: any;
88
+ static layerName: string;
89
+ initializeState(): void;
90
+ finalizeState(): void;
91
+ get isLoaded(): boolean;
92
+ shouldUpdateState({ changeFlags }: {
93
+ changeFlags: any;
94
+ }): boolean;
95
+ updateState({ changeFlags }: UpdateParameters<this>): void;
96
+ _getTilesetOptions(): Tileset2DProps;
97
+ private _updateTileset;
98
+ _onViewportLoad(): void;
99
+ _onTileLoad(tile: Tile2DHeader<DataT>): void;
100
+ _onTileError(error: any, tile: Tile2DHeader<DataT>): void;
101
+ _onTileUnload(tile: Tile2DHeader<DataT>): void;
102
+ getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null;
103
+ renderSubLayers(props: TileLayer['props'] & {
104
+ id: string;
105
+ data: DataT;
106
+ _offset: number;
107
+ tile: Tile2DHeader<DataT>;
108
+ }): Layer | null | LayersList;
109
+ getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null;
110
+ getPickingInfo({ info, sourceLayer }: GetPickingInfoParams): TiledPickingInfo<DataT>;
111
+ protected _updateAutoHighlight(info: PickingInfo): void;
112
+ renderLayers(): Layer | null | LayersList;
113
+ filterSubLayer({ layer }: {
114
+ layer: any;
115
+ }): any;
116
+ }
117
+ export {};
118
+ //# sourceMappingURL=tile-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-layer.d.ts","sourceRoot":"","sources":["../../src/tile-layer/tile-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ import { CompositeLayer, _flatten as flatten } from '@deck.gl/core';
2
+ import { GeoJsonLayer } from '@deck.gl/layers';
3
+ import Tileset2D, { STRATEGY_DEFAULT } from './tileset-2d';
4
+ import { urlType, getURLFromTemplate } from './utils';
5
+ const defaultProps = {
6
+ TilesetClass: Tileset2D,
7
+ data: [],
8
+ dataComparator: urlType.equals,
9
+ renderSubLayers: { type: 'function', value: props => new GeoJsonLayer(props), compare: false },
10
+ getTileData: { type: 'function', optional: true, value: null, compare: false },
11
+ // TODO - change to onViewportLoad to align with Tile3DLayer
12
+ onViewportLoad: { type: 'function', optional: true, value: null, compare: false },
13
+ onTileLoad: { type: 'function', value: tile => { }, compare: false },
14
+ onTileUnload: { type: 'function', value: tile => { }, compare: false },
15
+ // eslint-disable-next-line
16
+ onTileError: { type: 'function', value: err => console.error(err), compare: false },
17
+ extent: { type: 'array', optional: true, value: null, compare: true },
18
+ tileSize: 512,
19
+ maxZoom: null,
20
+ minZoom: 0,
21
+ maxCacheSize: null,
22
+ maxCacheByteSize: null,
23
+ refinementStrategy: STRATEGY_DEFAULT,
24
+ zRange: null,
25
+ maxRequests: 6,
26
+ zoomOffset: 0
27
+ };
28
+ /**
29
+ * The TileLayer is a composite layer that makes it possible to visualize very large datasets.
30
+ *
31
+ * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.
32
+ */
33
+ export default class TileLayer extends CompositeLayer {
34
+ initializeState() {
35
+ this.state = {
36
+ tileset: null,
37
+ isLoaded: false
38
+ };
39
+ }
40
+ finalizeState() {
41
+ this.state?.tileset?.finalize();
42
+ }
43
+ get isLoaded() {
44
+ return this.state?.tileset?.selectedTiles.every(tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded));
45
+ }
46
+ shouldUpdateState({ changeFlags }) {
47
+ return changeFlags.somethingChanged;
48
+ }
49
+ updateState({ changeFlags }) {
50
+ let { tileset } = this.state;
51
+ const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;
52
+ const dataChanged = changeFlags.dataChanged ||
53
+ (changeFlags.updateTriggersChanged &&
54
+ (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));
55
+ if (!tileset) {
56
+ tileset = new this.props.TilesetClass(this._getTilesetOptions());
57
+ this.setState({ tileset });
58
+ }
59
+ else if (propsChanged) {
60
+ tileset.setOptions(this._getTilesetOptions());
61
+ if (dataChanged) {
62
+ // reload all tiles
63
+ // use cached layers until new content is loaded
64
+ tileset.reloadAll();
65
+ }
66
+ else {
67
+ // some render options changed, regenerate sub layers now
68
+ this.state.tileset.tiles.forEach(tile => {
69
+ tile.layers = null;
70
+ });
71
+ }
72
+ }
73
+ this._updateTileset();
74
+ }
75
+ _getTilesetOptions() {
76
+ const { tileSize, maxCacheSize, maxCacheByteSize, refinementStrategy, extent, maxZoom, minZoom, maxRequests, zoomOffset } = this.props;
77
+ return {
78
+ maxCacheSize,
79
+ maxCacheByteSize,
80
+ maxZoom,
81
+ minZoom,
82
+ tileSize,
83
+ refinementStrategy,
84
+ extent,
85
+ maxRequests,
86
+ zoomOffset,
87
+ getTileData: this.getTileData.bind(this),
88
+ onTileLoad: this._onTileLoad.bind(this),
89
+ onTileError: this._onTileError.bind(this),
90
+ onTileUnload: this._onTileUnload.bind(this)
91
+ };
92
+ }
93
+ _updateTileset() {
94
+ const { tileset } = this.state;
95
+ const { zRange, modelMatrix } = this.props;
96
+ const frameNumber = tileset.update(this.context.viewport, { zRange, modelMatrix });
97
+ const { isLoaded } = tileset;
98
+ const loadingStateChanged = this.state.isLoaded !== isLoaded;
99
+ const tilesetChanged = this.state.frameNumber !== frameNumber;
100
+ if (isLoaded && (loadingStateChanged || tilesetChanged)) {
101
+ this._onViewportLoad();
102
+ }
103
+ if (tilesetChanged) {
104
+ // Save the tileset frame number - trigger a rerender
105
+ this.setState({ frameNumber });
106
+ }
107
+ // Save the loaded state - should not trigger a rerender
108
+ this.state.isLoaded = isLoaded;
109
+ }
110
+ _onViewportLoad() {
111
+ const { tileset } = this.state;
112
+ const { onViewportLoad } = this.props;
113
+ if (onViewportLoad) {
114
+ onViewportLoad(tileset.selectedTiles);
115
+ }
116
+ }
117
+ _onTileLoad(tile) {
118
+ this.props.onTileLoad(tile);
119
+ tile.layers = null;
120
+ this.setNeedsUpdate();
121
+ }
122
+ _onTileError(error, tile) {
123
+ this.props.onTileError(error);
124
+ tile.layers = null;
125
+ this.setNeedsUpdate();
126
+ }
127
+ _onTileUnload(tile) {
128
+ this.props.onTileUnload(tile);
129
+ }
130
+ // Methods for subclass to override
131
+ getTileData(tile) {
132
+ const { data, getTileData, fetch } = this.props;
133
+ const { signal } = tile;
134
+ tile.url =
135
+ typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;
136
+ if (getTileData) {
137
+ return getTileData(tile);
138
+ }
139
+ if (fetch && tile.url) {
140
+ return fetch(tile.url, { propName: 'data', layer: this, signal });
141
+ }
142
+ return null;
143
+ }
144
+ renderSubLayers(props) {
145
+ return this.props.renderSubLayers(props);
146
+ }
147
+ getSubLayerPropsByTile(tile) {
148
+ return null;
149
+ }
150
+ getPickingInfo({ info, sourceLayer }) {
151
+ info.tile = sourceLayer.props.tile;
152
+ return info;
153
+ }
154
+ _updateAutoHighlight(info) {
155
+ if (info.sourceLayer) {
156
+ info.sourceLayer.updateAutoHighlight(info);
157
+ }
158
+ }
159
+ renderLayers() {
160
+ return this.state.tileset.tiles.map((tile) => {
161
+ const subLayerProps = this.getSubLayerPropsByTile(tile);
162
+ // cache the rendered layer in the tile
163
+ if (!tile.isLoaded && !tile.content) {
164
+ // nothing to show
165
+ }
166
+ else if (!tile.layers) {
167
+ const layers = this.renderSubLayers({
168
+ ...this.props,
169
+ id: `${this.id}-${tile.id}`,
170
+ data: tile.content,
171
+ _offset: 0,
172
+ tile
173
+ });
174
+ tile.layers = flatten(layers, Boolean).map(layer => layer.clone({
175
+ tile,
176
+ ...subLayerProps
177
+ }));
178
+ }
179
+ else if (subLayerProps &&
180
+ tile.layers[0] &&
181
+ Object.keys(subLayerProps).some(propName => tile.layers[0].props[propName] !== subLayerProps[propName])) {
182
+ tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));
183
+ }
184
+ return tile.layers;
185
+ });
186
+ }
187
+ filterSubLayer({ layer }) {
188
+ return layer.props.tile.isVisible;
189
+ }
190
+ }
191
+ TileLayer.defaultProps = defaultProps;
192
+ TileLayer.layerName = 'TileLayer';
@@ -0,0 +1,88 @@
1
+ import Tile2DHeader from './tile-2d-header';
2
+ import { Matrix4 } from '@math.gl/core';
3
+ import { Viewport } from '@deck.gl/core/typed';
4
+ import { TileIndex, ZRange } from './types';
5
+ import { TileLayerProps } from './tile-layer';
6
+ export declare const STRATEGY_NEVER = "never";
7
+ export declare const STRATEGY_REPLACE = "no-overlap";
8
+ export declare const STRATEGY_DEFAULT = "best-available";
9
+ export declare type RefinementStrategyFunction = (tiles: Tile2DHeader[]) => void;
10
+ export declare type RefinementStrategy = typeof STRATEGY_NEVER | typeof STRATEGY_REPLACE | typeof STRATEGY_DEFAULT | RefinementStrategyFunction;
11
+ export declare type Tileset2DProps = Pick<Required<TileLayerProps>, 'tileSize' | 'maxCacheSize' | 'maxCacheByteSize' | 'refinementStrategy' | 'extent' | 'maxZoom' | 'minZoom' | 'maxRequests' | 'zoomOffset'> & {
12
+ getTileData: NonNullable<TileLayerProps['getTileData']>;
13
+ onTileLoad: (tile: Tile2DHeader) => void;
14
+ onTileUnload: (tile: Tile2DHeader) => void;
15
+ onTileError: (error: any, tile: Tile2DHeader) => void;
16
+ };
17
+ /**
18
+ * Manages loading and purging of tile data. This class caches recently visited tiles
19
+ * and only creates new tiles if they are present.
20
+ */
21
+ export default class Tileset2D {
22
+ private opts;
23
+ private _requestScheduler;
24
+ private _cache;
25
+ private _dirty;
26
+ private _tiles;
27
+ private _cacheByteSize;
28
+ private _viewport;
29
+ private _selectedTiles;
30
+ private _frameNumber;
31
+ private _modelMatrix;
32
+ private _modelMatrixInverse;
33
+ private _maxZoom?;
34
+ private _minZoom?;
35
+ private onTileLoad;
36
+ /**
37
+ * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.
38
+ * Cache size defaults to 5 * number of tiles in the current viewport
39
+ */
40
+ constructor(opts: Tileset2DProps);
41
+ get tiles(): Tile2DHeader<any>[];
42
+ get selectedTiles(): Tile2DHeader[] | null;
43
+ get isLoaded(): boolean;
44
+ get needsReload(): boolean;
45
+ setOptions(opts: Tileset2DProps): void;
46
+ finalize(): void;
47
+ reloadAll(): void;
48
+ /**
49
+ * Update the cache with the given viewport and model matrix and triggers callback onUpdate.
50
+ */
51
+ update(viewport: Viewport, { zRange, modelMatrix }?: {
52
+ zRange?: ZRange;
53
+ modelMatrix?: Matrix4;
54
+ }): number;
55
+ /** Returns array of tile indices in the current viewport */
56
+ getTileIndices({ viewport, maxZoom, minZoom, zRange, modelMatrix, modelMatrixInverse }: {
57
+ viewport: Viewport;
58
+ maxZoom?: number;
59
+ minZoom?: number;
60
+ zRange: ZRange | undefined;
61
+ tileSize?: number;
62
+ modelMatrix?: Matrix4;
63
+ modelMatrixInverse?: Matrix4;
64
+ zoomOffset?: number;
65
+ }): TileIndex[];
66
+ /** Returns unique string key for a tile index */
67
+ getTileId(index: TileIndex): string;
68
+ /** Returns a zoom level for a tile index */
69
+ getTileZoom(index: TileIndex): number;
70
+ /** Returns additional metadata to add to tile, bbox by default */
71
+ getTileMetadata(index: TileIndex): Record<string, any>;
72
+ /** Returns index of the parent tile */
73
+ getParentIndex(index: TileIndex): {
74
+ x: number;
75
+ y: number;
76
+ z: number;
77
+ };
78
+ private updateTileStates;
79
+ _pruneRequests(): void;
80
+ _rebuildTree(): void;
81
+ /**
82
+ * Clear tiles that are not visible when the cache is full
83
+ */
84
+ private _resizeCache;
85
+ private _getTile;
86
+ _getNearestAncestor(tile: Tile2DHeader): Tile2DHeader | null;
87
+ }
88
+ //# sourceMappingURL=tileset-2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-2d.d.ts","sourceRoot":"","sources":["../../src/tile-layer/tileset-2d.ts"],"names":[],"mappings":"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"}