@deck.gl/geo-layers 9.0.0-beta.2 → 9.0.0-beta.4

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 (256) hide show
  1. package/dist/dist.dev.js +2798 -7198
  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 +3202 -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/{esm/mesh-layer → mesh-layer}/mesh-layer-fragment.glsl.js +0 -1
  19. package/dist/{esm/mesh-layer → mesh-layer}/mesh-layer-vertex.glsl.js +0 -1
  20. package/dist/mesh-layer/mesh-layer.js +129 -0
  21. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts +1 -1
  22. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts.map +1 -1
  23. package/dist/mvt-layer/coordinate-transform.js +41 -0
  24. package/dist/mvt-layer/find-index-binary.d.ts +11 -0
  25. package/dist/mvt-layer/find-index-binary.d.ts.map +1 -0
  26. package/dist/mvt-layer/find-index-binary.js +96 -0
  27. package/{typed → dist}/mvt-layer/mvt-layer.d.ts +8 -6
  28. package/dist/mvt-layer/mvt-layer.d.ts.map +1 -0
  29. package/dist/mvt-layer/mvt-layer.js +310 -0
  30. package/{typed → dist}/quadkey-layer/quadkey-layer.d.ts +1 -1
  31. package/dist/quadkey-layer/quadkey-layer.d.ts.map +1 -0
  32. package/dist/quadkey-layer/quadkey-layer.js +22 -0
  33. package/dist/quadkey-layer/quadkey-utils.js +26 -0
  34. package/dist/s2-layer/s2-geometry.js +123 -0
  35. package/{typed → dist}/s2-layer/s2-layer.d.ts +1 -1
  36. package/dist/s2-layer/s2-layer.d.ts.map +1 -0
  37. package/dist/s2-layer/s2-layer.js +38 -0
  38. package/dist/s2-layer/s2-utils.js +87 -0
  39. package/{typed → dist}/terrain-layer/terrain-layer.d.ts +4 -4
  40. package/dist/terrain-layer/terrain-layer.d.ts.map +1 -0
  41. package/dist/terrain-layer/terrain-layer.js +233 -0
  42. package/dist/tile-3d-layer/tile-3d-layer.js +302 -0
  43. package/{typed → dist}/tile-layer/tile-layer.d.ts +3 -3
  44. package/dist/tile-layer/tile-layer.d.ts.map +1 -0
  45. package/dist/tile-layer/tile-layer.js +204 -0
  46. package/dist/tileset-2d/index.d.ts +7 -0
  47. package/dist/tileset-2d/index.d.ts.map +1 -0
  48. package/dist/tileset-2d/index.js +4 -0
  49. package/dist/tileset-2d/memoize.js +41 -0
  50. package/{typed → dist}/tileset-2d/tile-2d-header.d.ts +3 -2
  51. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  52. package/dist/tileset-2d/tile-2d-header.js +135 -0
  53. package/dist/tileset-2d/tile-2d-traversal.d.ts +4 -0
  54. package/dist/tileset-2d/tile-2d-traversal.d.ts.map +1 -0
  55. package/dist/tileset-2d/tile-2d-traversal.js +182 -0
  56. package/{typed → dist}/tileset-2d/tileset-2d.d.ts +7 -7
  57. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  58. package/dist/tileset-2d/tileset-2d.js +456 -0
  59. package/dist/tileset-2d/types.js +1 -0
  60. package/{typed → dist}/tileset-2d/utils.d.ts +3 -3
  61. package/dist/tileset-2d/utils.d.ts.map +1 -0
  62. package/dist/tileset-2d/utils.js +234 -0
  63. package/dist/trips-layer/trips-layer.js +93 -0
  64. package/dist/wms-layer/utils.js +13 -0
  65. package/dist/wms-layer/wms-layer.js +192 -0
  66. package/dist.min.js +27 -162
  67. package/package.json +32 -18
  68. package/src/index.ts +5 -5
  69. package/src/mvt-layer/coordinate-transform.ts +1 -1
  70. package/src/mvt-layer/find-index-binary.ts +5 -9
  71. package/src/mvt-layer/mvt-layer.ts +25 -15
  72. package/src/terrain-layer/terrain-layer.ts +13 -3
  73. package/src/tile-layer/tile-layer.ts +8 -9
  74. package/src/tileset-2d/tile-2d-header.ts +2 -1
  75. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  76. package/src/tileset-2d/tileset-2d.ts +7 -3
  77. package/src/tileset-2d/utils.ts +2 -2
  78. package/src/wms-layer/wms-layer.ts +1 -1
  79. package/dist/es5/geo-cell-layer/GeoCellLayer.js +0 -118
  80. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +0 -1
  81. package/dist/es5/geohash-layer/geohash-layer.js +0 -67
  82. package/dist/es5/geohash-layer/geohash-layer.js.map +0 -1
  83. package/dist/es5/geohash-layer/geohash-utils.js +0 -77
  84. package/dist/es5/geohash-layer/geohash-utils.js.map +0 -1
  85. package/dist/es5/great-circle-layer/great-circle-layer.js +0 -48
  86. package/dist/es5/great-circle-layer/great-circle-layer.js.map +0 -1
  87. package/dist/es5/h3-layers/h3-cluster-layer.js +0 -162
  88. package/dist/es5/h3-layers/h3-cluster-layer.js.map +0 -1
  89. package/dist/es5/h3-layers/h3-hexagon-layer.js +0 -351
  90. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +0 -1
  91. package/dist/es5/h3-layers/h3-utils.js +0 -111
  92. package/dist/es5/h3-layers/h3-utils.js.map +0 -1
  93. package/dist/es5/index.js +0 -132
  94. package/dist/es5/index.js.map +0 -1
  95. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +0 -9
  96. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  97. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +0 -9
  98. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  99. package/dist/es5/mesh-layer/mesh-layer.js +0 -217
  100. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  101. package/dist/es5/mvt-layer/coordinate-transform.js +0 -83
  102. package/dist/es5/mvt-layer/coordinate-transform.js.map +0 -1
  103. package/dist/es5/mvt-layer/find-index-binary.js +0 -127
  104. package/dist/es5/mvt-layer/find-index-binary.js.map +0 -1
  105. package/dist/es5/mvt-layer/mvt-layer.js +0 -533
  106. package/dist/es5/mvt-layer/mvt-layer.js.map +0 -1
  107. package/dist/es5/quadkey-layer/quadkey-layer.js +0 -72
  108. package/dist/es5/quadkey-layer/quadkey-layer.js.map +0 -1
  109. package/dist/es5/quadkey-layer/quadkey-utils.js +0 -53
  110. package/dist/es5/quadkey-layer/quadkey-utils.js.map +0 -1
  111. package/dist/es5/s2-layer/s2-geometry.js +0 -158
  112. package/dist/es5/s2-layer/s2-geometry.js.map +0 -1
  113. package/dist/es5/s2-layer/s2-layer.js +0 -67
  114. package/dist/es5/s2-layer/s2-layer.js.map +0 -1
  115. package/dist/es5/s2-layer/s2-utils.js +0 -80
  116. package/dist/es5/s2-layer/s2-utils.js.map +0 -1
  117. package/dist/es5/terrain-layer/terrain-layer.js +0 -347
  118. package/dist/es5/terrain-layer/terrain-layer.js.map +0 -1
  119. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -511
  120. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  121. package/dist/es5/tile-layer/tile-layer.js +0 -363
  122. package/dist/es5/tile-layer/tile-layer.js.map +0 -1
  123. package/dist/es5/tileset-2d/index.js +0 -66
  124. package/dist/es5/tileset-2d/index.js.map +0 -1
  125. package/dist/es5/tileset-2d/memoize.js +0 -47
  126. package/dist/es5/tileset-2d/memoize.js.map +0 -1
  127. package/dist/es5/tileset-2d/tile-2d-header.js +0 -250
  128. package/dist/es5/tileset-2d/tile-2d-header.js.map +0 -1
  129. package/dist/es5/tileset-2d/tile-2d-traversal.js +0 -256
  130. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +0 -1
  131. package/dist/es5/tileset-2d/tileset-2d.js +0 -757
  132. package/dist/es5/tileset-2d/tileset-2d.js.map +0 -1
  133. package/dist/es5/tileset-2d/types.js +0 -2
  134. package/dist/es5/tileset-2d/types.js.map +0 -1
  135. package/dist/es5/tileset-2d/utils.js +0 -302
  136. package/dist/es5/tileset-2d/utils.js.map +0 -1
  137. package/dist/es5/trips-layer/trips-layer.js +0 -114
  138. package/dist/es5/trips-layer/trips-layer.js.map +0 -1
  139. package/dist/es5/wms-layer/utils.js +0 -18
  140. package/dist/es5/wms-layer/utils.js.map +0 -1
  141. package/dist/es5/wms-layer/wms-layer.js +0 -376
  142. package/dist/es5/wms-layer/wms-layer.js.map +0 -1
  143. package/dist/esm/geo-cell-layer/GeoCellLayer.js +0 -72
  144. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +0 -1
  145. package/dist/esm/geohash-layer/geohash-layer.js +0 -26
  146. package/dist/esm/geohash-layer/geohash-layer.js.map +0 -1
  147. package/dist/esm/geohash-layer/geohash-utils.js +0 -56
  148. package/dist/esm/geohash-layer/geohash-utils.js.map +0 -1
  149. package/dist/esm/great-circle-layer/great-circle-layer.js +0 -12
  150. package/dist/esm/great-circle-layer/great-circle-layer.js.map +0 -1
  151. package/dist/esm/h3-layers/h3-cluster-layer.js +0 -79
  152. package/dist/esm/h3-layers/h3-cluster-layer.js.map +0 -1
  153. package/dist/esm/h3-layers/h3-hexagon-layer.js +0 -280
  154. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +0 -1
  155. package/dist/esm/h3-layers/h3-utils.js +0 -54
  156. package/dist/esm/h3-layers/h3-utils.js.map +0 -1
  157. package/dist/esm/index.js +0 -17
  158. package/dist/esm/index.js.map +0 -1
  159. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  160. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  161. package/dist/esm/mesh-layer/mesh-layer.js +0 -178
  162. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  163. package/dist/esm/mvt-layer/coordinate-transform.js +0 -49
  164. package/dist/esm/mvt-layer/coordinate-transform.js.map +0 -1
  165. package/dist/esm/mvt-layer/find-index-binary.js +0 -99
  166. package/dist/esm/mvt-layer/find-index-binary.js.map +0 -1
  167. package/dist/esm/mvt-layer/mvt-layer.js +0 -427
  168. package/dist/esm/mvt-layer/mvt-layer.js.map +0 -1
  169. package/dist/esm/quadkey-layer/quadkey-layer.js +0 -31
  170. package/dist/esm/quadkey-layer/quadkey-layer.js.map +0 -1
  171. package/dist/esm/quadkey-layer/quadkey-utils.js +0 -24
  172. package/dist/esm/quadkey-layer/quadkey-utils.js.map +0 -1
  173. package/dist/esm/s2-layer/s2-geometry.js +0 -126
  174. package/dist/esm/s2-layer/s2-geometry.js.map +0 -1
  175. package/dist/esm/s2-layer/s2-layer.js +0 -26
  176. package/dist/esm/s2-layer/s2-layer.js.map +0 -1
  177. package/dist/esm/s2-layer/s2-utils.js +0 -69
  178. package/dist/esm/s2-layer/s2-utils.js.map +0 -1
  179. package/dist/esm/terrain-layer/terrain-layer.js +0 -292
  180. package/dist/esm/terrain-layer/terrain-layer.js.map +0 -1
  181. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -438
  182. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  183. package/dist/esm/tile-layer/tile-layer.js +0 -299
  184. package/dist/esm/tile-layer/tile-layer.js.map +0 -1
  185. package/dist/esm/tileset-2d/index.js +0 -4
  186. package/dist/esm/tileset-2d/index.js.map +0 -1
  187. package/dist/esm/tileset-2d/memoize.js +0 -40
  188. package/dist/esm/tileset-2d/memoize.js.map +0 -1
  189. package/dist/esm/tileset-2d/tile-2d-header.js +0 -179
  190. package/dist/esm/tileset-2d/tile-2d-header.js.map +0 -1
  191. package/dist/esm/tileset-2d/tile-2d-traversal.js +0 -184
  192. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +0 -1
  193. package/dist/esm/tileset-2d/tileset-2d.js +0 -509
  194. package/dist/esm/tileset-2d/tileset-2d.js.map +0 -1
  195. package/dist/esm/tileset-2d/types.js +0 -2
  196. package/dist/esm/tileset-2d/types.js.map +0 -1
  197. package/dist/esm/tileset-2d/utils.js +0 -233
  198. package/dist/esm/tileset-2d/utils.js.map +0 -1
  199. package/dist/esm/trips-layer/trips-layer.js +0 -88
  200. package/dist/esm/trips-layer/trips-layer.js.map +0 -1
  201. package/dist/esm/wms-layer/utils.js +0 -9
  202. package/dist/esm/wms-layer/utils.js.map +0 -1
  203. package/dist/esm/wms-layer/wms-layer.js +0 -231
  204. package/dist/esm/wms-layer/wms-layer.js.map +0 -1
  205. package/typed/geohash-layer/geohash-layer.d.ts.map +0 -1
  206. package/typed/h3-layers/h3-cluster-layer.d.ts.map +0 -1
  207. package/typed/index.d.ts +0 -31
  208. package/typed/index.d.ts.map +0 -1
  209. package/typed/mvt-layer/find-index-binary.d.ts +0 -12
  210. package/typed/mvt-layer/find-index-binary.d.ts.map +0 -1
  211. package/typed/mvt-layer/mvt-layer.d.ts.map +0 -1
  212. package/typed/quadkey-layer/quadkey-layer.d.ts.map +0 -1
  213. package/typed/s2-layer/s2-layer.d.ts.map +0 -1
  214. package/typed/terrain-layer/terrain-layer.d.ts.map +0 -1
  215. package/typed/tile-layer/tile-layer.d.ts.map +0 -1
  216. package/typed/tileset-2d/index.d.ts +0 -7
  217. package/typed/tileset-2d/index.d.ts.map +0 -1
  218. package/typed/tileset-2d/tile-2d-header.d.ts.map +0 -1
  219. package/typed/tileset-2d/tile-2d-traversal.d.ts +0 -4
  220. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +0 -1
  221. package/typed/tileset-2d/tileset-2d.d.ts.map +0 -1
  222. package/typed/tileset-2d/utils.d.ts.map +0 -1
  223. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts +0 -0
  224. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts.map +0 -0
  225. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts +0 -0
  226. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts.map +0 -0
  227. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts +0 -0
  228. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts.map +0 -0
  229. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts +0 -0
  230. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts.map +0 -0
  231. /package/{typed → dist}/h3-layers/h3-utils.d.ts +0 -0
  232. /package/{typed → dist}/h3-layers/h3-utils.d.ts.map +0 -0
  233. /package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts +0 -0
  234. /package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +0 -0
  235. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts +0 -0
  236. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +0 -0
  237. /package/{typed → dist}/mesh-layer/mesh-layer.d.ts +0 -0
  238. /package/{typed → dist}/mesh-layer/mesh-layer.d.ts.map +0 -0
  239. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts +0 -0
  240. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts.map +0 -0
  241. /package/{typed → dist}/s2-layer/s2-geometry.d.ts +0 -0
  242. /package/{typed → dist}/s2-layer/s2-geometry.d.ts.map +0 -0
  243. /package/{typed → dist}/s2-layer/s2-utils.d.ts +0 -0
  244. /package/{typed → dist}/s2-layer/s2-utils.d.ts.map +0 -0
  245. /package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts +0 -0
  246. /package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts.map +0 -0
  247. /package/{typed → dist}/tileset-2d/memoize.d.ts +0 -0
  248. /package/{typed → dist}/tileset-2d/memoize.d.ts.map +0 -0
  249. /package/{typed → dist}/tileset-2d/types.d.ts +0 -0
  250. /package/{typed → dist}/tileset-2d/types.d.ts.map +0 -0
  251. /package/{typed → dist}/trips-layer/trips-layer.d.ts +0 -0
  252. /package/{typed → dist}/trips-layer/trips-layer.d.ts.map +0 -0
  253. /package/{typed → dist}/wms-layer/utils.d.ts +0 -0
  254. /package/{typed → dist}/wms-layer/utils.d.ts.map +0 -0
  255. /package/{typed → dist}/wms-layer/wms-layer.d.ts +0 -0
  256. /package/{typed → dist}/wms-layer/wms-layer.d.ts.map +0 -0
@@ -1,79 +0,0 @@
1
- import { cellsToMultiPolygon } from 'h3-js';
2
- import { createIterable } from '@deck.gl/core';
3
- import { default as H3HexagonLayer } from './h3-hexagon-layer';
4
- import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
5
- import { normalizeLongitudes } from './h3-utils';
6
- const defaultProps = {
7
- getHexagons: {
8
- type: 'accessor',
9
- value: d => d.hexagons
10
- }
11
- };
12
- export default class H3ClusterLayer extends GeoCellLayer {
13
- constructor(...args) {
14
- super(...args);
15
- this.state = void 0;
16
- }
17
-
18
- initializeState() {
19
- H3HexagonLayer._checkH3Lib();
20
- }
21
-
22
- updateState({
23
- props,
24
- changeFlags
25
- }) {
26
- if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagons) {
27
- const {
28
- data,
29
- getHexagons
30
- } = props;
31
- const polygons = [];
32
- const {
33
- iterable,
34
- objectInfo
35
- } = createIterable(data);
36
-
37
- for (const object of iterable) {
38
- objectInfo.index++;
39
- const hexagons = getHexagons(object, objectInfo);
40
- const multiPolygon = cellsToMultiPolygon(hexagons, true);
41
-
42
- for (const polygon of multiPolygon) {
43
- for (const ring of polygon) {
44
- normalizeLongitudes(ring);
45
- }
46
-
47
- polygons.push(this.getSubLayerRow({
48
- polygon
49
- }, object, objectInfo.index));
50
- }
51
- }
52
-
53
- this.setState({
54
- polygons
55
- });
56
- }
57
- }
58
-
59
- indexToBounds() {
60
- const {
61
- getElevation,
62
- getFillColor,
63
- getLineColor,
64
- getLineWidth
65
- } = this.props;
66
- return {
67
- data: this.state.polygons,
68
- getPolygon: d => d.polygon,
69
- getElevation: this.getSubLayerAccessor(getElevation),
70
- getFillColor: this.getSubLayerAccessor(getFillColor),
71
- getLineColor: this.getSubLayerAccessor(getLineColor),
72
- getLineWidth: this.getSubLayerAccessor(getLineWidth)
73
- };
74
- }
75
-
76
- }
77
- H3ClusterLayer.layerName = 'H3ClusterLayer';
78
- H3ClusterLayer.defaultProps = defaultProps;
79
- //# sourceMappingURL=h3-cluster-layer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/h3-layers/h3-cluster-layer.ts"],"names":["cellsToMultiPolygon","createIterable","default","H3HexagonLayer","GeoCellLayer","normalizeLongitudes","defaultProps","getHexagons","type","value","d","hexagons","H3ClusterLayer","state","initializeState","_checkH3Lib","updateState","props","changeFlags","dataChanged","updateTriggersChanged","data","polygons","iterable","objectInfo","object","index","multiPolygon","polygon","ring","push","getSubLayerRow","setState","indexToBounds","getElevation","getFillColor","getLineColor","getLineWidth","getPolygon","getSubLayerAccessor","layerName"],"mappings":"AAAA,SAAQA,mBAAR,QAAgD,OAAhD;AAEA,SAA0BC,cAA1B,QAA+E,eAA/E;AACA,SAAQC,OAAO,IAAIC,cAAnB,QAAwC,oBAAxC;AACA,OAAOC,YAAP,MAA8C,gCAA9C;AACA,SAAQC,mBAAR,QAAkC,YAAlC;AAEA,MAAMC,YAA+C,GAAG;AACtDC,EAAAA,WAAW,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAGC,CAAD,IAAYA,CAAC,CAACC;AAAxC;AADyC,CAAxD;AAkBA,eAAe,MAAMC,cAAN,SAAsER,YAAtE,CAGb;AAAA;AAAA;AAAA,SAIAS,KAJA;AAAA;;AAQAC,EAAAA,eAAe,GAAS;AACtBX,IAAAA,cAAc,CAACY,WAAf;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACC,IAAAA,KAAD;AAAQC,IAAAA;AAAR,GAAD,EAAqD;AAC9D,QACEA,WAAW,CAACC,WAAZ,IACCD,WAAW,CAACE,qBAAZ,IAAqCF,WAAW,CAACE,qBAAZ,CAAkCb,WAF1E,EAGE;AACA,YAAM;AAACc,QAAAA,IAAD;AAAOd,QAAAA;AAAP,UAAsBU,KAA5B;AACA,YAAMK,QAAmC,GAAG,EAA5C;AAEA,YAAM;AAACC,QAAAA,QAAD;AAAWC,QAAAA;AAAX,UAAyBvB,cAAc,CAACoB,IAAD,CAA7C;;AACA,WAAK,MAAMI,MAAX,IAAqBF,QAArB,EAA+B;AAC7BC,QAAAA,UAAU,CAACE,KAAX;AACA,cAAMf,QAAQ,GAAGJ,WAAW,CAACkB,MAAD,EAASD,UAAT,CAA5B;AACA,cAAMG,YAAY,GAAG3B,mBAAmB,CAACW,QAAD,EAAW,IAAX,CAAxC;;AAEA,aAAK,MAAMiB,OAAX,IAAsBD,YAAtB,EAAoC;AAElC,eAAK,MAAME,IAAX,IAAmBD,OAAnB,EAA4B;AAC1BvB,YAAAA,mBAAmB,CAACwB,IAAD,CAAnB;AACD;;AACDP,UAAAA,QAAQ,CAACQ,IAAT,CAAc,KAAKC,cAAL,CAAoB;AAACH,YAAAA;AAAD,WAApB,EAA+BH,MAA/B,EAAuCD,UAAU,CAACE,KAAlD,CAAd;AACD;AACF;;AAED,WAAKM,QAAL,CAAc;AAACV,QAAAA;AAAD,OAAd;AACD;AACF;;AAEDW,EAAAA,aAAa,GAAmC;AAC9C,UAAM;AAACC,MAAAA,YAAD;AAAeC,MAAAA,YAAf;AAA6BC,MAAAA,YAA7B;AAA2CC,MAAAA;AAA3C,QAA2D,KAAKpB,KAAtE;AAEA,WAAO;AACLI,MAAAA,IAAI,EAAE,KAAKR,KAAL,CAAWS,QADZ;AAELgB,MAAAA,UAAU,EAAE5B,CAAC,IAAIA,CAAC,CAACkB,OAFd;AAILM,MAAAA,YAAY,EAAE,KAAKK,mBAAL,CAAyBL,YAAzB,CAJT;AAKLC,MAAAA,YAAY,EAAE,KAAKI,mBAAL,CAAyBJ,YAAzB,CALT;AAMLC,MAAAA,YAAY,EAAE,KAAKG,mBAAL,CAAyBH,YAAzB,CANT;AAOLC,MAAAA,YAAY,EAAE,KAAKE,mBAAL,CAAyBF,YAAzB;AAPT,KAAP;AASD;;AAnDD;AAHmBzB,c,CAIZ4B,S,GAAY,gB;AAJA5B,c,CAKZN,Y,GAAeA,Y","sourcesContent":["import {cellsToMultiPolygon, H3IndexInput} from 'h3-js';\n\nimport {AccessorFunction, createIterable, UpdateParameters, DefaultProps} from '@deck.gl/core';\nimport {default as H3HexagonLayer} from './h3-hexagon-layer';\nimport GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';\nimport {normalizeLongitudes} from './h3-utils';\n\nconst defaultProps: DefaultProps<H3ClusterLayerProps> = {\n getHexagons: {type: 'accessor', value: (d: any) => d.hexagons}\n};\n\n/** All properties supported by H3ClusterLayer. */\nexport type H3ClusterLayerProps<DataT = unknown> = _H3ClusterLayerProps<DataT> &\n GeoCellLayerProps<DataT>;\n\n/** Properties added by H3ClusterLayer. */\ntype _H3ClusterLayerProps<DataT> = {\n /**\n * Called for each data object to retrieve the hexagon identifiers.\n *\n * By default, it reads `hexagons` property of data object.\n */\n getHexagons?: AccessorFunction<DataT, H3IndexInput[]>;\n};\n\nexport default class H3ClusterLayer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<\n DataT,\n Required<_H3ClusterLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'H3ClusterLayer';\n static defaultProps = defaultProps;\n\n state!: {\n polygons: {polygon: number[][][]}[];\n };\n\n initializeState(): void {\n H3HexagonLayer._checkH3Lib();\n }\n\n updateState({props, changeFlags}: UpdateParameters<this>): void {\n if (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagons)\n ) {\n const {data, getHexagons} = props;\n const polygons: {polygon: number[][][]}[] = [];\n\n const {iterable, objectInfo} = createIterable(data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexagons = getHexagons(object, objectInfo);\n const multiPolygon = cellsToMultiPolygon(hexagons, true);\n\n for (const polygon of multiPolygon) {\n // Normalize polygons to prevent wrapping over the anti-meridian\n for (const ring of polygon) {\n normalizeLongitudes(ring);\n }\n polygons.push(this.getSubLayerRow({polygon}, object, objectInfo.index));\n }\n }\n\n this.setState({polygons});\n }\n }\n\n indexToBounds(): Partial<GeoCellLayer['props']> {\n const {getElevation, getFillColor, getLineColor, getLineWidth} = this.props;\n\n return {\n data: this.state.polygons,\n getPolygon: d => d.polygon,\n\n getElevation: this.getSubLayerAccessor(getElevation),\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n getLineWidth: this.getSubLayerAccessor(getLineWidth)\n };\n }\n}\n"],"file":"h3-cluster-layer.js"}
@@ -1,280 +0,0 @@
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';
5
- const UPDATE_THRESHOLD_KM = 10;
6
-
7
- function mergeTriggers(getHexagon, coverage) {
8
- let trigger;
9
-
10
- if (getHexagon === undefined || getHexagon === null) {
11
- trigger = coverage;
12
- } else if (typeof getHexagon === 'object') {
13
- trigger = { ...getHexagon,
14
- coverage
15
- };
16
- } else {
17
- trigger = {
18
- getHexagon,
19
- coverage
20
- };
21
- }
22
-
23
- return trigger;
24
- }
25
-
26
- const defaultProps = { ...PolygonLayer.defaultProps,
27
- highPrecision: 'auto',
28
- coverage: {
29
- type: 'number',
30
- min: 0,
31
- max: 1,
32
- value: 1
33
- },
34
- centerHexagon: null,
35
- getHexagon: {
36
- type: 'accessor',
37
- value: x => x.hexagon
38
- },
39
- extruded: true
40
- };
41
- export default class H3HexagonLayer extends CompositeLayer {
42
- constructor(...args) {
43
- super(...args);
44
- this.state = void 0;
45
- }
46
-
47
- initializeState() {
48
- H3HexagonLayer._checkH3Lib();
49
-
50
- this.state = {
51
- edgeLengthKM: 0,
52
- resolution: -1
53
- };
54
- }
55
-
56
- shouldUpdateState({
57
- changeFlags
58
- }) {
59
- return this._shouldUseHighPrecision() ? changeFlags.propsOrDataChanged : changeFlags.somethingChanged;
60
- }
61
-
62
- updateState({
63
- props,
64
- changeFlags
65
- }) {
66
- if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon)) {
67
- const dataProps = this._calculateH3DataProps();
68
-
69
- this.setState(dataProps);
70
- }
71
-
72
- this._updateVertices(this.context.viewport);
73
- }
74
-
75
- _calculateH3DataProps() {
76
- let resolution = -1;
77
- let hasPentagon = false;
78
- let hasMultipleRes = false;
79
- const {
80
- iterable,
81
- objectInfo
82
- } = createIterable(this.props.data);
83
-
84
- for (const object of iterable) {
85
- objectInfo.index++;
86
- const hexId = this.props.getHexagon(object, objectInfo);
87
- const hexResolution = getResolution(hexId);
88
-
89
- if (resolution < 0) {
90
- resolution = hexResolution;
91
- if (!this.props.highPrecision) break;
92
- } else if (resolution !== hexResolution) {
93
- hasMultipleRes = true;
94
- break;
95
- }
96
-
97
- if (isPentagon(hexId)) {
98
- hasPentagon = true;
99
- break;
100
- }
101
- }
102
-
103
- return {
104
- resolution,
105
- edgeLengthKM: resolution >= 0 ? getHexagonEdgeLengthAvg(resolution, 'km') : 0,
106
- hasMultipleRes,
107
- hasPentagon
108
- };
109
- }
110
-
111
- _shouldUseHighPrecision() {
112
- if (this.props.highPrecision === 'auto') {
113
- const {
114
- resolution,
115
- hasPentagon,
116
- hasMultipleRes
117
- } = this.state;
118
- const {
119
- viewport
120
- } = this.context;
121
- return Boolean(viewport === null || viewport === void 0 ? void 0 : viewport.resolution) || hasMultipleRes || hasPentagon || resolution >= 0 && resolution <= 5;
122
- }
123
-
124
- return this.props.highPrecision;
125
- }
126
-
127
- _updateVertices(viewport) {
128
- if (this._shouldUseHighPrecision()) {
129
- return;
130
- }
131
-
132
- const {
133
- resolution,
134
- edgeLengthKM,
135
- centerHex
136
- } = this.state;
137
-
138
- if (resolution < 0) {
139
- return;
140
- }
141
-
142
- const hex = this.props.centerHexagon || latLngToCell(viewport.latitude, viewport.longitude, resolution);
143
-
144
- if (centerHex === hex) {
145
- return;
146
- }
147
-
148
- if (centerHex) {
149
- try {
150
- const distance = gridDistance(centerHex, hex);
151
-
152
- if (distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {
153
- return;
154
- }
155
- } catch {}
156
- }
157
-
158
- const {
159
- unitsPerMeter
160
- } = viewport.distanceScales;
161
- let vertices = h3ToPolygon(hex);
162
- const [centerLat, centerLng] = cellToLatLng(hex);
163
- const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);
164
- vertices = vertices.map(p => {
165
- const worldPosition = viewport.projectFlat(p);
166
- return [(worldPosition[0] - centerX) / unitsPerMeter[0], (worldPosition[1] - centerY) / unitsPerMeter[1]];
167
- });
168
- this.setState({
169
- centerHex: hex,
170
- vertices
171
- });
172
- }
173
-
174
- renderLayers() {
175
- return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();
176
- }
177
-
178
- _getForwardProps() {
179
- const {
180
- elevationScale,
181
- material,
182
- coverage,
183
- extruded,
184
- wireframe,
185
- stroked,
186
- filled,
187
- lineWidthUnits,
188
- lineWidthScale,
189
- lineWidthMinPixels,
190
- lineWidthMaxPixels,
191
- getFillColor,
192
- getElevation,
193
- getLineColor,
194
- getLineWidth,
195
- transitions,
196
- updateTriggers
197
- } = this.props;
198
- return {
199
- elevationScale,
200
- extruded,
201
- coverage,
202
- wireframe,
203
- stroked,
204
- filled,
205
- lineWidthUnits,
206
- lineWidthScale,
207
- lineWidthMinPixels,
208
- lineWidthMaxPixels,
209
- material,
210
- getElevation,
211
- getFillColor,
212
- getLineColor,
213
- getLineWidth,
214
- transitions,
215
- updateTriggers: {
216
- getFillColor: updateTriggers.getFillColor,
217
- getElevation: updateTriggers.getElevation,
218
- getLineColor: updateTriggers.getLineColor,
219
- getLineWidth: updateTriggers.getLineWidth
220
- }
221
- };
222
- }
223
-
224
- _renderPolygonLayer() {
225
- const {
226
- data,
227
- getHexagon,
228
- updateTriggers,
229
- coverage
230
- } = this.props;
231
- const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);
232
-
233
- const forwardProps = this._getForwardProps();
234
-
235
- forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);
236
- return new SubLayerClass(forwardProps, this.getSubLayerProps({
237
- id: 'hexagon-cell-hifi',
238
- updateTriggers: forwardProps.updateTriggers
239
- }), {
240
- data,
241
- _normalize: false,
242
- _windingOrder: 'CCW',
243
- positionFormat: 'XY',
244
- getPolygon: (object, objectInfo) => {
245
- const hexagonId = getHexagon(object, objectInfo);
246
- return flattenPolygon(h3ToPolygon(hexagonId, coverage));
247
- }
248
- });
249
- }
250
-
251
- _renderColumnLayer() {
252
- const {
253
- data,
254
- getHexagon,
255
- updateTriggers
256
- } = this.props;
257
- const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);
258
-
259
- const forwardProps = this._getForwardProps();
260
-
261
- forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;
262
- return new SubLayerClass(forwardProps, this.getSubLayerProps({
263
- id: 'hexagon-cell',
264
- flatShading: true,
265
- updateTriggers: forwardProps.updateTriggers
266
- }), {
267
- data,
268
- diskResolution: 6,
269
- radius: 1,
270
- vertices: this.state.vertices,
271
- getPosition: getHexagonCentroid.bind(null, getHexagon)
272
- });
273
- }
274
-
275
- }
276
- H3HexagonLayer.defaultProps = defaultProps;
277
- H3HexagonLayer.layerName = 'H3HexagonLayer';
278
-
279
- H3HexagonLayer._checkH3Lib = () => {};
280
- //# sourceMappingURL=h3-hexagon-layer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.ts"],"names":["getResolution","cellToLatLng","latLngToCell","isPentagon","gridDistance","getHexagonEdgeLengthAvg","CompositeLayer","createIterable","ColumnLayer","PolygonLayer","flattenPolygon","getHexagonCentroid","h3ToPolygon","UPDATE_THRESHOLD_KM","mergeTriggers","getHexagon","coverage","trigger","undefined","defaultProps","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","H3HexagonLayer","state","initializeState","_checkH3Lib","edgeLengthKM","resolution","shouldUpdateState","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","updateState","props","dataChanged","updateTriggersChanged","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","hasPentagon","hasMultipleRes","iterable","objectInfo","data","object","index","hexId","hexResolution","Boolean","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","vertices","centerLat","centerLng","centerX","centerY","projectFlat","map","p","worldPosition","renderLayers","_renderPolygonLayer","_renderColumnLayer","_getForwardProps","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","updateTriggers","SubLayerClass","getSubLayerClass","forwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","hexagonId","getPosition","flatShading","diskResolution","radius","bind","layerName"],"mappings":"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","sourcesContent":["import {\n getResolution,\n cellToLatLng,\n latLngToCell,\n isPentagon,\n gridDistance,\n getHexagonEdgeLengthAvg,\n H3Index\n} from 'h3-js';\nimport {\n AccessorFunction,\n CompositeLayer,\n createIterable,\n Layer,\n LayersList,\n UpdateParameters,\n WebMercatorViewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\nimport {flattenPolygon, getHexagonCentroid, h3ToPolygon} from './h3-utils';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps: DefaultProps<H3HexagonLayerProps> = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: (x: any) => x.hexagon},\n extruded: true\n};\n\n/** All properties supported by H3HexagonLayer */\nexport type H3HexagonLayerProps<DataT = unknown> = _H3HexagonLayerProps<DataT> &\n PolygonLayerProps<DataT>;\n\n/** Props added by the H3HexagonLayer */\ntype _H3HexagonLayerProps<DataT> = {\n /**\n * Whether or not draw hexagons with high precision.\n * @default 'auto'\n */\n highPrecision?: boolean | 'auto';\n /**\n * Coverage of hexagon in cell.\n * @default 1\n */\n coverage?: number;\n /**\n * Center hexagon that best represents the shape of the set. If not specified, the hexagon closest to the center of the viewport is used.\n */\n centerHexagon?: H3Index | null;\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `hexagon` property of data object.\n */\n getHexagon?: AccessorFunction<DataT, string>;\n /**\n * Whether to extrude polygons.\n * @default true\n */\n extruded?: boolean;\n};\n\n/**\n * Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.\n */\nexport default class H3HexagonLayer<\n DataT = any,\n ExtraPropsT extends {} = {}\n> extends CompositeLayer<ExtraPropsT & Required<H3HexagonLayerProps<DataT>>> {\n static defaultProps = defaultProps;\n static layerName = 'H3HexagonLayer';\n\n // See `main/bundle.ts`\n static _checkH3Lib = () => {};\n\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n this.state = {\n edgeLengthKM: 0,\n resolution: -1\n };\n }\n\n state!: {\n centerHex?: H3Index;\n edgeLengthKM: number;\n hasMultipleRes?: boolean;\n hasPentagon?: boolean;\n resolution: number;\n vertices?: number[][];\n };\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}: UpdateParameters<this>): void {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps();\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport as WebMercatorViewport);\n }\n\n private _calculateH3DataProps() {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(this.props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = this.props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = getResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!this.props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (isPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? getHexagonEdgeLengthAvg(resolution, 'km') : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n private _shouldUseHighPrecision(): boolean {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n Boolean(viewport?.resolution) ||\n hasMultipleRes ||\n hasPentagon ||\n (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n private _updateVertices(viewport: WebMercatorViewport): void {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || latLngToCell(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n try {\n const distance = gridDistance(centerHex, hex);\n if (distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n } catch {\n // gridDistance throws if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = cellToLatLng(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers(): Layer | null | LayersList {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n private _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n } as {\n getFillColor: any;\n getElevation: any;\n getLineColor: any;\n getLineWidth: any;\n getPolygon?: any;\n getPosition?: any;\n }\n };\n }\n\n private _renderPolygonLayer(): PolygonLayer {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return flattenPolygon(h3ToPolygon(hexagonId, coverage));\n }\n }\n );\n }\n\n private _renderColumnLayer(): ColumnLayer {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n flatShading: true,\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n"],"file":"h3-hexagon-layer.js"}
@@ -1,54 +0,0 @@
1
- import { cellToBoundary, cellToLatLng } from 'h3-js';
2
- import { lerp } from '@math.gl/core';
3
- export function normalizeLongitudes(vertices, refLng) {
4
- refLng = refLng === undefined ? vertices[0][0] : refLng;
5
-
6
- for (const pt of vertices) {
7
- const deltaLng = pt[0] - refLng;
8
-
9
- if (deltaLng > 180) {
10
- pt[0] -= 360;
11
- } else if (deltaLng < -180) {
12
- pt[0] += 360;
13
- }
14
- }
15
- }
16
- export function scalePolygon(hexId, vertices, factor) {
17
- const [lat, lng] = cellToLatLng(hexId);
18
- const actualCount = vertices.length;
19
- normalizeLongitudes(vertices, lng);
20
- const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
21
-
22
- for (let i = 0; i < vertexCount; i++) {
23
- vertices[i][0] = lerp(lng, vertices[i][0], factor);
24
- vertices[i][1] = lerp(lat, vertices[i][1], factor);
25
- }
26
- }
27
- export function getHexagonCentroid(getHexagon, object, objectInfo) {
28
- const hexagonId = getHexagon(object, objectInfo);
29
- const [lat, lng] = cellToLatLng(hexagonId);
30
- return [lng, lat];
31
- }
32
- export function h3ToPolygon(hexId, coverage = 1) {
33
- const vertices = cellToBoundary(hexId, true);
34
-
35
- if (coverage !== 1) {
36
- scalePolygon(hexId, vertices, coverage);
37
- } else {
38
- normalizeLongitudes(vertices);
39
- }
40
-
41
- return vertices;
42
- }
43
- export function flattenPolygon(vertices) {
44
- const positions = new Float64Array(vertices.length * 2);
45
- let i = 0;
46
-
47
- for (const pt of vertices) {
48
- positions[i++] = pt[0];
49
- positions[i++] = pt[1];
50
- }
51
-
52
- return positions;
53
- }
54
- //# sourceMappingURL=h3-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/h3-layers/h3-utils.ts"],"names":["cellToBoundary","cellToLatLng","lerp","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flattenPolygon","positions","Float64Array"],"mappings":"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","sourcesContent":["import {CoordPair, H3IndexInput, cellToBoundary, cellToLatLng} from 'h3-js';\nimport {lerp} from '@math.gl/core';\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices: CoordPair[], refLng?: number): void {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId: H3IndexInput, vertices: CoordPair[], factor: number): void {\n const [lat, lng] = cellToLatLng(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `cellToBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\n// gets hexagon centroid\nexport function getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = cellToLatLng(hexagonId);\n return [lng, lat];\n}\n\nexport function h3ToPolygon(hexId: H3IndexInput, coverage: number = 1): number[][] {\n const vertices = cellToBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n return vertices;\n}\n\nexport function flattenPolygon(vertices: number[][]): Float64Array {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n}\n"],"file":"h3-utils.js"}
package/dist/esm/index.js DELETED
@@ -1,17 +0,0 @@
1
- export { WMSLayer as _WMSLayer } from './wms-layer/wms-layer';
2
- export { default as GreatCircleLayer } from './great-circle-layer/great-circle-layer';
3
- export { default as S2Layer } from './s2-layer/s2-layer';
4
- export { default as QuadkeyLayer } from './quadkey-layer/quadkey-layer';
5
- export { default as TileLayer } from './tile-layer/tile-layer';
6
- export { default as TripsLayer } from './trips-layer/trips-layer';
7
- export { default as H3ClusterLayer } from './h3-layers/h3-cluster-layer';
8
- export { default as H3HexagonLayer } from './h3-layers/h3-hexagon-layer';
9
- export { default as Tile3DLayer } from './tile-3d-layer/tile-3d-layer';
10
- export { default as TerrainLayer } from './terrain-layer/terrain-layer';
11
- export { default as MVTLayer } from './mvt-layer/mvt-layer';
12
- export { default as GeohashLayer } from './geohash-layer/geohash-layer';
13
- export { default as _GeoCellLayer } from './geo-cell-layer/GeoCellLayer';
14
- export { getURLFromTemplate as _getURLFromTemplate } from './tileset-2d';
15
- export { Tileset2D as _Tileset2D } from './tileset-2d';
16
- export { Tile2DHeader as _Tile2DHeader } from './tileset-2d';
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["WMSLayer","_WMSLayer","default","GreatCircleLayer","S2Layer","QuadkeyLayer","TileLayer","TripsLayer","H3ClusterLayer","H3HexagonLayer","Tile3DLayer","TerrainLayer","MVTLayer","GeohashLayer","_GeoCellLayer","getURLFromTemplate","_getURLFromTemplate","Tileset2D","_Tileset2D","Tile2DHeader","_Tile2DHeader"],"mappings":"AAqBA,SAAQA,QAAQ,IAAIC,SAApB,QAAoC,uBAApC;AACA,SAAQC,OAAO,IAAIC,gBAAnB,QAA0C,yCAA1C;AACA,SAAQD,OAAO,IAAIE,OAAnB,QAAiC,qBAAjC;AACA,SAAQF,OAAO,IAAIG,YAAnB,QAAsC,+BAAtC;AACA,SAAQH,OAAO,IAAII,SAAnB,QAAmC,yBAAnC;AACA,SAAQJ,OAAO,IAAIK,UAAnB,QAAoC,2BAApC;AACA,SAAQL,OAAO,IAAIM,cAAnB,QAAwC,8BAAxC;AACA,SAAQN,OAAO,IAAIO,cAAnB,QAAwC,8BAAxC;AACA,SAAQP,OAAO,IAAIQ,WAAnB,QAAqC,+BAArC;AACA,SAAQR,OAAO,IAAIS,YAAnB,QAAsC,+BAAtC;AACA,SAAQT,OAAO,IAAIU,QAAnB,QAAkC,uBAAlC;AACA,SAAQV,OAAO,IAAIW,YAAnB,QAAsC,+BAAtC;AAEA,SAAQX,OAAO,IAAIY,aAAnB,QAAuC,+BAAvC;AAqBA,SAAQC,kBAAkB,IAAIC,mBAA9B,QAAwD,cAAxD;AACA,SAAQC,SAAS,IAAIC,UAArB,QAAsC,cAAtC;AACA,SAAQC,YAAY,IAAIC,aAAxB,QAA4C,cAA5C","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable max-len */\n\nexport {WMSLayer as _WMSLayer} from './wms-layer/wms-layer';\nexport {default as GreatCircleLayer} from './great-circle-layer/great-circle-layer';\nexport {default as S2Layer} from './s2-layer/s2-layer';\nexport {default as QuadkeyLayer} from './quadkey-layer/quadkey-layer';\nexport {default as TileLayer} from './tile-layer/tile-layer';\nexport {default as TripsLayer} from './trips-layer/trips-layer';\nexport {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';\nexport {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';\nexport {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';\nexport {default as TerrainLayer} from './terrain-layer/terrain-layer';\nexport {default as MVTLayer} from './mvt-layer/mvt-layer';\nexport {default as GeohashLayer} from './geohash-layer/geohash-layer';\n\nexport {default as _GeoCellLayer} from './geo-cell-layer/GeoCellLayer';\n\n// Types\nexport type {WMSLayerProps} from './wms-layer/wms-layer';\nexport type {H3ClusterLayerProps} from './h3-layers/h3-cluster-layer';\nexport type {H3HexagonLayerProps} from './h3-layers/h3-hexagon-layer';\nexport type {GreatCircleLayerProps} from './great-circle-layer/great-circle-layer';\nexport type {S2LayerProps} from './s2-layer/s2-layer';\nexport type {TileLayerProps} from './tile-layer/tile-layer';\nexport type {TripsLayerProps} from './trips-layer/trips-layer';\nexport type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';\nexport type {TerrainLayerProps} from './terrain-layer/terrain-layer';\nexport type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';\nexport type {MVTLayerProps} from './mvt-layer/mvt-layer';\nexport type {GeoCellLayerProps as _GeoCellLayerProps} from './geo-cell-layer/GeoCellLayer';\n\n// Tileset2D\n\nexport type {GeoBoundingBox, NonGeoBoundingBox} from './tileset-2d';\nexport type {TileLoadProps as _TileLoadProps} from './tileset-2d';\n\nexport {getURLFromTemplate as _getURLFromTemplate} from './tileset-2d';\nexport {Tileset2D as _Tileset2D} from './tileset-2d';\nexport {Tile2DHeader as _Tile2DHeader} from './tileset-2d';\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mesh-layer/mesh-layer-fragment.glsl.ts"],"names":[],"mappings":"AAAA,eAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAtDA","sourcesContent":["export default `#version 300 es\n#define SHADER_NAME simple-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\nuniform sampler2D sampler;\nuniform bool flatShading;\nuniform float opacity;\n\nin vec2 vTexCoord;\nin vec3 cameraPosition;\nin vec3 normals_commonspace;\nin vec4 position_commonspace;\nin vec4 vColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n \n#ifdef MODULE_PBR\n\n fragColor = vColor * pbr_filterColor(vec4(0));\n geometry.uv = pbr_vUV;\n fragColor.a *= opacity;\n\n#else\n\n geometry.uv = vTexCoord;\n\n vec3 normal;\n if (flatShading) {\n\n// NOTE(Tarek): This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec4 color = hasTexture ? texture(sampler, vTexCoord) : vColor;\n vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);\n fragColor = vec4(lightColor, color.a * opacity);\n\n#endif\n\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n`;\n"],"file":"mesh-layer-fragment.glsl.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mesh-layer/mesh-layer-vertex.glsl.ts"],"names":[],"mappings":"AAAA,eAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAnFA","sourcesContent":["export default `#version 300 es\n#define SHADER_NAME simple-mesh-layer-vs\n\n// Scale the model\nuniform float sizeScale;\nuniform bool composeModelMatrix;\nuniform bool pickFeatureIds;\n\n// Primitive attributes\nin vec3 positions;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\nin vec4 uvRegions;\nin vec3 featureIdsPickingColors;\n\n// Instance attributes\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin vec3 instanceModelMatrixCol0;\nin vec3 instanceModelMatrixCol1;\nin vec3 instanceModelMatrixCol2;\n\n// Outputs to fragment shader\nout vec2 vTexCoord;\nout vec3 cameraPosition;\nout vec3 normals_commonspace;\nout vec4 position_commonspace;\nout vec4 vColor;\n\nvec2 applyUVRegion(vec2 uv) {\n #ifdef HAS_UV_REGIONS\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/geometryUVRegion.cmn.md\n return fract(uv) * (uvRegions.zw - uvRegions.xy) + uvRegions.xy;\n #else\n return uv;\n #endif\n}\n\nvoid main(void) {\n vec2 uv = applyUVRegion(texCoords);\n geometry.uv = uv;\n\n if (pickFeatureIds) {\n geometry.pickingColor = featureIdsPickingColors;\n } else {\n geometry.pickingColor = instancePickingColors;\n }\n\n mat3 instanceModelMatrix = mat3(instanceModelMatrixCol0, instanceModelMatrixCol1, instanceModelMatrixCol2);\n\n vTexCoord = uv;\n cameraPosition = project_uCameraPosition;\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale;\n vec3 projectedPosition = project_position(positions);\n position_commonspace = vec4(projectedPosition, 1.0);\n gl_Position = project_common_position_to_clipspace(position_commonspace);\n\n geometry.position = position_commonspace;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n geometry.normal = normals_commonspace;\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n #ifdef MODULE_PBR\n // set PBR data\n pbr_vPosition = geometry.position.xyz;\n #ifdef HAS_NORMALS\n pbr_vNormal = geometry.normal;\n #endif\n\n #ifdef HAS_UV\n pbr_vUV = uv;\n #else\n pbr_vUV = vec2(0., 0.);\n #endif\n geometry.uv = pbr_vUV;\n #endif\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n"],"file":"mesh-layer-vertex.glsl.js"}