@deck.gl/geo-layers 9.0.0-beta.1 → 9.0.0-beta.11

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 (262) hide show
  1. package/dist/dist.dev.js +16519 -19789
  2. package/dist/geo-cell-layer/GeoCellLayer.js +51 -0
  3. package/{typed → dist}/geohash-layer/geohash-layer.d.ts +1 -1
  4. package/dist/geohash-layer/geohash-layer.d.ts.map +1 -0
  5. package/dist/geohash-layer/geohash-layer.js +19 -0
  6. package/dist/geohash-layer/geohash-utils.js +50 -0
  7. package/dist/great-circle-layer/great-circle-layer.js +12 -0
  8. package/{typed → dist}/h3-layers/h3-cluster-layer.d.ts +1 -1
  9. package/dist/h3-layers/h3-cluster-layer.d.ts.map +1 -0
  10. package/dist/h3-layers/h3-cluster-layer.js +47 -0
  11. package/dist/h3-layers/h3-hexagon-layer.js +204 -0
  12. package/dist/h3-layers/h3-utils.js +56 -0
  13. package/dist/index.cjs +3157 -0
  14. package/dist/index.cjs.map +7 -0
  15. package/dist/index.d.ts +31 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +36 -0
  18. package/dist/mesh-layer/mesh-layer-fragment.glsl.d.ts +3 -0
  19. package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +1 -1
  20. package/dist/mesh-layer/mesh-layer-fragment.glsl.js +33 -0
  21. package/dist/mesh-layer/mesh-layer-vertex.glsl.js +63 -0
  22. package/{typed → dist}/mesh-layer/mesh-layer.d.ts.map +1 -1
  23. package/dist/mesh-layer/mesh-layer.js +128 -0
  24. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts +1 -1
  25. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts.map +1 -1
  26. package/dist/mvt-layer/coordinate-transform.js +41 -0
  27. package/dist/mvt-layer/find-index-binary.d.ts +11 -0
  28. package/dist/mvt-layer/find-index-binary.d.ts.map +1 -0
  29. package/dist/mvt-layer/find-index-binary.js +96 -0
  30. package/{typed → dist}/mvt-layer/mvt-layer.d.ts +13 -11
  31. package/dist/mvt-layer/mvt-layer.d.ts.map +1 -0
  32. package/dist/mvt-layer/mvt-layer.js +305 -0
  33. package/{typed → dist}/quadkey-layer/quadkey-layer.d.ts +1 -1
  34. package/dist/quadkey-layer/quadkey-layer.d.ts.map +1 -0
  35. package/dist/quadkey-layer/quadkey-layer.js +22 -0
  36. package/dist/quadkey-layer/quadkey-utils.js +26 -0
  37. package/dist/s2-layer/s2-geometry.js +123 -0
  38. package/{typed → dist}/s2-layer/s2-layer.d.ts +1 -1
  39. package/dist/s2-layer/s2-layer.d.ts.map +1 -0
  40. package/dist/s2-layer/s2-layer.js +38 -0
  41. package/dist/s2-layer/s2-utils.js +87 -0
  42. package/{typed → dist}/terrain-layer/terrain-layer.d.ts +4 -4
  43. package/dist/terrain-layer/terrain-layer.d.ts.map +1 -0
  44. package/dist/terrain-layer/terrain-layer.js +233 -0
  45. package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts +15 -1
  46. package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
  47. package/dist/tile-3d-layer/tile-3d-layer.js +302 -0
  48. package/{typed → dist}/tile-layer/tile-layer.d.ts +17 -6
  49. package/dist/tile-layer/tile-layer.d.ts.map +1 -0
  50. package/dist/tile-layer/tile-layer.js +205 -0
  51. package/dist/tileset-2d/index.d.ts +7 -0
  52. package/dist/tileset-2d/index.d.ts.map +1 -0
  53. package/dist/tileset-2d/index.js +4 -0
  54. package/dist/tileset-2d/memoize.js +41 -0
  55. package/{typed → dist}/tileset-2d/tile-2d-header.d.ts +3 -2
  56. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  57. package/dist/tileset-2d/tile-2d-header.js +135 -0
  58. package/dist/tileset-2d/tile-2d-traversal.d.ts +4 -0
  59. package/dist/tileset-2d/tile-2d-traversal.d.ts.map +1 -0
  60. package/dist/tileset-2d/tile-2d-traversal.js +182 -0
  61. package/{typed → dist}/tileset-2d/tileset-2d.d.ts +10 -8
  62. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  63. package/dist/tileset-2d/tileset-2d.js +458 -0
  64. package/dist/tileset-2d/types.js +1 -0
  65. package/{typed → dist}/tileset-2d/utils.d.ts +3 -3
  66. package/dist/tileset-2d/utils.d.ts.map +1 -0
  67. package/dist/tileset-2d/utils.js +234 -0
  68. package/{typed → dist}/trips-layer/trips-layer.d.ts +1 -1
  69. package/{typed → dist}/trips-layer/trips-layer.d.ts.map +1 -1
  70. package/dist/trips-layer/trips-layer.js +93 -0
  71. package/dist/wms-layer/utils.js +13 -0
  72. package/dist/wms-layer/wms-layer.js +192 -0
  73. package/dist.min.js +243 -564
  74. package/package.json +30 -23
  75. package/src/index.ts +7 -7
  76. package/src/mesh-layer/mesh-layer-fragment.glsl.ts +1 -9
  77. package/src/mesh-layer/mesh-layer.ts +1 -2
  78. package/src/mvt-layer/coordinate-transform.ts +1 -1
  79. package/src/mvt-layer/find-index-binary.ts +5 -9
  80. package/src/mvt-layer/mvt-layer.ts +36 -25
  81. package/src/terrain-layer/terrain-layer.ts +13 -3
  82. package/src/tile-layer/tile-layer.ts +37 -21
  83. package/src/tileset-2d/tile-2d-header.ts +2 -1
  84. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  85. package/src/tileset-2d/tileset-2d.ts +15 -8
  86. package/src/tileset-2d/utils.ts +2 -2
  87. package/src/trips-layer/trips-layer.ts +1 -1
  88. package/src/wms-layer/wms-layer.ts +1 -1
  89. package/dist/es5/geo-cell-layer/GeoCellLayer.js +0 -118
  90. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +0 -1
  91. package/dist/es5/geohash-layer/geohash-layer.js +0 -67
  92. package/dist/es5/geohash-layer/geohash-layer.js.map +0 -1
  93. package/dist/es5/geohash-layer/geohash-utils.js +0 -77
  94. package/dist/es5/geohash-layer/geohash-utils.js.map +0 -1
  95. package/dist/es5/great-circle-layer/great-circle-layer.js +0 -48
  96. package/dist/es5/great-circle-layer/great-circle-layer.js.map +0 -1
  97. package/dist/es5/h3-layers/h3-cluster-layer.js +0 -162
  98. package/dist/es5/h3-layers/h3-cluster-layer.js.map +0 -1
  99. package/dist/es5/h3-layers/h3-hexagon-layer.js +0 -351
  100. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +0 -1
  101. package/dist/es5/h3-layers/h3-utils.js +0 -111
  102. package/dist/es5/h3-layers/h3-utils.js.map +0 -1
  103. package/dist/es5/index.js +0 -132
  104. package/dist/es5/index.js.map +0 -1
  105. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +0 -9
  106. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  107. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +0 -9
  108. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  109. package/dist/es5/mesh-layer/mesh-layer.js +0 -217
  110. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  111. package/dist/es5/mvt-layer/coordinate-transform.js +0 -83
  112. package/dist/es5/mvt-layer/coordinate-transform.js.map +0 -1
  113. package/dist/es5/mvt-layer/find-index-binary.js +0 -127
  114. package/dist/es5/mvt-layer/find-index-binary.js.map +0 -1
  115. package/dist/es5/mvt-layer/mvt-layer.js +0 -533
  116. package/dist/es5/mvt-layer/mvt-layer.js.map +0 -1
  117. package/dist/es5/quadkey-layer/quadkey-layer.js +0 -72
  118. package/dist/es5/quadkey-layer/quadkey-layer.js.map +0 -1
  119. package/dist/es5/quadkey-layer/quadkey-utils.js +0 -53
  120. package/dist/es5/quadkey-layer/quadkey-utils.js.map +0 -1
  121. package/dist/es5/s2-layer/s2-geometry.js +0 -158
  122. package/dist/es5/s2-layer/s2-geometry.js.map +0 -1
  123. package/dist/es5/s2-layer/s2-layer.js +0 -67
  124. package/dist/es5/s2-layer/s2-layer.js.map +0 -1
  125. package/dist/es5/s2-layer/s2-utils.js +0 -80
  126. package/dist/es5/s2-layer/s2-utils.js.map +0 -1
  127. package/dist/es5/terrain-layer/terrain-layer.js +0 -347
  128. package/dist/es5/terrain-layer/terrain-layer.js.map +0 -1
  129. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -511
  130. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  131. package/dist/es5/tile-layer/tile-layer.js +0 -363
  132. package/dist/es5/tile-layer/tile-layer.js.map +0 -1
  133. package/dist/es5/tileset-2d/index.js +0 -66
  134. package/dist/es5/tileset-2d/index.js.map +0 -1
  135. package/dist/es5/tileset-2d/memoize.js +0 -47
  136. package/dist/es5/tileset-2d/memoize.js.map +0 -1
  137. package/dist/es5/tileset-2d/tile-2d-header.js +0 -250
  138. package/dist/es5/tileset-2d/tile-2d-header.js.map +0 -1
  139. package/dist/es5/tileset-2d/tile-2d-traversal.js +0 -256
  140. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +0 -1
  141. package/dist/es5/tileset-2d/tileset-2d.js +0 -757
  142. package/dist/es5/tileset-2d/tileset-2d.js.map +0 -1
  143. package/dist/es5/tileset-2d/types.js +0 -2
  144. package/dist/es5/tileset-2d/types.js.map +0 -1
  145. package/dist/es5/tileset-2d/utils.js +0 -302
  146. package/dist/es5/tileset-2d/utils.js.map +0 -1
  147. package/dist/es5/trips-layer/trips-layer.js +0 -114
  148. package/dist/es5/trips-layer/trips-layer.js.map +0 -1
  149. package/dist/es5/wms-layer/utils.js +0 -18
  150. package/dist/es5/wms-layer/utils.js.map +0 -1
  151. package/dist/es5/wms-layer/wms-layer.js +0 -376
  152. package/dist/es5/wms-layer/wms-layer.js.map +0 -1
  153. package/dist/esm/geo-cell-layer/GeoCellLayer.js +0 -72
  154. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +0 -1
  155. package/dist/esm/geohash-layer/geohash-layer.js +0 -26
  156. package/dist/esm/geohash-layer/geohash-layer.js.map +0 -1
  157. package/dist/esm/geohash-layer/geohash-utils.js +0 -56
  158. package/dist/esm/geohash-layer/geohash-utils.js.map +0 -1
  159. package/dist/esm/great-circle-layer/great-circle-layer.js +0 -12
  160. package/dist/esm/great-circle-layer/great-circle-layer.js.map +0 -1
  161. package/dist/esm/h3-layers/h3-cluster-layer.js +0 -79
  162. package/dist/esm/h3-layers/h3-cluster-layer.js.map +0 -1
  163. package/dist/esm/h3-layers/h3-hexagon-layer.js +0 -280
  164. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +0 -1
  165. package/dist/esm/h3-layers/h3-utils.js +0 -54
  166. package/dist/esm/h3-layers/h3-utils.js.map +0 -1
  167. package/dist/esm/index.js +0 -17
  168. package/dist/esm/index.js.map +0 -1
  169. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +0 -56
  170. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  171. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +0 -85
  172. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  173. package/dist/esm/mesh-layer/mesh-layer.js +0 -178
  174. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  175. package/dist/esm/mvt-layer/coordinate-transform.js +0 -49
  176. package/dist/esm/mvt-layer/coordinate-transform.js.map +0 -1
  177. package/dist/esm/mvt-layer/find-index-binary.js +0 -99
  178. package/dist/esm/mvt-layer/find-index-binary.js.map +0 -1
  179. package/dist/esm/mvt-layer/mvt-layer.js +0 -427
  180. package/dist/esm/mvt-layer/mvt-layer.js.map +0 -1
  181. package/dist/esm/quadkey-layer/quadkey-layer.js +0 -31
  182. package/dist/esm/quadkey-layer/quadkey-layer.js.map +0 -1
  183. package/dist/esm/quadkey-layer/quadkey-utils.js +0 -24
  184. package/dist/esm/quadkey-layer/quadkey-utils.js.map +0 -1
  185. package/dist/esm/s2-layer/s2-geometry.js +0 -126
  186. package/dist/esm/s2-layer/s2-geometry.js.map +0 -1
  187. package/dist/esm/s2-layer/s2-layer.js +0 -26
  188. package/dist/esm/s2-layer/s2-layer.js.map +0 -1
  189. package/dist/esm/s2-layer/s2-utils.js +0 -69
  190. package/dist/esm/s2-layer/s2-utils.js.map +0 -1
  191. package/dist/esm/terrain-layer/terrain-layer.js +0 -292
  192. package/dist/esm/terrain-layer/terrain-layer.js.map +0 -1
  193. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -438
  194. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  195. package/dist/esm/tile-layer/tile-layer.js +0 -299
  196. package/dist/esm/tile-layer/tile-layer.js.map +0 -1
  197. package/dist/esm/tileset-2d/index.js +0 -4
  198. package/dist/esm/tileset-2d/index.js.map +0 -1
  199. package/dist/esm/tileset-2d/memoize.js +0 -40
  200. package/dist/esm/tileset-2d/memoize.js.map +0 -1
  201. package/dist/esm/tileset-2d/tile-2d-header.js +0 -179
  202. package/dist/esm/tileset-2d/tile-2d-header.js.map +0 -1
  203. package/dist/esm/tileset-2d/tile-2d-traversal.js +0 -184
  204. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +0 -1
  205. package/dist/esm/tileset-2d/tileset-2d.js +0 -509
  206. package/dist/esm/tileset-2d/tileset-2d.js.map +0 -1
  207. package/dist/esm/tileset-2d/types.js +0 -2
  208. package/dist/esm/tileset-2d/types.js.map +0 -1
  209. package/dist/esm/tileset-2d/utils.js +0 -233
  210. package/dist/esm/tileset-2d/utils.js.map +0 -1
  211. package/dist/esm/trips-layer/trips-layer.js +0 -88
  212. package/dist/esm/trips-layer/trips-layer.js.map +0 -1
  213. package/dist/esm/wms-layer/utils.js +0 -9
  214. package/dist/esm/wms-layer/utils.js.map +0 -1
  215. package/dist/esm/wms-layer/wms-layer.js +0 -231
  216. package/dist/esm/wms-layer/wms-layer.js.map +0 -1
  217. package/typed/geohash-layer/geohash-layer.d.ts.map +0 -1
  218. package/typed/h3-layers/h3-cluster-layer.d.ts.map +0 -1
  219. package/typed/index.d.ts +0 -31
  220. package/typed/index.d.ts.map +0 -1
  221. package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts +0 -3
  222. package/typed/mvt-layer/find-index-binary.d.ts +0 -12
  223. package/typed/mvt-layer/find-index-binary.d.ts.map +0 -1
  224. package/typed/mvt-layer/mvt-layer.d.ts.map +0 -1
  225. package/typed/quadkey-layer/quadkey-layer.d.ts.map +0 -1
  226. package/typed/s2-layer/s2-layer.d.ts.map +0 -1
  227. package/typed/terrain-layer/terrain-layer.d.ts.map +0 -1
  228. package/typed/tile-layer/tile-layer.d.ts.map +0 -1
  229. package/typed/tileset-2d/index.d.ts +0 -7
  230. package/typed/tileset-2d/index.d.ts.map +0 -1
  231. package/typed/tileset-2d/tile-2d-header.d.ts.map +0 -1
  232. package/typed/tileset-2d/tile-2d-traversal.d.ts +0 -4
  233. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +0 -1
  234. package/typed/tileset-2d/tileset-2d.d.ts.map +0 -1
  235. package/typed/tileset-2d/utils.d.ts.map +0 -1
  236. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts +0 -0
  237. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts.map +0 -0
  238. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts +0 -0
  239. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts.map +0 -0
  240. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts +0 -0
  241. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts.map +0 -0
  242. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts +0 -0
  243. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts.map +0 -0
  244. /package/{typed → dist}/h3-layers/h3-utils.d.ts +0 -0
  245. /package/{typed → dist}/h3-layers/h3-utils.d.ts.map +0 -0
  246. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts +0 -0
  247. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +0 -0
  248. /package/{typed → dist}/mesh-layer/mesh-layer.d.ts +0 -0
  249. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts +0 -0
  250. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts.map +0 -0
  251. /package/{typed → dist}/s2-layer/s2-geometry.d.ts +0 -0
  252. /package/{typed → dist}/s2-layer/s2-geometry.d.ts.map +0 -0
  253. /package/{typed → dist}/s2-layer/s2-utils.d.ts +0 -0
  254. /package/{typed → dist}/s2-layer/s2-utils.d.ts.map +0 -0
  255. /package/{typed → dist}/tileset-2d/memoize.d.ts +0 -0
  256. /package/{typed → dist}/tileset-2d/memoize.d.ts.map +0 -0
  257. /package/{typed → dist}/tileset-2d/types.d.ts +0 -0
  258. /package/{typed → dist}/tileset-2d/types.d.ts.map +0 -0
  259. /package/{typed → dist}/wms-layer/utils.d.ts +0 -0
  260. /package/{typed → dist}/wms-layer/utils.d.ts.map +0 -0
  261. /package/{typed → dist}/wms-layer/wms-layer.d.ts +0 -0
  262. /package/{typed → dist}/wms-layer/wms-layer.d.ts.map +0 -0
@@ -0,0 +1,51 @@
1
+ import { CompositeLayer } from '@deck.gl/core';
2
+ import { PolygonLayer } from '@deck.gl/layers';
3
+ const defaultProps = {
4
+ ...PolygonLayer.defaultProps
5
+ };
6
+ export default class GeoCellLayer extends CompositeLayer {
7
+ static { this.layerName = 'GeoCellLayer'; }
8
+ static { this.defaultProps = defaultProps; }
9
+ /** Implement to generate props to create geometry. */
10
+ indexToBounds() {
11
+ return null;
12
+ }
13
+ renderLayers() {
14
+ // Rendering props underlying layer
15
+ const { elevationScale, extruded, wireframe, filled, stroked, lineWidthUnits, lineWidthScale, lineWidthMinPixels, lineWidthMaxPixels, lineJointRounded, lineMiterLimit, lineDashJustified, getElevation, getFillColor, getLineColor, getLineWidth } = this.props;
16
+ // Accessor props for underlying layers
17
+ const { updateTriggers, material, transitions } = this.props;
18
+ // Filled Polygon Layer
19
+ const CellLayer = this.getSubLayerClass('cell', PolygonLayer);
20
+ const { updateTriggers: boundsUpdateTriggers, ...boundsProps } = this.indexToBounds() || {};
21
+ return new CellLayer({
22
+ filled,
23
+ wireframe,
24
+ extruded,
25
+ elevationScale,
26
+ stroked,
27
+ lineWidthUnits,
28
+ lineWidthScale,
29
+ lineWidthMinPixels,
30
+ lineWidthMaxPixels,
31
+ lineJointRounded,
32
+ lineMiterLimit,
33
+ lineDashJustified,
34
+ material,
35
+ transitions,
36
+ getElevation,
37
+ getFillColor,
38
+ getLineColor,
39
+ getLineWidth
40
+ }, this.getSubLayerProps({
41
+ id: 'cell',
42
+ updateTriggers: updateTriggers && {
43
+ ...boundsUpdateTriggers,
44
+ getElevation: updateTriggers.getElevation,
45
+ getFillColor: updateTriggers.getFillColor,
46
+ getLineColor: updateTriggers.getLineColor,
47
+ getLineWidth: updateTriggers.getLineWidth
48
+ }
49
+ }), boundsProps);
50
+ }
51
+ }
@@ -1,5 +1,5 @@
1
1
  import { AccessorFunction, DefaultProps } from '@deck.gl/core';
2
- import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
2
+ import GeoCellLayer from "../geo-cell-layer/GeoCellLayer.js";
3
3
  /**
4
4
  * Properties of `GeohashLayer`.
5
5
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geohash-layer.d.ts","sourceRoot":"","sources":["../../src/geohash-layer/geohash-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAC7D,OAAO,YAAY,0CAAuC;AAO1D;;GAEG;AACH,KAAK,iBAAiB,CAAC,KAAK,GAAG,OAAO,IAAI;IACxC;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEF,sIAAsI;AACtI,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,YAAY,CAC7F,KAAK,EACL,QAAQ,CAAC,iBAAiB,CAAC,GAAG,UAAU,CACzC;IACC,MAAM,CAAC,SAAS,SAAkB;IAClC,MAAM,CAAC,YAAY,2CAAgB;IAEnC,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;CAUvD"}
@@ -0,0 +1,19 @@
1
+ import GeoCellLayer from "../geo-cell-layer/GeoCellLayer.js";
2
+ import { getGeohashPolygon } from "./geohash-utils.js";
3
+ const defaultProps = {
4
+ getGeohash: { type: 'accessor', value: (d) => d.geohash }
5
+ };
6
+ /** Render filled and/or stroked polygons based on the [Geohash](https://en.wikipedia.org/wiki/Geohash) geospatial indexing system. */
7
+ export default class GeohashLayer extends GeoCellLayer {
8
+ static { this.layerName = 'GeohashLayer'; }
9
+ static { this.defaultProps = defaultProps; }
10
+ indexToBounds() {
11
+ const { data, getGeohash } = this.props;
12
+ return {
13
+ data,
14
+ _normalize: false,
15
+ positionFormat: 'XY',
16
+ getPolygon: (x, objectInfo) => getGeohashPolygon(getGeohash(x, objectInfo))
17
+ };
18
+ }
19
+ }
@@ -0,0 +1,50 @@
1
+ const BASE32_CODES = '0123456789bcdefghjkmnpqrstuvwxyz';
2
+ const BASE32_CODES_DICT = {};
3
+ for (let i = 0; i < BASE32_CODES.length; i++) {
4
+ BASE32_CODES_DICT[BASE32_CODES.charAt(i)] = i;
5
+ }
6
+ const MIN_LAT = -90;
7
+ const MAX_LAT = 90;
8
+ const MIN_LON = -180;
9
+ const MAX_LON = 180;
10
+ // Adapted from ngeohash decode_bbox
11
+ export function getGeohashBounds(geohash) {
12
+ let isLon = true;
13
+ let maxLat = MAX_LAT;
14
+ let minLat = MIN_LAT;
15
+ let maxLon = MAX_LON;
16
+ let minLon = MIN_LON;
17
+ let mid;
18
+ let hashValue = 0;
19
+ for (let i = 0, l = geohash.length; i < l; i++) {
20
+ const code = geohash[i].toLowerCase();
21
+ hashValue = BASE32_CODES_DICT[code];
22
+ for (let bits = 4; bits >= 0; bits--) {
23
+ const bit = (hashValue >> bits) & 1;
24
+ if (isLon) {
25
+ mid = (maxLon + minLon) / 2;
26
+ if (bit === 1) {
27
+ minLon = mid;
28
+ }
29
+ else {
30
+ maxLon = mid;
31
+ }
32
+ }
33
+ else {
34
+ mid = (maxLat + minLat) / 2;
35
+ if (bit === 1) {
36
+ minLat = mid;
37
+ }
38
+ else {
39
+ maxLat = mid;
40
+ }
41
+ }
42
+ isLon = !isLon;
43
+ }
44
+ }
45
+ return [minLat, minLon, maxLat, maxLon];
46
+ }
47
+ export function getGeohashPolygon(geohash) {
48
+ const [s, w, n, e] = getGeohashBounds(geohash);
49
+ return [e, n, e, s, w, s, w, n, e, n];
50
+ }
@@ -0,0 +1,12 @@
1
+ import { ArcLayer } from '@deck.gl/layers';
2
+ const defaultProps = {
3
+ getHeight: { type: 'accessor', value: 0 },
4
+ greatCircle: true
5
+ };
6
+ // This layer has been merged into the core ArcLayer
7
+ // Keeping for backward-compatibility
8
+ /** @deprecated Use ArcLayer with `greatCircle: true` instead */
9
+ export default class GreatCircleLayer extends ArcLayer {
10
+ static { this.layerName = 'GreatCircleLayer'; }
11
+ static { this.defaultProps = defaultProps; }
12
+ }
@@ -1,6 +1,6 @@
1
1
  import { H3IndexInput } from 'h3-js';
2
2
  import { AccessorFunction, UpdateParameters, DefaultProps } from '@deck.gl/core';
3
- import GeoCellLayer, { GeoCellLayerProps } from '../geo-cell-layer/GeoCellLayer';
3
+ import GeoCellLayer, { GeoCellLayerProps } from "../geo-cell-layer/GeoCellLayer.js";
4
4
  /** All properties supported by H3ClusterLayer. */
5
5
  export type H3ClusterLayerProps<DataT = unknown> = _H3ClusterLayerProps<DataT> & GeoCellLayerProps<DataT>;
6
6
  /** Properties added by H3ClusterLayer. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h3-cluster-layer.d.ts","sourceRoot":"","sources":["../../src/h3-layers/h3-cluster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAC,MAAM,OAAO,CAAC;AAExD,OAAO,EAAC,gBAAgB,EAAkB,gBAAgB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAE/F,OAAO,YAAY,EAAE,EAAC,iBAAiB,EAAC,0CAAuC;AAO/E,kDAAkD;AAClD,MAAM,MAAM,mBAAmB,CAAC,KAAK,GAAG,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,GAC5E,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE3B,0CAA0C;AAC1C,KAAK,oBAAoB,CAAC,KAAK,IAAI;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,YAAY,CAC/F,KAAK,EACL,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CACnD;IACC,MAAM,CAAC,SAAS,SAAoB;IACpC,MAAM,CAAC,YAAY,6CAAgB;IAEnC,KAAK,EAAG;QACN,QAAQ,EAAE;YAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;SAAC,EAAE,CAAC;KACrC,CAAC;IAEF,eAAe,IAAI,IAAI;IAIvB,WAAW,CAAC,EAAC,KAAK,EAAE,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IA2B/D,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;CAahD"}
@@ -0,0 +1,47 @@
1
+ import { cellsToMultiPolygon } from 'h3-js';
2
+ import { createIterable } from '@deck.gl/core';
3
+ import { default as H3HexagonLayer } from "./h3-hexagon-layer.js";
4
+ import GeoCellLayer from "../geo-cell-layer/GeoCellLayer.js";
5
+ import { normalizeLongitudes } from "./h3-utils.js";
6
+ const defaultProps = {
7
+ getHexagons: { type: 'accessor', value: (d) => d.hexagons }
8
+ };
9
+ export default class H3ClusterLayer extends GeoCellLayer {
10
+ static { this.layerName = 'H3ClusterLayer'; }
11
+ static { this.defaultProps = defaultProps; }
12
+ initializeState() {
13
+ H3HexagonLayer._checkH3Lib();
14
+ }
15
+ updateState({ props, changeFlags }) {
16
+ if (changeFlags.dataChanged ||
17
+ (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagons)) {
18
+ const { data, getHexagons } = props;
19
+ const polygons = [];
20
+ const { iterable, objectInfo } = createIterable(data);
21
+ for (const object of iterable) {
22
+ objectInfo.index++;
23
+ const hexagons = getHexagons(object, objectInfo);
24
+ const multiPolygon = cellsToMultiPolygon(hexagons, true);
25
+ for (const polygon of multiPolygon) {
26
+ // Normalize polygons to prevent wrapping over the anti-meridian
27
+ for (const ring of polygon) {
28
+ normalizeLongitudes(ring);
29
+ }
30
+ polygons.push(this.getSubLayerRow({ polygon }, object, objectInfo.index));
31
+ }
32
+ }
33
+ this.setState({ polygons });
34
+ }
35
+ }
36
+ indexToBounds() {
37
+ const { getElevation, getFillColor, getLineColor, getLineWidth } = this.props;
38
+ return {
39
+ data: this.state.polygons,
40
+ getPolygon: d => d.polygon,
41
+ getElevation: this.getSubLayerAccessor(getElevation),
42
+ getFillColor: this.getSubLayerAccessor(getFillColor),
43
+ getLineColor: this.getSubLayerAccessor(getLineColor),
44
+ getLineWidth: this.getSubLayerAccessor(getLineWidth)
45
+ };
46
+ }
47
+ }
@@ -0,0 +1,204 @@
1
+ import { getResolution, cellToLatLng, latLngToCell, isPentagon, gridDistance, getHexagonEdgeLengthAvg } from 'h3-js';
2
+ import { CompositeLayer, createIterable } from '@deck.gl/core';
3
+ import { ColumnLayer, PolygonLayer } from '@deck.gl/layers';
4
+ import { flattenPolygon, getHexagonCentroid, h3ToPolygon } from "./h3-utils.js";
5
+ // There is a cost to updating the instanced geometries when using highPrecision: false
6
+ // This constant defines the distance between two hexagons that leads to "significant
7
+ // distortion." Smaller value makes the column layer more sensitive to viewport change.
8
+ const UPDATE_THRESHOLD_KM = 10;
9
+ function mergeTriggers(getHexagon, coverage) {
10
+ let trigger;
11
+ if (getHexagon === undefined || getHexagon === null) {
12
+ trigger = coverage;
13
+ }
14
+ else if (typeof getHexagon === 'object') {
15
+ trigger = { ...getHexagon, coverage };
16
+ }
17
+ else {
18
+ trigger = { getHexagon, coverage };
19
+ }
20
+ return trigger;
21
+ }
22
+ const defaultProps = {
23
+ ...PolygonLayer.defaultProps,
24
+ highPrecision: 'auto',
25
+ coverage: { type: 'number', min: 0, max: 1, value: 1 },
26
+ centerHexagon: null,
27
+ getHexagon: { type: 'accessor', value: (x) => x.hexagon },
28
+ extruded: true
29
+ };
30
+ /**
31
+ * Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.
32
+ */
33
+ export default class H3HexagonLayer extends CompositeLayer {
34
+ static { this.defaultProps = defaultProps; }
35
+ static { this.layerName = 'H3HexagonLayer'; }
36
+ // See `main/bundle.ts`
37
+ static { this._checkH3Lib = () => { }; }
38
+ initializeState() {
39
+ H3HexagonLayer._checkH3Lib();
40
+ this.state = {
41
+ edgeLengthKM: 0,
42
+ resolution: -1
43
+ };
44
+ }
45
+ shouldUpdateState({ changeFlags }) {
46
+ return this._shouldUseHighPrecision()
47
+ ? changeFlags.propsOrDataChanged
48
+ : changeFlags.somethingChanged;
49
+ }
50
+ updateState({ props, changeFlags }) {
51
+ if (props.highPrecision !== true &&
52
+ (changeFlags.dataChanged ||
53
+ (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon))) {
54
+ const dataProps = this._calculateH3DataProps();
55
+ this.setState(dataProps);
56
+ }
57
+ this._updateVertices(this.context.viewport);
58
+ }
59
+ _calculateH3DataProps() {
60
+ let resolution = -1;
61
+ let hasPentagon = false;
62
+ let hasMultipleRes = false;
63
+ const { iterable, objectInfo } = createIterable(this.props.data);
64
+ for (const object of iterable) {
65
+ objectInfo.index++;
66
+ const hexId = this.props.getHexagon(object, objectInfo);
67
+ // Take the resolution of the first hex
68
+ const hexResolution = getResolution(hexId);
69
+ if (resolution < 0) {
70
+ resolution = hexResolution;
71
+ if (!this.props.highPrecision)
72
+ break;
73
+ }
74
+ else if (resolution !== hexResolution) {
75
+ hasMultipleRes = true;
76
+ break;
77
+ }
78
+ if (isPentagon(hexId)) {
79
+ hasPentagon = true;
80
+ break;
81
+ }
82
+ }
83
+ return {
84
+ resolution,
85
+ edgeLengthKM: resolution >= 0 ? getHexagonEdgeLengthAvg(resolution, 'km') : 0,
86
+ hasMultipleRes,
87
+ hasPentagon
88
+ };
89
+ }
90
+ _shouldUseHighPrecision() {
91
+ if (this.props.highPrecision === 'auto') {
92
+ const { resolution, hasPentagon, hasMultipleRes } = this.state;
93
+ const { viewport } = this.context;
94
+ return (Boolean(viewport?.resolution) ||
95
+ hasMultipleRes ||
96
+ hasPentagon ||
97
+ (resolution >= 0 && resolution <= 5));
98
+ }
99
+ return this.props.highPrecision;
100
+ }
101
+ _updateVertices(viewport) {
102
+ if (this._shouldUseHighPrecision()) {
103
+ return;
104
+ }
105
+ const { resolution, edgeLengthKM, centerHex } = this.state;
106
+ if (resolution < 0) {
107
+ return;
108
+ }
109
+ const hex = this.props.centerHexagon || latLngToCell(viewport.latitude, viewport.longitude, resolution);
110
+ if (centerHex === hex) {
111
+ return;
112
+ }
113
+ if (centerHex) {
114
+ try {
115
+ const distance = gridDistance(centerHex, hex);
116
+ if (distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {
117
+ return;
118
+ }
119
+ }
120
+ catch {
121
+ // gridDistance throws if the distance could not be computed
122
+ // due to the two indexes very far apart or on opposite sides of a pentagon.
123
+ }
124
+ }
125
+ const { unitsPerMeter } = viewport.distanceScales;
126
+ let vertices = h3ToPolygon(hex);
127
+ const [centerLat, centerLng] = cellToLatLng(hex);
128
+ const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);
129
+ vertices = vertices.map(p => {
130
+ const worldPosition = viewport.projectFlat(p);
131
+ return [
132
+ (worldPosition[0] - centerX) / unitsPerMeter[0],
133
+ (worldPosition[1] - centerY) / unitsPerMeter[1]
134
+ ];
135
+ });
136
+ this.setState({ centerHex: hex, vertices });
137
+ }
138
+ renderLayers() {
139
+ return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();
140
+ }
141
+ _getForwardProps() {
142
+ const { elevationScale, material, coverage, extruded, wireframe, stroked, filled, lineWidthUnits, lineWidthScale, lineWidthMinPixels, lineWidthMaxPixels, getFillColor, getElevation, getLineColor, getLineWidth, transitions, updateTriggers } = this.props;
143
+ return {
144
+ elevationScale,
145
+ extruded,
146
+ coverage,
147
+ wireframe,
148
+ stroked,
149
+ filled,
150
+ lineWidthUnits,
151
+ lineWidthScale,
152
+ lineWidthMinPixels,
153
+ lineWidthMaxPixels,
154
+ material,
155
+ getElevation,
156
+ getFillColor,
157
+ getLineColor,
158
+ getLineWidth,
159
+ transitions,
160
+ updateTriggers: {
161
+ getFillColor: updateTriggers.getFillColor,
162
+ getElevation: updateTriggers.getElevation,
163
+ getLineColor: updateTriggers.getLineColor,
164
+ getLineWidth: updateTriggers.getLineWidth
165
+ }
166
+ };
167
+ }
168
+ _renderPolygonLayer() {
169
+ const { data, getHexagon, updateTriggers, coverage } = this.props;
170
+ const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);
171
+ const forwardProps = this._getForwardProps();
172
+ forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);
173
+ return new SubLayerClass(forwardProps, this.getSubLayerProps({
174
+ id: 'hexagon-cell-hifi',
175
+ updateTriggers: forwardProps.updateTriggers
176
+ }), {
177
+ data,
178
+ _normalize: false,
179
+ _windingOrder: 'CCW',
180
+ positionFormat: 'XY',
181
+ getPolygon: (object, objectInfo) => {
182
+ const hexagonId = getHexagon(object, objectInfo);
183
+ return flattenPolygon(h3ToPolygon(hexagonId, coverage));
184
+ }
185
+ });
186
+ }
187
+ _renderColumnLayer() {
188
+ const { data, getHexagon, updateTriggers } = this.props;
189
+ const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);
190
+ const forwardProps = this._getForwardProps();
191
+ forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;
192
+ return new SubLayerClass(forwardProps, this.getSubLayerProps({
193
+ id: 'hexagon-cell',
194
+ flatShading: true,
195
+ updateTriggers: forwardProps.updateTriggers
196
+ }), {
197
+ data,
198
+ diskResolution: 6, // generate an extruded hexagon as the base geometry
199
+ radius: 1,
200
+ vertices: this.state.vertices,
201
+ getPosition: getHexagonCentroid.bind(null, getHexagon)
202
+ });
203
+ }
204
+ }
@@ -0,0 +1,56 @@
1
+ import { cellToBoundary, cellToLatLng } from 'h3-js';
2
+ import { lerp } from '@math.gl/core';
3
+ // normalize longitudes w.r.t center (refLng), when not provided first vertex
4
+ export function normalizeLongitudes(vertices, refLng) {
5
+ refLng = refLng === undefined ? vertices[0][0] : refLng;
6
+ for (const pt of vertices) {
7
+ const deltaLng = pt[0] - refLng;
8
+ if (deltaLng > 180) {
9
+ pt[0] -= 360;
10
+ }
11
+ else if (deltaLng < -180) {
12
+ pt[0] += 360;
13
+ }
14
+ }
15
+ }
16
+ // scale polygon vertices w.r.t center (hexId)
17
+ export function scalePolygon(hexId, vertices, factor) {
18
+ const [lat, lng] = cellToLatLng(hexId);
19
+ const actualCount = vertices.length;
20
+ // normalize with respect to center
21
+ normalizeLongitudes(vertices, lng);
22
+ // `cellToBoundary` returns same array object for first and last vertex (closed polygon),
23
+ // if so skip scaling the last vertex
24
+ const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
25
+ for (let i = 0; i < vertexCount; i++) {
26
+ vertices[i][0] = lerp(lng, vertices[i][0], factor);
27
+ vertices[i][1] = lerp(lat, vertices[i][1], factor);
28
+ }
29
+ }
30
+ // gets hexagon centroid
31
+ export function getHexagonCentroid(getHexagon, object, objectInfo) {
32
+ const hexagonId = getHexagon(object, objectInfo);
33
+ const [lat, lng] = cellToLatLng(hexagonId);
34
+ return [lng, lat];
35
+ }
36
+ export function h3ToPolygon(hexId, coverage = 1) {
37
+ const vertices = cellToBoundary(hexId, true);
38
+ if (coverage !== 1) {
39
+ // scale and normalize vertices w.r.t to center
40
+ scalePolygon(hexId, vertices, coverage);
41
+ }
42
+ else {
43
+ // normalize w.r.t to start vertex
44
+ normalizeLongitudes(vertices);
45
+ }
46
+ return vertices;
47
+ }
48
+ export function flattenPolygon(vertices) {
49
+ const positions = new Float64Array(vertices.length * 2);
50
+ let i = 0;
51
+ for (const pt of vertices) {
52
+ positions[i++] = pt[0];
53
+ positions[i++] = pt[1];
54
+ }
55
+ return positions;
56
+ }