@deck.gl/geo-layers 8.6.4 → 8.6.8

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 (73) hide show
  1. package/dist/dist.dev.js +6086 -2963
  2. package/dist/es5/great-circle-layer/great-circle-layer.js +28 -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 +322 -227
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +23 -23
  9. package/dist/es5/mesh-layer/mesh-layer.js +151 -125
  10. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  11. package/dist/es5/mvt-layer/coordinate-transform.js +45 -19
  12. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  13. package/dist/es5/mvt-layer/find-index-binary.js +45 -26
  14. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  15. package/dist/es5/mvt-layer/mvt-layer.js +394 -279
  16. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/es5/s2-layer/s2-geometry.js +45 -34
  18. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-layer.js +104 -69
  20. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-utils.js +28 -29
  22. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  23. package/dist/es5/terrain-layer/terrain-layer.js +250 -208
  24. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  25. package/dist/es5/tile-3d-layer/tile-3d-layer.js +382 -329
  26. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  27. package/dist/es5/tile-layer/tile-2d-header.js +182 -118
  28. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-traversal.js +176 -113
  30. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-layer.js +262 -215
  32. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  33. package/dist/es5/tile-layer/tileset-2d.js +455 -293
  34. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  35. package/dist/es5/tile-layer/utils.js +113 -64
  36. package/dist/es5/tile-layer/utils.js.map +1 -1
  37. package/dist/es5/trips-layer/trips-layer.js +81 -44
  38. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  39. package/dist/esm/h3-layers/h3-cluster-layer.js +7 -5
  40. package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
  41. package/dist/esm/h3-layers/h3-hexagon-layer.js +14 -9
  42. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  43. package/dist/esm/mesh-layer/mesh-layer.js +6 -5
  44. package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
  45. package/dist/esm/mvt-layer/coordinate-transform.js +3 -1
  46. package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
  47. package/dist/esm/mvt-layer/mvt-layer.js +37 -7
  48. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  49. package/dist/esm/s2-layer/s2-geometry.js +5 -2
  50. package/dist/esm/s2-layer/s2-geometry.js.map +1 -1
  51. package/dist/esm/s2-layer/s2-utils.js +6 -5
  52. package/dist/esm/s2-layer/s2-utils.js.map +1 -1
  53. package/dist/esm/terrain-layer/terrain-layer.js +22 -21
  54. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  55. package/dist/esm/tile-3d-layer/tile-3d-layer.js +21 -16
  56. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  57. package/dist/esm/tile-layer/tile-2d-header.js +13 -11
  58. package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
  59. package/dist/esm/tile-layer/tile-2d-traversal.js +12 -6
  60. package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
  61. package/dist/esm/tile-layer/tile-layer.js +24 -22
  62. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  63. package/dist/esm/tile-layer/tileset-2d.js +40 -24
  64. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  65. package/dist/esm/tile-layer/utils.js +16 -13
  66. package/dist/esm/tile-layer/utils.js.map +1 -1
  67. package/dist.min.js +2 -2
  68. package/package.json +11 -11
  69. package/src/mvt-layer/mvt-layer.js +16 -0
  70. package/src/terrain-layer/terrain-layer.js +10 -9
  71. package/src/tile-layer/tile-layer.js +9 -6
  72. package/src/tile-layer/tileset-2d.js +14 -2
  73. package/src/tile-layer/utils.js +4 -4
@@ -1,11 +1,29 @@
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
  });
8
+ exports.default = void 0;
6
9
  exports.normalizeLongitudes = normalizeLongitudes;
7
10
  exports.scalePolygon = scalePolygon;
8
- exports.default = void 0;
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"));
9
27
 
10
28
  var _h3Js = require("h3-js");
11
29
 
@@ -15,42 +33,77 @@ var _core = 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); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : 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;
57
+
58
+ try {
59
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
60
+ var pt = _step.value;
61
+ var deltaLng = pt[0] - refLng;
25
62
 
26
- if (deltaLng > 180) {
27
- pt[0] -= 360;
28
- } else if (deltaLng < -180) {
29
- pt[0] += 360;
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++) {
86
+ for (var i = 0; i < vertexCount; i++) {
41
87
  vertices[i][0] = (0, _math.lerp)(lng, vertices[i][0], factor);
42
88
  vertices[i][1] = (0, _math.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;
117
+
118
+ var _iterator2 = _createForOfIteratorHelper(vertices),
119
+ _step2;
64
120
 
65
- for (const pt of vertices) {
66
- positions[i++] = pt[0];
67
- positions[i++] = pt[1];
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,263 @@ 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
- }
201
+ if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon)) {
202
+ var dataProps = this._calculateH3DataProps(props);
168
203
 
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
- }
181
-
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, _core.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
-
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
- }
229
285
 
230
- renderLayers() {
231
- return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();
232
- }
286
+ var hex = this.props.centerHexagon || (0, _h3Js.geoToH3)(viewport.latitude, viewport.longitude, resolution);
233
287
 
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
+ updateTriggers: forwardProps.updateTriggers
415
+ }), {
416
+ data: data,
417
+ diskResolution: 6,
418
+ radius: 1,
419
+ vertices: this.state.vertices,
420
+ getPosition: getHexagonCentroid.bind(null, getHexagon)
421
+ });
422
+ }
423
+ }]);
424
+ return H3HexagonLayer;
425
+ }(_core.CompositeLayer);
331
426
 
332
427
  exports.default = H3HexagonLayer;
333
428
  H3HexagonLayer.defaultProps = defaultProps;