@deck.gl/carto 8.8.0-alpha.3 → 8.8.0-alpha.6

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 (97) hide show
  1. package/dist/dist.dev.js +383 -247
  2. package/dist/es5/api/layer-map.js +7 -5
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/layers/carto-layer.js +3 -1
  5. package/dist/es5/layers/carto-layer.js.map +1 -1
  6. package/dist/es5/layers/carto-tile-layer.js +17 -12
  7. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  8. package/dist/es5/layers/h3-tile-layer.js +34 -13
  9. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  10. package/dist/es5/layers/h3-tileset-2d.js +21 -11
  11. package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
  12. package/dist/es5/layers/quadkey-tile-layer.js +31 -14
  13. package/dist/es5/layers/quadkey-tile-layer.js.map +1 -1
  14. package/dist/es5/layers/quadkey-tileset-2d.js.map +1 -1
  15. package/dist/es5/layers/schema/carto-tile.js +261 -188
  16. package/dist/es5/layers/schema/carto-tile.js.map +1 -1
  17. package/dist/es5/layers/spatial-index-tile-layer.js +92 -0
  18. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -0
  19. package/dist/esm/api/layer-map.js +8 -6
  20. package/dist/esm/api/layer-map.js.map +1 -1
  21. package/dist/esm/layers/carto-layer.js +3 -1
  22. package/dist/esm/layers/carto-layer.js.map +1 -1
  23. package/dist/esm/layers/carto-tile-layer.js +20 -16
  24. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  25. package/dist/esm/layers/h3-tile-layer.js +24 -10
  26. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  27. package/dist/esm/layers/h3-tileset-2d.js +27 -12
  28. package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
  29. package/dist/esm/layers/quadkey-tile-layer.js +22 -13
  30. package/dist/esm/layers/quadkey-tile-layer.js.map +1 -1
  31. package/dist/esm/layers/quadkey-tileset-2d.js.map +1 -1
  32. package/dist/esm/layers/schema/carto-tile.js +174 -189
  33. package/dist/esm/layers/schema/carto-tile.js.map +1 -1
  34. package/dist/esm/layers/spatial-index-tile-layer.js +57 -0
  35. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -0
  36. package/dist.min.js +4 -4
  37. package/package.json +7 -4
  38. package/src/api/layer-map.ts +16 -7
  39. package/src/layers/carto-layer.ts +18 -5
  40. package/src/layers/{carto-tile-layer.js → carto-tile-layer.ts} +63 -26
  41. package/src/layers/h3-tile-layer.ts +78 -0
  42. package/src/layers/h3-tileset-2d.ts +118 -0
  43. package/src/layers/quadkey-tile-layer.ts +68 -0
  44. package/src/layers/{quadkey-tileset-2d.js → quadkey-tileset-2d.ts} +10 -5
  45. package/src/layers/schema/carto-tile.ts +221 -0
  46. package/src/layers/spatial-index-tile-layer.ts +49 -0
  47. package/typed/api/index.d.ts +4 -0
  48. package/typed/api/index.d.ts.map +1 -0
  49. package/typed/api/layer-map.d.ts +54 -0
  50. package/typed/api/layer-map.d.ts.map +1 -0
  51. package/typed/api/maps-api-common.d.ts +65 -0
  52. package/typed/api/maps-api-common.d.ts.map +1 -0
  53. package/typed/api/maps-client.d.ts +18 -0
  54. package/typed/api/maps-client.d.ts.map +1 -0
  55. package/typed/api/maps-v3-client.d.ts +45 -0
  56. package/typed/api/maps-v3-client.d.ts.map +1 -0
  57. package/typed/api/parseMap.d.ts +11 -0
  58. package/typed/api/parseMap.d.ts.map +1 -0
  59. package/typed/basemap.d.ts +10 -0
  60. package/typed/basemap.d.ts.map +1 -0
  61. package/typed/config.d.ts +26 -0
  62. package/typed/config.d.ts.map +1 -0
  63. package/typed/index.d.ts +12 -0
  64. package/typed/index.d.ts.map +1 -0
  65. package/typed/layers/carto-layer.d.ts +98 -0
  66. package/typed/layers/carto-layer.d.ts.map +1 -0
  67. package/typed/layers/carto-tile-layer.d.ts +63 -0
  68. package/typed/layers/carto-tile-layer.d.ts.map +1 -0
  69. package/typed/layers/h3-tile-layer.d.ts +23 -0
  70. package/typed/layers/h3-tile-layer.d.ts.map +1 -0
  71. package/typed/layers/h3-tileset-2d.d.ts +18 -0
  72. package/typed/layers/h3-tileset-2d.d.ts.map +1 -0
  73. package/typed/layers/quadkey-tile-layer.d.ts +23 -0
  74. package/typed/layers/quadkey-tile-layer.d.ts.map +1 -0
  75. package/typed/layers/quadkey-tileset-2d.d.ts +15 -0
  76. package/typed/layers/quadkey-tileset-2d.d.ts.map +1 -0
  77. package/typed/layers/schema/carto-tile.d.ts +44 -0
  78. package/typed/layers/schema/carto-tile.d.ts.map +1 -0
  79. package/typed/layers/spatial-index-tile-layer.d.ts +11 -0
  80. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -0
  81. package/typed/package.json +6 -0
  82. package/typed/style/color-bins-style.d.ts +9 -0
  83. package/typed/style/color-bins-style.d.ts.map +1 -0
  84. package/typed/style/color-categories-style.d.ts +10 -0
  85. package/typed/style/color-categories-style.d.ts.map +1 -0
  86. package/typed/style/color-continuous-style.d.ts +9 -0
  87. package/typed/style/color-continuous-style.d.ts.map +1 -0
  88. package/typed/style/palette.d.ts +7 -0
  89. package/typed/style/palette.d.ts.map +1 -0
  90. package/typed/style/utils.d.ts +8 -0
  91. package/typed/style/utils.d.ts.map +1 -0
  92. package/typed/utils.d.ts +2 -0
  93. package/typed/utils.d.ts.map +1 -0
  94. package/src/layers/h3-tile-layer.js +0 -44
  95. package/src/layers/h3-tileset-2d.js +0 -82
  96. package/src/layers/quadkey-tile-layer.js +0 -42
  97. package/src/layers/schema/carto-tile.js +0 -195
@@ -1,6 +1,8 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { CompositeLayer } from '@deck.gl/core';
2
- import { H3HexagonLayer, TileLayer } from '@deck.gl/geo-layers';
3
+ import { H3HexagonLayer } from '@deck.gl/geo-layers';
3
4
  import H3Tileset2D from './h3-tileset-2d';
5
+ import SpatialIndexTileLayer from './spatial-index-tile-layer';
4
6
 
5
7
  const renderSubLayers = props => {
6
8
  const {
@@ -11,12 +13,22 @@ const renderSubLayers = props => {
11
13
  } = props.tile;
12
14
  if (!data || !data.length) return null;
13
15
  return new H3HexagonLayer(props, {
16
+ getHexagon: d => d.id,
14
17
  centerHexagon: index,
15
18
  highPrecision: true
16
19
  });
17
20
  };
18
21
 
22
+ const defaultProps = {
23
+ aggregationResLevel: 4
24
+ };
19
25
  export default class H3TileLayer extends CompositeLayer {
26
+ constructor(...args) {
27
+ super(...args);
28
+
29
+ _defineProperty(this, "state", void 0);
30
+ }
31
+
20
32
  initializeState() {
21
33
  this.setState({
22
34
  data: null,
@@ -25,9 +37,6 @@ export default class H3TileLayer extends CompositeLayer {
25
37
  }
26
38
 
27
39
  updateState({
28
- props,
29
- oldProps,
30
- context,
31
40
  changeFlags
32
41
  }) {
33
42
  if (changeFlags.dataChanged) {
@@ -45,17 +54,22 @@ export default class H3TileLayer extends CompositeLayer {
45
54
 
46
55
  renderLayers() {
47
56
  const {
48
- data
57
+ data,
58
+ tileJSON
49
59
  } = this.state;
50
- return [new TileLayer(this.props, {
51
- id: 'h3-tile-layer',
60
+ const maxZoom = parseInt(tileJSON.maxresolution);
61
+ return [new SpatialIndexTileLayer(this.props, {
62
+ id: "h3-tile-layer-".concat(this.props.id),
52
63
  data,
53
- getHexagon: d => d.id,
54
64
  TilesetClass: H3Tileset2D,
55
- renderSubLayers
65
+ renderSubLayers,
66
+ maxZoom
56
67
  })];
57
68
  }
58
69
 
59
70
  }
60
- H3TileLayer.layerName = 'H3TileLayer';
71
+
72
+ _defineProperty(H3TileLayer, "layerName", 'H3TileLayer');
73
+
74
+ _defineProperty(H3TileLayer, "defaultProps", defaultProps);
61
75
  //# sourceMappingURL=h3-tile-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/h3-tile-layer.js"],"names":["CompositeLayer","H3HexagonLayer","TileLayer","H3Tileset2D","renderSubLayers","props","data","index","tile","length","centerHexagon","highPrecision","H3TileLayer","initializeState","setState","tileJSON","updateState","oldProps","context","changeFlags","dataChanged","tiles","renderLayers","state","id","getHexagon","d","TilesetClass","layerName"],"mappings":"AAAA,SAAQA,cAAR,QAA6B,eAA7B;AACA,SAAQC,cAAR,EAAwBC,SAAxB,QAAwC,qBAAxC;AACA,OAAOC,WAAP,MAAwB,iBAAxB;;AAEA,MAAMC,eAAe,GAAGC,KAAK,IAAI;AAC/B,QAAM;AAACC,IAAAA;AAAD,MAASD,KAAf;AACA,QAAM;AAACE,IAAAA;AAAD,MAAUF,KAAK,CAACG,IAAtB;AACA,MAAI,CAACF,IAAD,IAAS,CAACA,IAAI,CAACG,MAAnB,EAA2B,OAAO,IAAP;AAE3B,SAAO,IAAIR,cAAJ,CAAmBI,KAAnB,EAA0B;AAC/BK,IAAAA,aAAa,EAAEH,KADgB;AAE/BI,IAAAA,aAAa,EAAE;AAFgB,GAA1B,CAAP;AAID,CATD;;AAWA,eAAe,MAAMC,WAAN,SAA0BZ,cAA1B,CAAyC;AACtDa,EAAAA,eAAe,GAAG;AAChB,SAAKC,QAAL,CAAc;AAACR,MAAAA,IAAI,EAAE,IAAP;AAAaS,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACX,IAAAA,KAAD;AAAQY,IAAAA,QAAR;AAAkBC,IAAAA,OAAlB;AAA2BC,IAAAA;AAA3B,GAAD,EAA0C;AACnD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAACd,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMU,QAAQ,GAAGT,IAAjB;AACAA,MAAAA,IAAI,GAAGS,QAAQ,CAACM,KAAhB;AACA,WAAKP,QAAL,CAAc;AAACR,QAAAA,IAAD;AAAOS,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDO,EAAAA,YAAY,GAAG;AACb,UAAM;AAAChB,MAAAA;AAAD,QAAS,KAAKiB,KAApB;AACA,WAAO,CACL,IAAIrB,SAAJ,CAAc,KAAKG,KAAnB,EAA0B;AACxBmB,MAAAA,EAAE,EAAE,eADoB;AAExBlB,MAAAA,IAFwB;AAGxBmB,MAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACF,EAHK;AAIxBG,MAAAA,YAAY,EAAExB,WAJU;AAKxBC,MAAAA;AALwB,KAA1B,CADK,CAAP;AASD;;AAzBqD;AA4BxDQ,WAAW,CAACgB,SAAZ,GAAwB,aAAxB","sourcesContent":["import {CompositeLayer} from '@deck.gl/core';\nimport {H3HexagonLayer, TileLayer} from '@deck.gl/geo-layers';\nimport H3Tileset2D from './h3-tileset-2d';\n\nconst renderSubLayers = props => {\n const {data} = props;\n const {index} = props.tile;\n if (!data || !data.length) return null;\n\n return new H3HexagonLayer(props, {\n centerHexagon: index,\n highPrecision: true\n });\n};\n\nexport default class H3TileLayer extends CompositeLayer {\n initializeState() {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = tileJSON.tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers() {\n const {data} = this.state;\n return [\n new TileLayer(this.props, {\n id: 'h3-tile-layer',\n data,\n getHexagon: d => d.id,\n TilesetClass: H3Tileset2D,\n renderSubLayers\n })\n ];\n }\n}\n\nH3TileLayer.layerName = 'H3TileLayer';\n"],"file":"h3-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/h3-tile-layer.ts"],"names":["CompositeLayer","H3HexagonLayer","H3Tileset2D","SpatialIndexTileLayer","renderSubLayers","props","data","index","tile","length","getHexagon","d","id","centerHexagon","highPrecision","defaultProps","aggregationResLevel","H3TileLayer","initializeState","setState","tileJSON","updateState","changeFlags","dataChanged","tiles","renderLayers","state","maxZoom","parseInt","maxresolution","TilesetClass"],"mappings":";AAAA,SACEA,cADF,QAMO,eANP;AAOA,SAAQC,cAAR,QAA6B,qBAA7B;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,qBAAP,MAAkC,4BAAlC;;AAEA,MAAMC,eAAe,GAAGC,KAAK,IAAI;AAC/B,QAAM;AAACC,IAAAA;AAAD,MAASD,KAAf;AACA,QAAM;AAACE,IAAAA;AAAD,MAAUF,KAAK,CAACG,IAAtB;AACA,MAAI,CAACF,IAAD,IAAS,CAACA,IAAI,CAACG,MAAnB,EAA2B,OAAO,IAAP;AAE3B,SAAO,IAAIR,cAAJ,CAAmBI,KAAnB,EAA0B;AAC/BK,IAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACC,EADY;AAE/BC,IAAAA,aAAa,EAAEN,KAFgB;AAG/BO,IAAAA,aAAa,EAAE;AAHgB,GAA1B,CAAP;AAKD,CAVD;;AAYA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,mBAAmB,EAAE;AADF,CAArB;AAgBA,eAAe,MAAMC,WAAN,SAAyDjB,cAAzD,CAEb;AAAA;AAAA;;AAAA;AAAA;;AASAkB,EAAAA,eAAe,GAAS;AACtB,SAAKC,QAAL,CAAc;AAACb,MAAAA,IAAI,EAAE,IAAP;AAAac,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACC,IAAAA;AAAD,GAAD,EAA8C;AACvD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAACjB,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMe,QAAQ,GAAGd,IAAjB;AACAA,MAAAA,IAAI,GAAIc,QAAD,CAAkBI,KAAzB;AACA,WAAKL,QAAL,CAAc;AAACb,QAAAA,IAAD;AAAOc,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDK,EAAAA,YAAY,GAA8B;AACxC,UAAM;AAACnB,MAAAA,IAAD;AAAOc,MAAAA;AAAP,QAAmB,KAAKM,KAA9B;AACA,UAAMC,OAAO,GAAGC,QAAQ,CAACR,QAAQ,CAACS,aAAV,CAAxB;AACA,WAAO,CACL,IAAI1B,qBAAJ,CAA0B,KAAKE,KAA/B,EAAsC;AACpCO,MAAAA,EAAE,0BAAmB,KAAKP,KAAL,CAAWO,EAA9B,CADkC;AAEpCN,MAAAA,IAFoC;AAIpCwB,MAAAA,YAAY,EAAE5B,WAJsB;AAKpCE,MAAAA,eALoC;AAMpCuB,MAAAA;AANoC,KAAtC,CADK,CAAP;AAUD;;AAnCD;;gBAFmBV,W,eAGA,a;;gBAHAA,W,kBAIGF,Y","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters\n} from '@deck.gl/core';\nimport {H3HexagonLayer} from '@deck.gl/geo-layers';\nimport H3Tileset2D from './h3-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n const {index} = props.tile;\n if (!data || !data.length) return null;\n\n return new H3HexagonLayer(props, {\n getHexagon: d => d.id,\n centerHexagon: index,\n highPrecision: true\n });\n};\n\nconst defaultProps = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by H3TileLayer. */\nexport type H3TileLayerProps<DataT = any> = _H3TileLayerProps<DataT> & CompositeLayerProps<DataT>;\n\n// TODO: use type from h3-hexagon-layer when available\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype H3HexagonLayerProps<DataT = any> = Record<string, any>;\n\n/** Properties added by H3TileLayer. */\ntype _H3TileLayerProps<DataT = any> = H3HexagonLayerProps<DataT> & {\n aggregationResLevel?: number;\n};\n\nexport default class H3TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<\n ExtraPropsT & Required<_H3TileLayerProps<DataT>>\n> {\n static layerName = 'H3TileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\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: `h3-tile-layer-${this.props.id}`,\n data,\n // @ts-expect-error Tileset2D should be generic over TileIndex\n TilesetClass: H3Tileset2D,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n"],"file":"h3-tile-layer.js"}
@@ -1,6 +1,7 @@
1
1
  import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers';
2
- import { polyfill, getRes0Indexes, h3GetResolution, h3ToGeoBoundary, h3ToParent } from 'h3-js';
3
- export function getHexagonsInBoundingBox({
2
+ import { polyfill, getRes0Indexes, geoToH3, h3GetResolution, h3ToGeoBoundary, h3ToParent, kRing } from 'h3-js';
3
+
4
+ function getHexagonsInBoundingBox({
4
5
  west,
5
6
  north,
6
7
  east,
@@ -24,11 +25,12 @@ export function getHexagonsInBoundingBox({
24
25
  }, resolution));
25
26
  }
26
27
 
27
- const oversample = 1;
28
+ const oversample = 2;
28
29
  const h3Indices = polyfill([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
29
30
  return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;
30
31
  }
31
- export function tileToBoundingBox(index) {
32
+
33
+ function tileToBoundingBox(index) {
32
34
  const coordinates = h3ToGeoBoundary(index);
33
35
  const latitudes = coordinates.map(c => c[0]);
34
36
  const longitudes = coordinates.map(c => c[1]);
@@ -43,6 +45,15 @@ export function tileToBoundingBox(index) {
43
45
  north
44
46
  };
45
47
  }
48
+
49
+ const BIAS = 2;
50
+
51
+ function getHexagonResolution(viewport) {
52
+ const hexagonScaleFactor = 2 / 3 * viewport.zoom;
53
+ const latitudeScaleFactor = Math.log(1 / Math.cos(Math.PI * viewport.latitude / 180));
54
+ return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));
55
+ }
56
+
46
57
  export default class H3Tileset2D extends Tileset2D {
47
58
  getTileIndices({
48
59
  viewport,
@@ -50,7 +61,8 @@ export default class H3Tileset2D extends Tileset2D {
50
61
  maxZoom
51
62
  }) {
52
63
  const [east, south, west, north] = viewport.getBounds();
53
- let z = viewport.zoom;
64
+ let z = getHexagonResolution(viewport);
65
+ let indices;
54
66
 
55
67
  if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {
56
68
  z = minZoom;
@@ -58,15 +70,18 @@ export default class H3Tileset2D extends Tileset2D {
58
70
 
59
71
  if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {
60
72
  z = maxZoom;
73
+ const center = geoToH3(viewport.latitude, viewport.longitude, maxZoom);
74
+ indices = kRing(center, 1);
75
+ } else {
76
+ indices = getHexagonsInBoundingBox({
77
+ west,
78
+ north,
79
+ east,
80
+ south
81
+ }, z);
61
82
  }
62
83
 
63
- const resolution = Math.max(0, Math.floor(2 * z / 3) - 2);
64
- return getHexagonsInBoundingBox({
65
- west,
66
- north,
67
- east,
68
- south
69
- }, resolution).map(i => ({
84
+ return indices.map(i => ({
70
85
  i
71
86
  }));
72
87
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/h3-tileset-2d.js"],"names":["_Tileset2D","Tileset2D","polyfill","getRes0Indexes","h3GetResolution","h3ToGeoBoundary","h3ToParent","getHexagonsInBoundingBox","west","north","east","south","resolution","concat","oversample","h3Indices","Set","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","Math","min","max","H3Tileset2D","getTileIndices","viewport","minZoom","maxZoom","getBounds","z","zoom","Number","isFinite","floor","getTileId","getTileMetadata","bbox","getTileZoom","getParentIndex"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\nimport {polyfill, getRes0Indexes, h3GetResolution, h3ToGeoBoundary, h3ToParent} from 'h3-js';\n\nexport function getHexagonsInBoundingBox({west, north, east, south}, resolution) {\n if (resolution === 0) {\n return getRes0Indexes();\n }\n if (east - west > 180) {\n // This is a known issue in h3-js: polyfill does not work correctly\n // when longitude span is larger than 180 degrees.\n return getHexagonsInBoundingBox({west, north, east: 0, south}, resolution).concat(\n getHexagonsInBoundingBox({west: 0, north, east, south}, resolution)\n );\n }\n\n // `polyfill()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 1;\n const h3Indices = polyfill(\n [\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;\n}\n\nexport function tileToBoundingBox(index) {\n const coordinates = h3ToGeoBoundary(index);\n const latitudes = coordinates.map(c => c[0]);\n const longitudes = coordinates.map(c => c[1]);\n const west = Math.min(...longitudes);\n const south = Math.min(...latitudes);\n const east = Math.max(...longitudes);\n const north = Math.max(...latitudes);\n return {west, south, east, north};\n}\n\nexport default class H3Tileset2D extends Tileset2D {\n getTileIndices({viewport, minZoom, maxZoom}) {\n const [east, south, west, north] = viewport.getBounds();\n\n // TODO ignores extent\n let z = viewport.zoom;\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n z = minZoom;\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n }\n\n // Heuristic to get h3 resolution\n const resolution = Math.max(0, Math.floor((2 * z) / 3) - 2);\n return getHexagonsInBoundingBox({west, north, east, south}, resolution).map(i => ({i}));\n }\n\n getTileId({i}) {\n return i;\n }\n\n getTileMetadata({i}) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n getTileZoom({i}) {\n return h3GetResolution(i);\n }\n\n getParentIndex(index) {\n const resolution = h3GetResolution(index.i);\n const i = h3ToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
1
+ {"version":3,"sources":["../../../src/layers/h3-tileset-2d.ts"],"names":["_Tileset2D","Tileset2D","polyfill","getRes0Indexes","geoToH3","h3GetResolution","h3ToGeoBoundary","h3ToParent","kRing","getHexagonsInBoundingBox","west","north","east","south","resolution","concat","oversample","h3Indices","Set","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","Math","min","max","BIAS","getHexagonResolution","viewport","hexagonScaleFactor","zoom","latitudeScaleFactor","log","cos","PI","latitude","floor","H3Tileset2D","getTileIndices","minZoom","maxZoom","getBounds","z","indices","Number","isFinite","center","longitude","getTileId","getTileMetadata","bbox","getTileZoom","getParentIndex"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D, GeoBoundingBox} from '@deck.gl/geo-layers';\nimport {\n polyfill,\n getRes0Indexes,\n geoToH3,\n h3GetResolution,\n h3ToGeoBoundary,\n h3ToParent,\n kRing\n} from 'h3-js';\n\nexport type H3TileIndex = {i: string};\n\nfunction getHexagonsInBoundingBox(\n {west, north, east, south}: GeoBoundingBox,\n resolution: number\n): string[] {\n if (resolution === 0) {\n return getRes0Indexes();\n }\n if (east - west > 180) {\n // This is a known issue in h3-js: polyfill does not work correctly\n // when longitude span is larger than 180 degrees.\n return getHexagonsInBoundingBox({west, north, east: 0, south}, resolution).concat(\n getHexagonsInBoundingBox({west: 0, north, east, south}, resolution)\n );\n }\n\n // `polyfill()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 2;\n const h3Indices = polyfill(\n [\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;\n}\n\nfunction tileToBoundingBox(index: string): GeoBoundingBox {\n const coordinates = h3ToGeoBoundary(index);\n const latitudes = coordinates.map(c => c[0]);\n const longitudes = coordinates.map(c => c[1]);\n const west = Math.min(...longitudes);\n const south = Math.min(...latitudes);\n const east = Math.max(...longitudes);\n const north = Math.max(...latitudes);\n return {west, south, east, north};\n}\n\n// Resolution conversion function. Takes a WebMercatorViewport and returns\n// a H3 resolution such that the screen space size of the hexagons is\n// similar\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\nfunction getHexagonResolution(viewport): number {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\n\nexport default class H3Tileset2D extends Tileset2D {\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileIndices({viewport, minZoom, maxZoom}): H3TileIndex[] {\n const [east, south, west, north] = viewport.getBounds();\n\n let z = getHexagonResolution(viewport);\n let indices: string[];\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n z = minZoom;\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n\n // Once we are at max zoom, getHexagonsInBoundingBox doesn't work, simply\n // get a ring centered on the hexagon in the viewport center\n const center = geoToH3(viewport.latitude, viewport.longitude, maxZoom);\n indices = kRing(center, 1);\n } else {\n indices = getHexagonsInBoundingBox({west, north, east, south}, z);\n }\n\n return indices.map(i => ({i}));\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({i}: H3TileIndex): string {\n return i;\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({i}: H3TileIndex) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({i}: H3TileIndex): number {\n return h3GetResolution(i);\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index: H3TileIndex): H3TileIndex {\n const resolution = h3GetResolution(index.i);\n const i = h3ToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
@@ -1,16 +1,29 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { CompositeLayer } from '@deck.gl/core';
2
- import { QuadkeyLayer, TileLayer } from '@deck.gl/geo-layers';
3
+ import { QuadkeyLayer } from '@deck.gl/geo-layers';
3
4
  import QuadkeyTileset2D from './quadkey-tileset-2d';
5
+ import SpatialIndexTileLayer from './spatial-index-tile-layer';
4
6
 
5
7
  const renderSubLayers = props => {
6
8
  const {
7
9
  data
8
10
  } = props;
9
11
  if (!data || !data.length) return null;
10
- return new QuadkeyLayer(props);
12
+ return new QuadkeyLayer(props, {
13
+ getQuadkey: d => d.id
14
+ });
11
15
  };
12
16
 
17
+ const defaultProps = {
18
+ aggregationResLevel: 6
19
+ };
13
20
  export default class QuadkeyTileLayer extends CompositeLayer {
21
+ constructor(...args) {
22
+ super(...args);
23
+
24
+ _defineProperty(this, "state", void 0);
25
+ }
26
+
14
27
  initializeState() {
15
28
  this.setState({
16
29
  data: null,
@@ -19,9 +32,6 @@ export default class QuadkeyTileLayer extends CompositeLayer {
19
32
  }
20
33
 
21
34
  updateState({
22
- props,
23
- oldProps,
24
- context,
25
35
  changeFlags
26
36
  }) {
27
37
  if (changeFlags.dataChanged) {
@@ -42,14 +52,10 @@ export default class QuadkeyTileLayer extends CompositeLayer {
42
52
  data,
43
53
  tileJSON
44
54
  } = this.state;
45
- const {
46
- maxresolution
47
- } = tileJSON;
48
- const maxZoom = maxresolution - this.props.aggregationResLevel;
49
- return [new TileLayer(this.props, {
50
- id: 'quadkey-tile-layer',
55
+ const maxZoom = parseInt(tileJSON === null || tileJSON === void 0 ? void 0 : tileJSON.maxresolution);
56
+ return [new SpatialIndexTileLayer(this.props, {
57
+ id: "quadkey-tile-layer-".concat(this.props.id),
51
58
  data,
52
- getQuadkey: d => d.id,
53
59
  TilesetClass: QuadkeyTileset2D,
54
60
  renderSubLayers,
55
61
  maxZoom
@@ -57,5 +63,8 @@ export default class QuadkeyTileLayer extends CompositeLayer {
57
63
  }
58
64
 
59
65
  }
60
- QuadkeyTileLayer.layerName = 'QuadkeyTileLayer';
66
+
67
+ _defineProperty(QuadkeyTileLayer, "layerName", 'QuadkeyTileLayer');
68
+
69
+ _defineProperty(QuadkeyTileLayer, "defaultProps", defaultProps);
61
70
  //# sourceMappingURL=quadkey-tile-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/quadkey-tile-layer.js"],"names":["CompositeLayer","QuadkeyLayer","TileLayer","QuadkeyTileset2D","renderSubLayers","props","data","length","QuadkeyTileLayer","initializeState","setState","tileJSON","updateState","oldProps","context","changeFlags","dataChanged","tiles","renderLayers","state","maxresolution","maxZoom","aggregationResLevel","id","getQuadkey","d","TilesetClass","layerName"],"mappings":"AAAA,SAAQA,cAAR,QAA6B,eAA7B;AACA,SAAQC,YAAR,EAAsBC,SAAtB,QAAsC,qBAAtC;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;;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,CAAP;AACD,CAJD;;AAMA,eAAe,MAAMG,gBAAN,SAA+BR,cAA/B,CAA8C;AAC3DS,EAAAA,eAAe,GAAG;AAChB,SAAKC,QAAL,CAAc;AAACJ,MAAAA,IAAI,EAAE,IAAP;AAAaK,MAAAA,QAAQ,EAAE;AAAvB,KAAd;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACP,IAAAA,KAAD;AAAQQ,IAAAA,QAAR;AAAkBC,IAAAA,OAAlB;AAA2BC,IAAAA;AAA3B,GAAD,EAA0C;AACnD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,UAAI;AAACV,QAAAA;AAAD,UAAS,KAAKD,KAAlB;AACA,YAAMM,QAAQ,GAAGL,IAAjB;AACAA,MAAAA,IAAI,GAAGK,QAAQ,CAACM,KAAhB;AACA,WAAKP,QAAL,CAAc;AAACJ,QAAAA,IAAD;AAAOK,QAAAA;AAAP,OAAd;AACD;AACF;;AAEDO,EAAAA,YAAY,GAAG;AACb,UAAM;AAACZ,MAAAA,IAAD;AAAOK,MAAAA;AAAP,QAAmB,KAAKQ,KAA9B;AACA,UAAM;AAACC,MAAAA;AAAD,QAAkBT,QAAxB;AACA,UAAMU,OAAO,GAAGD,aAAa,GAAG,KAAKf,KAAL,CAAWiB,mBAA3C;AACA,WAAO,CACL,IAAIpB,SAAJ,CAAc,KAAKG,KAAnB,EAA0B;AACxBkB,MAAAA,EAAE,EAAE,oBADoB;AAExBjB,MAAAA,IAFwB;AAGxBkB,MAAAA,UAAU,EAAEC,CAAC,IAAIA,CAAC,CAACF,EAHK;AAIxBG,MAAAA,YAAY,EAAEvB,gBAJU;AAKxBC,MAAAA,eALwB;AAMxBiB,MAAAA;AANwB,KAA1B,CADK,CAAP;AAUD;;AA5B0D;AA+B7Db,gBAAgB,CAACmB,SAAjB,GAA6B,kBAA7B","sourcesContent":["import {CompositeLayer} from '@deck.gl/core';\nimport {QuadkeyLayer, TileLayer} from '@deck.gl/geo-layers';\nimport QuadkeyTileset2D from './quadkey-tileset-2d';\n\nconst renderSubLayers = props => {\n const {data} = props;\n if (!data || !data.length) return null;\n return new QuadkeyLayer(props);\n};\n\nexport default class QuadkeyTileLayer extends CompositeLayer {\n initializeState() {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = tileJSON.tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers() {\n const {data, tileJSON} = this.state;\n const {maxresolution} = tileJSON;\n const maxZoom = maxresolution - this.props.aggregationResLevel;\n return [\n new TileLayer(this.props, {\n id: 'quadkey-tile-layer',\n data,\n getQuadkey: d => d.id,\n TilesetClass: QuadkeyTileset2D,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n\nQuadkeyTileLayer.layerName = 'QuadkeyTileLayer';\n"],"file":"quadkey-tile-layer.js"}
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,QAMO,eANP;AAOA,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,YAAY,GAAG;AACnBC,EAAAA,mBAAmB,EAAE;AADF,CAArB;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} 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 = {\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 +1 @@
1
- {"version":3,"sources":["../../../src/layers/quadkey-tileset-2d.js"],"names":["_Tileset2D","Tileset2D","tileToQuadkey","tile","index","z","b","mask","x","y","toString","i","QuadkeyTileset2D","getTileIndices","opts","map","getTileId","getTileMetadata","getTileZoom","length","getParentIndex","slice"],"mappings":"AAAA,SAAQA,UAAU,IAAIC,SAAtB,QAAsC,qBAAtC;;AAEA,SAASC,aAAT,CAAuBC,IAAvB,EAA6B;AAC3B,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,UAAMC,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,eAAe,MAAMQ,gBAAN,SAA+BX,SAA/B,CAAyC;AACtDY,EAAAA,cAAc,CAACC,IAAD,EAAO;AACnB,WAAO,MAAMD,cAAN,CAAqBC,IAArB,EAA2BC,GAA3B,CAA+Bb,aAA/B,CAAP;AACD;;AAEDc,EAAAA,SAAS,CAAC;AAACL,IAAAA;AAAD,GAAD,EAAM;AACb,WAAOA,CAAP;AACD;;AAEDM,EAAAA,eAAe,GAAG;AAChB,WAAO,EAAP;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACP,IAAAA;AAAD,GAAD,EAAM;AACf,WAAOA,CAAC,CAACQ,MAAT;AACD;;AAEDC,EAAAA,cAAc,CAAChB,KAAD,EAAQ;AACpB,UAAMO,CAAC,GAAGP,KAAK,CAACO,CAAN,CAAQU,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;AACA,WAAO;AAACV,MAAAA;AAAD,KAAP;AACD;;AApBqD","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\n\nfunction tileToQuadkey(tile) {\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\nexport default class QuadkeyTileset2D extends Tileset2D {\n getTileIndices(opts) {\n return super.getTileIndices(opts).map(tileToQuadkey);\n }\n\n getTileId({i}) {\n return i;\n }\n\n getTileMetadata() {\n return {};\n }\n\n getTileZoom({i}) {\n return i.length;\n }\n\n getParentIndex(index) {\n const i = index.i.slice(0, -1);\n return {i};\n }\n}\n"],"file":"quadkey-tileset-2d.js"}
1
+ {"version":3,"sources":["../../../src/layers/quadkey-tileset-2d.ts"],"names":["_Tileset2D","Tileset2D","tileToQuadkey","tile","index","z","b","mask","x","y","toString","i","QuadkeyTileset2D","getTileIndices","opts","map","getTileId","getTileMetadata","getTileZoom","length","getParentIndex","slice"],"mappings":"AAAA,SAAQA,UAAU,IAAIC,SAAtB,QAAsC,qBAAtC;;AAGA,SAASC,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,UAAMC,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,eAAe,MAAMQ,gBAAN,SAA+BX,SAA/B,CAAyC;AAEtDY,EAAAA,cAAc,CAACC,IAAD,EAA2B;AACvC,WAAO,MAAMD,cAAN,CAAqBC,IAArB,EAA2BC,GAA3B,CAA+Bb,aAA/B,CAAP;AACD;;AAGDc,EAAAA,SAAS,CAAC;AAACL,IAAAA;AAAD,GAAD,EAAwB;AAC/B,WAAOA,CAAP;AACD;;AAEDM,EAAAA,eAAe,GAAG;AAChB,WAAO,EAAP;AACD;;AAGDC,EAAAA,WAAW,CAAC;AAACP,IAAAA;AAAD,GAAD,EAAwB;AACjC,WAAOA,CAAC,CAACQ,MAAT;AACD;;AAGDC,EAAAA,cAAc,CAAChB,KAAD,EAA0B;AACtC,UAAMO,CAAC,GAAGP,KAAK,CAACO,CAAN,CAAQU,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;AACA,WAAO;AAACV,MAAAA;AAAD,KAAP;AACD;;AAxBqD","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\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 getTileMetadata() {\n return {};\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"}