@deck.gl/geo-layers 8.7.0-alpha.2 → 8.7.0-alpha.9

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 (71) hide show
  1. package/dist/dist.dev.js +7720 -4401
  2. package/dist/es5/great-circle-layer/great-circle-layer.js +26 -1
  3. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  4. package/dist/es5/h3-layers/h3-cluster-layer.js +149 -87
  5. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  6. package/dist/es5/h3-layers/h3-hexagon-layer.js +326 -230
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +9 -9
  9. package/dist/es5/index.js.map +1 -1
  10. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  11. package/dist/es5/mesh-layer/mesh-layer.js +153 -132
  12. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  13. package/dist/es5/mvt-layer/coordinate-transform.js +46 -20
  14. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  15. package/dist/es5/mvt-layer/find-index-binary.js +45 -26
  16. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  17. package/dist/es5/mvt-layer/mvt-layer.js +395 -280
  18. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-geometry.js +43 -32
  20. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-layer.js +104 -69
  22. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  23. package/dist/es5/s2-layer/s2-utils.js +27 -28
  24. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  25. package/dist/es5/terrain-layer/terrain-layer.js +250 -208
  26. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  27. package/dist/es5/tile-3d-layer/tile-3d-layer.js +384 -329
  28. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-header.js +182 -118
  30. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-2d-traversal.js +176 -113
  32. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  33. package/dist/es5/tile-layer/tile-layer.js +253 -214
  34. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  35. package/dist/es5/tile-layer/tileset-2d.js +519 -300
  36. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  37. package/dist/es5/tile-layer/utils.js +110 -61
  38. package/dist/es5/tile-layer/utils.js.map +1 -1
  39. package/dist/es5/trips-layer/trips-layer.js +81 -44
  40. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  41. package/dist/esm/h3-layers/h3-hexagon-layer.js +2 -1
  42. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  45. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
  46. package/dist/esm/mesh-layer/mesh-layer.js +2 -8
  47. package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
  48. package/dist/esm/mvt-layer/coordinate-transform.js +1 -1
  49. package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
  50. package/dist/esm/mvt-layer/mvt-layer.js +27 -1
  51. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  52. package/dist/esm/terrain-layer/terrain-layer.js +8 -10
  53. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  54. package/dist/esm/tile-3d-layer/tile-3d-layer.js +2 -1
  55. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  56. package/dist/esm/tile-layer/tile-layer.js +8 -16
  57. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  58. package/dist/esm/tile-layer/tileset-2d.js +85 -79
  59. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  60. package/dist.min.js +2 -2
  61. package/package.json +12 -12
  62. package/src/h3-layers/h3-hexagon-layer.js +2 -1
  63. package/src/{index.js → index.ts} +0 -0
  64. package/src/mesh-layer/mesh-layer-vertex.glsl.js +24 -23
  65. package/src/mesh-layer/mesh-layer.js +5 -4
  66. package/src/mvt-layer/coordinate-transform.js +1 -1
  67. package/src/mvt-layer/mvt-layer.js +17 -1
  68. package/src/terrain-layer/terrain-layer.js +10 -9
  69. package/src/tile-3d-layer/tile-3d-layer.js +10 -2
  70. package/src/tile-layer/tile-layer.js +11 -12
  71. package/src/tile-layer/tileset-2d.js +103 -90
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -7,50 +9,101 @@ exports.normalizeLongitudes = normalizeLongitudes;
7
9
  exports.scalePolygon = scalePolygon;
8
10
  exports.default = void 0;
9
11
 
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
25
+
26
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
27
+
10
28
  var _h3Js = require("h3-js");
11
29
 
12
- var _math = require("math.gl");
30
+ var _core = require("@math.gl/core");
13
31
 
14
- var _core = require("@deck.gl/core");
32
+ var _core2 = require("@deck.gl/core");
15
33
 
16
34
  var _layers = require("@deck.gl/layers");
17
35
 
18
- const UPDATE_THRESHOLD_KM = 10;
36
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
37
+
38
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
+
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
41
+
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
+
44
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
45
+
46
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
47
+
48
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
49
+
50
+ var UPDATE_THRESHOLD_KM = 10;
19
51
 
20
52
  function normalizeLongitudes(vertices, refLng) {
21
53
  refLng = refLng === undefined ? vertices[0][0] : refLng;
22
54
 
23
- for (const pt of vertices) {
24
- const deltaLng = pt[0] - refLng;
55
+ var _iterator = _createForOfIteratorHelper(vertices),
56
+ _step;
25
57
 
26
- if (deltaLng > 180) {
27
- pt[0] -= 360;
28
- } else if (deltaLng < -180) {
29
- pt[0] += 360;
58
+ try {
59
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
60
+ var pt = _step.value;
61
+ var deltaLng = pt[0] - refLng;
62
+
63
+ if (deltaLng > 180) {
64
+ pt[0] -= 360;
65
+ } else if (deltaLng < -180) {
66
+ pt[0] += 360;
67
+ }
30
68
  }
69
+ } catch (err) {
70
+ _iterator.e(err);
71
+ } finally {
72
+ _iterator.f();
31
73
  }
32
74
  }
33
75
 
34
76
  function scalePolygon(hexId, vertices, factor) {
35
- const [lat, lng] = (0, _h3Js.h3ToGeo)(hexId);
36
- const actualCount = vertices.length;
77
+ var _h3ToGeo = (0, _h3Js.h3ToGeo)(hexId),
78
+ _h3ToGeo2 = (0, _slicedToArray2.default)(_h3ToGeo, 2),
79
+ lat = _h3ToGeo2[0],
80
+ lng = _h3ToGeo2[1];
81
+
82
+ var actualCount = vertices.length;
37
83
  normalizeLongitudes(vertices, lng);
38
- const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
84
+ var vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
39
85
 
40
- for (let i = 0; i < vertexCount; i++) {
41
- vertices[i][0] = (0, _math.lerp)(lng, vertices[i][0], factor);
42
- vertices[i][1] = (0, _math.lerp)(lat, vertices[i][1], factor);
86
+ for (var i = 0; i < vertexCount; i++) {
87
+ vertices[i][0] = (0, _core.lerp)(lng, vertices[i][0], factor);
88
+ vertices[i][1] = (0, _core.lerp)(lat, vertices[i][1], factor);
43
89
  }
44
90
  }
45
91
 
46
92
  function getHexagonCentroid(getHexagon, object, objectInfo) {
47
- const hexagonId = getHexagon(object, objectInfo);
48
- const [lat, lng] = (0, _h3Js.h3ToGeo)(hexagonId);
93
+ var hexagonId = getHexagon(object, objectInfo);
94
+
95
+ var _h3ToGeo3 = (0, _h3Js.h3ToGeo)(hexagonId),
96
+ _h3ToGeo4 = (0, _slicedToArray2.default)(_h3ToGeo3, 2),
97
+ lat = _h3ToGeo4[0],
98
+ lng = _h3ToGeo4[1];
99
+
49
100
  return [lng, lat];
50
101
  }
51
102
 
52
- function h3ToPolygon(hexId, coverage = 1, flatten) {
53
- const vertices = (0, _h3Js.h3ToGeoBoundary)(hexId, true);
103
+ function h3ToPolygon(hexId) {
104
+ var coverage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
105
+ var flatten = arguments.length > 2 ? arguments[2] : undefined;
106
+ var vertices = (0, _h3Js.h3ToGeoBoundary)(hexId, true);
54
107
 
55
108
  if (coverage !== 1) {
56
109
  scalePolygon(hexId, vertices, coverage);
@@ -59,12 +112,22 @@ function h3ToPolygon(hexId, coverage = 1, flatten) {
59
112
  }
60
113
 
61
114
  if (flatten) {
62
- const positions = new Float64Array(vertices.length * 2);
63
- let i = 0;
115
+ var positions = new Float64Array(vertices.length * 2);
116
+ var i = 0;
64
117
 
65
- for (const pt of vertices) {
66
- positions[i++] = pt[0];
67
- positions[i++] = pt[1];
118
+ var _iterator2 = _createForOfIteratorHelper(vertices),
119
+ _step2;
120
+
121
+ try {
122
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
123
+ var pt = _step2.value;
124
+ positions[i++] = pt[0];
125
+ positions[i++] = pt[1];
126
+ }
127
+ } catch (err) {
128
+ _iterator2.e(err);
129
+ } finally {
130
+ _iterator2.f();
68
131
  }
69
132
 
70
133
  return positions;
@@ -74,25 +137,25 @@ function h3ToPolygon(hexId, coverage = 1, flatten) {
74
137
  }
75
138
 
76
139
  function mergeTriggers(getHexagon, coverage) {
77
- let trigger;
140
+ var trigger;
78
141
 
79
142
  if (getHexagon === undefined || getHexagon === null) {
80
143
  trigger = coverage;
81
- } else if (typeof getHexagon === 'object') {
82
- trigger = { ...getHexagon,
83
- coverage
84
- };
144
+ } else if ((0, _typeof2.default)(getHexagon) === 'object') {
145
+ trigger = _objectSpread(_objectSpread({}, getHexagon), {}, {
146
+ coverage: coverage
147
+ });
85
148
  } else {
86
149
  trigger = {
87
- getHexagon,
88
- coverage
150
+ getHexagon: getHexagon,
151
+ coverage: coverage
89
152
  };
90
153
  }
91
154
 
92
155
  return trigger;
93
156
  }
94
157
 
95
- const defaultProps = { ..._layers.PolygonLayer.defaultProps,
158
+ var defaultProps = _objectSpread(_objectSpread({}, _layers.PolygonLayer.defaultProps), {}, {
96
159
  highPrecision: 'auto',
97
160
  coverage: {
98
161
  type: 'number',
@@ -103,231 +166,264 @@ const defaultProps = { ..._layers.PolygonLayer.defaultProps,
103
166
  centerHexagon: null,
104
167
  getHexagon: {
105
168
  type: 'accessor',
106
- value: x => x.hexagon
169
+ value: function value(x) {
170
+ return x.hexagon;
171
+ }
107
172
  },
108
173
  extruded: true
109
- };
110
- delete defaultProps.getLineDashArray;
174
+ });
111
175
 
112
- class H3HexagonLayer extends _core.CompositeLayer {
113
- shouldUpdateState({
114
- changeFlags
115
- }) {
116
- return this._shouldUseHighPrecision() ? changeFlags.propsOrDataChanged : changeFlags.somethingChanged;
117
- }
176
+ delete defaultProps.getLineDashArray;
118
177
 
119
- updateState({
120
- props,
121
- oldProps,
122
- changeFlags
123
- }) {
124
- if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon)) {
125
- const dataProps = this._calculateH3DataProps(props);
178
+ var H3HexagonLayer = function (_CompositeLayer) {
179
+ (0, _inherits2.default)(H3HexagonLayer, _CompositeLayer);
126
180
 
127
- this.setState(dataProps);
128
- }
181
+ var _super = _createSuper(H3HexagonLayer);
129
182
 
130
- this._updateVertices(this.context.viewport);
183
+ function H3HexagonLayer() {
184
+ (0, _classCallCheck2.default)(this, H3HexagonLayer);
185
+ return _super.apply(this, arguments);
131
186
  }
132
187
 
133
- _calculateH3DataProps(props) {
134
- let resolution = -1;
135
- let hasPentagon = false;
136
- let hasMultipleRes = false;
137
- const {
138
- iterable,
139
- objectInfo
140
- } = (0, _core.createIterable)(props.data);
141
-
142
- for (const object of iterable) {
143
- objectInfo.index++;
144
- const hexId = props.getHexagon(object, objectInfo);
145
- const hexResolution = (0, _h3Js.h3GetResolution)(hexId);
146
-
147
- if (resolution < 0) {
148
- resolution = hexResolution;
149
- if (!props.highPrecision) break;
150
- } else if (resolution !== hexResolution) {
151
- hasMultipleRes = true;
152
- break;
153
- }
154
-
155
- if ((0, _h3Js.h3IsPentagon)(hexId)) {
156
- hasPentagon = true;
157
- break;
158
- }
188
+ (0, _createClass2.default)(H3HexagonLayer, [{
189
+ key: "shouldUpdateState",
190
+ value: function shouldUpdateState(_ref) {
191
+ var changeFlags = _ref.changeFlags;
192
+ return this._shouldUseHighPrecision() ? changeFlags.propsOrDataChanged : changeFlags.somethingChanged;
159
193
  }
194
+ }, {
195
+ key: "updateState",
196
+ value: function updateState(_ref2) {
197
+ var props = _ref2.props,
198
+ oldProps = _ref2.oldProps,
199
+ changeFlags = _ref2.changeFlags;
160
200
 
161
- return {
162
- resolution,
163
- edgeLengthKM: resolution >= 0 ? (0, _h3Js.edgeLength)(resolution, _h3Js.UNITS.km) : 0,
164
- hasMultipleRes,
165
- hasPentagon
166
- };
167
- }
168
-
169
- _shouldUseHighPrecision() {
170
- if (this.props.highPrecision === 'auto') {
171
- const {
172
- resolution,
173
- hasPentagon,
174
- hasMultipleRes
175
- } = this.state;
176
- const {
177
- viewport
178
- } = this.context;
179
- return viewport.resolution || hasMultipleRes || hasPentagon || resolution >= 0 && resolution <= 5;
180
- }
201
+ if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon)) {
202
+ var dataProps = this._calculateH3DataProps(props);
181
203
 
182
- return this.props.highPrecision;
183
- }
204
+ this.setState(dataProps);
205
+ }
184
206
 
185
- _updateVertices(viewport) {
186
- if (this._shouldUseHighPrecision()) {
187
- return;
207
+ this._updateVertices(this.context.viewport);
188
208
  }
209
+ }, {
210
+ key: "_calculateH3DataProps",
211
+ value: function _calculateH3DataProps(props) {
212
+ var resolution = -1;
213
+ var hasPentagon = false;
214
+ var hasMultipleRes = false;
215
+
216
+ var _createIterable = (0, _core2.createIterable)(props.data),
217
+ iterable = _createIterable.iterable,
218
+ objectInfo = _createIterable.objectInfo;
219
+
220
+ var _iterator3 = _createForOfIteratorHelper(iterable),
221
+ _step3;
222
+
223
+ try {
224
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
225
+ var object = _step3.value;
226
+ objectInfo.index++;
227
+ var hexId = props.getHexagon(object, objectInfo);
228
+ var hexResolution = (0, _h3Js.h3GetResolution)(hexId);
229
+
230
+ if (resolution < 0) {
231
+ resolution = hexResolution;
232
+ if (!props.highPrecision) break;
233
+ } else if (resolution !== hexResolution) {
234
+ hasMultipleRes = true;
235
+ break;
236
+ }
237
+
238
+ if ((0, _h3Js.h3IsPentagon)(hexId)) {
239
+ hasPentagon = true;
240
+ break;
241
+ }
242
+ }
243
+ } catch (err) {
244
+ _iterator3.e(err);
245
+ } finally {
246
+ _iterator3.f();
247
+ }
189
248
 
190
- const {
191
- resolution,
192
- edgeLengthKM,
193
- centerHex
194
- } = this.state;
195
-
196
- if (resolution < 0) {
197
- return;
249
+ return {
250
+ resolution: resolution,
251
+ edgeLengthKM: resolution >= 0 ? (0, _h3Js.edgeLength)(resolution, _h3Js.UNITS.km) : 0,
252
+ hasMultipleRes: hasMultipleRes,
253
+ hasPentagon: hasPentagon
254
+ };
198
255
  }
256
+ }, {
257
+ key: "_shouldUseHighPrecision",
258
+ value: function _shouldUseHighPrecision() {
259
+ if (this.props.highPrecision === 'auto') {
260
+ var _this$state = this.state,
261
+ resolution = _this$state.resolution,
262
+ hasPentagon = _this$state.hasPentagon,
263
+ hasMultipleRes = _this$state.hasMultipleRes;
264
+ var viewport = this.context.viewport;
265
+ return viewport.resolution || hasMultipleRes || hasPentagon || resolution >= 0 && resolution <= 5;
266
+ }
199
267
 
200
- const hex = this.props.centerHexagon || (0, _h3Js.geoToH3)(viewport.latitude, viewport.longitude, resolution);
201
-
202
- if (centerHex === hex) {
203
- return;
268
+ return this.props.highPrecision;
204
269
  }
270
+ }, {
271
+ key: "_updateVertices",
272
+ value: function _updateVertices(viewport) {
273
+ if (this._shouldUseHighPrecision()) {
274
+ return;
275
+ }
205
276
 
206
- if (centerHex) {
207
- const distance = (0, _h3Js.h3Distance)(centerHex, hex);
277
+ var _this$state2 = this.state,
278
+ resolution = _this$state2.resolution,
279
+ edgeLengthKM = _this$state2.edgeLengthKM,
280
+ centerHex = _this$state2.centerHex;
208
281
 
209
- if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {
282
+ if (resolution < 0) {
210
283
  return;
211
284
  }
212
- }
213
285
 
214
- const {
215
- unitsPerMeter
216
- } = viewport.distanceScales;
217
- let vertices = h3ToPolygon(hex);
218
- const [centerLat, centerLng] = (0, _h3Js.h3ToGeo)(hex);
219
- const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);
220
- vertices = vertices.map(p => {
221
- const worldPosition = viewport.projectFlat(p);
222
- return [(worldPosition[0] - centerX) / unitsPerMeter[0], (worldPosition[1] - centerY) / unitsPerMeter[1]];
223
- });
224
- this.setState({
225
- centerHex: hex,
226
- vertices
227
- });
228
- }
286
+ var hex = this.props.centerHexagon || (0, _h3Js.geoToH3)(viewport.latitude, viewport.longitude, resolution);
229
287
 
230
- renderLayers() {
231
- return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();
232
- }
233
-
234
- _getForwardProps() {
235
- const {
236
- elevationScale,
237
- material,
238
- coverage,
239
- extruded,
240
- wireframe,
241
- stroked,
242
- filled,
243
- lineWidthUnits,
244
- lineWidthScale,
245
- lineWidthMinPixels,
246
- lineWidthMaxPixels,
247
- getFillColor,
248
- getElevation,
249
- getLineColor,
250
- getLineWidth,
251
- transitions,
252
- updateTriggers
253
- } = this.props;
254
- return {
255
- elevationScale,
256
- extruded,
257
- coverage,
258
- wireframe,
259
- stroked,
260
- filled,
261
- lineWidthUnits,
262
- lineWidthScale,
263
- lineWidthMinPixels,
264
- lineWidthMaxPixels,
265
- material,
266
- getElevation,
267
- getFillColor,
268
- getLineColor,
269
- getLineWidth,
270
- transitions,
271
- updateTriggers: {
272
- getFillColor: updateTriggers.getFillColor,
273
- getElevation: updateTriggers.getElevation,
274
- getLineColor: updateTriggers.getLineColor,
275
- getLineWidth: updateTriggers.getLineWidth
288
+ if (centerHex === hex) {
289
+ return;
276
290
  }
277
- };
278
- }
279
291
 
280
- _renderPolygonLayer() {
281
- const {
282
- data,
283
- getHexagon,
284
- updateTriggers,
285
- coverage
286
- } = this.props;
287
- const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', _layers.PolygonLayer);
288
-
289
- const forwardProps = this._getForwardProps();
290
-
291
- forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);
292
- return new SubLayerClass(forwardProps, this.getSubLayerProps({
293
- id: 'hexagon-cell-hifi',
294
- updateTriggers: forwardProps.updateTriggers
295
- }), {
296
- data,
297
- _normalize: false,
298
- _windingOrder: 'CCW',
299
- positionFormat: 'XY',
300
- getPolygon: (object, objectInfo) => {
301
- const hexagonId = getHexagon(object, objectInfo);
302
- return h3ToPolygon(hexagonId, coverage, true);
303
- }
304
- });
305
- }
292
+ if (centerHex) {
293
+ var distance = (0, _h3Js.h3Distance)(centerHex, hex);
306
294
 
307
- _renderColumnLayer() {
308
- const {
309
- data,
310
- getHexagon,
311
- updateTriggers
312
- } = this.props;
313
- const SubLayerClass = this.getSubLayerClass('hexagon-cell', _layers.ColumnLayer);
314
-
315
- const forwardProps = this._getForwardProps();
316
-
317
- forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;
318
- return new SubLayerClass(forwardProps, this.getSubLayerProps({
319
- id: 'hexagon-cell',
320
- updateTriggers: forwardProps.updateTriggers
321
- }), {
322
- data,
323
- diskResolution: 6,
324
- radius: 1,
325
- vertices: this.state.vertices,
326
- getPosition: getHexagonCentroid.bind(null, getHexagon)
327
- });
328
- }
295
+ if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {
296
+ return;
297
+ }
298
+ }
329
299
 
330
- }
300
+ var unitsPerMeter = viewport.distanceScales.unitsPerMeter;
301
+ var vertices = h3ToPolygon(hex);
302
+
303
+ var _h3ToGeo5 = (0, _h3Js.h3ToGeo)(hex),
304
+ _h3ToGeo6 = (0, _slicedToArray2.default)(_h3ToGeo5, 2),
305
+ centerLat = _h3ToGeo6[0],
306
+ centerLng = _h3ToGeo6[1];
307
+
308
+ var _viewport$projectFlat = viewport.projectFlat([centerLng, centerLat]),
309
+ _viewport$projectFlat2 = (0, _slicedToArray2.default)(_viewport$projectFlat, 2),
310
+ centerX = _viewport$projectFlat2[0],
311
+ centerY = _viewport$projectFlat2[1];
312
+
313
+ vertices = vertices.map(function (p) {
314
+ var worldPosition = viewport.projectFlat(p);
315
+ return [(worldPosition[0] - centerX) / unitsPerMeter[0], (worldPosition[1] - centerY) / unitsPerMeter[1]];
316
+ });
317
+ this.setState({
318
+ centerHex: hex,
319
+ vertices: vertices
320
+ });
321
+ }
322
+ }, {
323
+ key: "renderLayers",
324
+ value: function renderLayers() {
325
+ return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();
326
+ }
327
+ }, {
328
+ key: "_getForwardProps",
329
+ value: function _getForwardProps() {
330
+ var _this$props = this.props,
331
+ elevationScale = _this$props.elevationScale,
332
+ material = _this$props.material,
333
+ coverage = _this$props.coverage,
334
+ extruded = _this$props.extruded,
335
+ wireframe = _this$props.wireframe,
336
+ stroked = _this$props.stroked,
337
+ filled = _this$props.filled,
338
+ lineWidthUnits = _this$props.lineWidthUnits,
339
+ lineWidthScale = _this$props.lineWidthScale,
340
+ lineWidthMinPixels = _this$props.lineWidthMinPixels,
341
+ lineWidthMaxPixels = _this$props.lineWidthMaxPixels,
342
+ getFillColor = _this$props.getFillColor,
343
+ getElevation = _this$props.getElevation,
344
+ getLineColor = _this$props.getLineColor,
345
+ getLineWidth = _this$props.getLineWidth,
346
+ transitions = _this$props.transitions,
347
+ updateTriggers = _this$props.updateTriggers;
348
+ return {
349
+ elevationScale: elevationScale,
350
+ extruded: extruded,
351
+ coverage: coverage,
352
+ wireframe: wireframe,
353
+ stroked: stroked,
354
+ filled: filled,
355
+ lineWidthUnits: lineWidthUnits,
356
+ lineWidthScale: lineWidthScale,
357
+ lineWidthMinPixels: lineWidthMinPixels,
358
+ lineWidthMaxPixels: lineWidthMaxPixels,
359
+ material: material,
360
+ getElevation: getElevation,
361
+ getFillColor: getFillColor,
362
+ getLineColor: getLineColor,
363
+ getLineWidth: getLineWidth,
364
+ transitions: transitions,
365
+ updateTriggers: {
366
+ getFillColor: updateTriggers.getFillColor,
367
+ getElevation: updateTriggers.getElevation,
368
+ getLineColor: updateTriggers.getLineColor,
369
+ getLineWidth: updateTriggers.getLineWidth
370
+ }
371
+ };
372
+ }
373
+ }, {
374
+ key: "_renderPolygonLayer",
375
+ value: function _renderPolygonLayer() {
376
+ var _this$props2 = this.props,
377
+ data = _this$props2.data,
378
+ getHexagon = _this$props2.getHexagon,
379
+ updateTriggers = _this$props2.updateTriggers,
380
+ coverage = _this$props2.coverage;
381
+ var SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', _layers.PolygonLayer);
382
+
383
+ var forwardProps = this._getForwardProps();
384
+
385
+ forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);
386
+ return new SubLayerClass(forwardProps, this.getSubLayerProps({
387
+ id: 'hexagon-cell-hifi',
388
+ updateTriggers: forwardProps.updateTriggers
389
+ }), {
390
+ data: data,
391
+ _normalize: false,
392
+ _windingOrder: 'CCW',
393
+ positionFormat: 'XY',
394
+ getPolygon: function getPolygon(object, objectInfo) {
395
+ var hexagonId = getHexagon(object, objectInfo);
396
+ return h3ToPolygon(hexagonId, coverage, true);
397
+ }
398
+ });
399
+ }
400
+ }, {
401
+ key: "_renderColumnLayer",
402
+ value: function _renderColumnLayer() {
403
+ var _this$props3 = this.props,
404
+ data = _this$props3.data,
405
+ getHexagon = _this$props3.getHexagon,
406
+ updateTriggers = _this$props3.updateTriggers;
407
+ var SubLayerClass = this.getSubLayerClass('hexagon-cell', _layers.ColumnLayer);
408
+
409
+ var forwardProps = this._getForwardProps();
410
+
411
+ forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;
412
+ return new SubLayerClass(forwardProps, this.getSubLayerProps({
413
+ id: 'hexagon-cell',
414
+ flatShading: true,
415
+ updateTriggers: forwardProps.updateTriggers
416
+ }), {
417
+ data: data,
418
+ diskResolution: 6,
419
+ radius: 1,
420
+ vertices: this.state.vertices,
421
+ getPosition: getHexagonCentroid.bind(null, getHexagon)
422
+ });
423
+ }
424
+ }]);
425
+ return H3HexagonLayer;
426
+ }(_core2.CompositeLayer);
331
427
 
332
428
  exports.default = H3HexagonLayer;
333
429
  H3HexagonLayer.defaultProps = defaultProps;