@deck.gl/geo-layers 8.7.0-alpha.3 → 8.7.0-beta.1
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.
- package/dist/dist.dev.js +8074 -4705
- package/dist/es5/great-circle-layer/great-circle-layer.js +26 -1
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +149 -87
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +326 -230
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +17 -9
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer.js +153 -132
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +46 -20
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js +45 -26
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +395 -280
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js +43 -32
- package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +104 -69
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js +27 -28
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +250 -208
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +384 -329
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +182 -118
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +176 -113
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +253 -214
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +519 -300
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +111 -62
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +81 -44
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js +2 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js +2 -8
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +27 -1
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +8 -10
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +2 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +8 -16
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +85 -79
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist/esm/tile-layer/utils.js +1 -1
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +12 -12
- package/src/h3-layers/h3-hexagon-layer.js +2 -1
- package/src/{index.js → index.ts} +2 -0
- package/src/mesh-layer/mesh-layer-vertex.glsl.js +24 -23
- package/src/mesh-layer/mesh-layer.js +5 -4
- package/src/mvt-layer/coordinate-transform.js +1 -1
- package/src/mvt-layer/mvt-layer.js +17 -1
- package/src/terrain-layer/terrain-layer.js +10 -9
- package/src/tile-3d-layer/tile-3d-layer.js +10 -2
- package/src/tile-layer/tile-layer.js +11 -12
- package/src/tile-layer/tileset-2d.js +103 -90
- package/src/tile-layer/utils.js +4 -4
|
@@ -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
|
|
30
|
+
var _core = require("@math.gl/core");
|
|
13
31
|
|
|
14
|
-
var
|
|
32
|
+
var _core2 = require("@deck.gl/core");
|
|
15
33
|
|
|
16
34
|
var _layers = require("@deck.gl/layers");
|
|
17
35
|
|
|
18
|
-
|
|
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
|
-
|
|
24
|
-
|
|
55
|
+
var _iterator = _createForOfIteratorHelper(vertices),
|
|
56
|
+
_step;
|
|
25
57
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
pt[0]
|
|
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
|
-
|
|
36
|
-
|
|
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
|
-
|
|
84
|
+
var vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
|
|
39
85
|
|
|
40
|
-
for (
|
|
41
|
-
vertices[i][0] = (0,
|
|
42
|
-
vertices[i][1] = (0,
|
|
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
|
-
|
|
48
|
-
|
|
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
|
|
53
|
-
|
|
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
|
-
|
|
63
|
-
|
|
115
|
+
var positions = new Float64Array(vertices.length * 2);
|
|
116
|
+
var i = 0;
|
|
64
117
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
140
|
+
var trigger;
|
|
78
141
|
|
|
79
142
|
if (getHexagon === undefined || getHexagon === null) {
|
|
80
143
|
trigger = coverage;
|
|
81
|
-
} else if (
|
|
82
|
-
trigger = {
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
113
|
-
shouldUpdateState({
|
|
114
|
-
changeFlags
|
|
115
|
-
}) {
|
|
116
|
-
return this._shouldUseHighPrecision() ? changeFlags.propsOrDataChanged : changeFlags.somethingChanged;
|
|
117
|
-
}
|
|
176
|
+
delete defaultProps.getLineDashArray;
|
|
118
177
|
|
|
119
|
-
|
|
120
|
-
|
|
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
|
-
|
|
128
|
-
}
|
|
181
|
+
var _super = _createSuper(H3HexagonLayer);
|
|
129
182
|
|
|
130
|
-
|
|
183
|
+
function H3HexagonLayer() {
|
|
184
|
+
(0, _classCallCheck2.default)(this, H3HexagonLayer);
|
|
185
|
+
return _super.apply(this, arguments);
|
|
131
186
|
}
|
|
132
187
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
-
|
|
162
|
-
|
|
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
|
-
|
|
183
|
-
|
|
204
|
+
this.setState(dataProps);
|
|
205
|
+
}
|
|
184
206
|
|
|
185
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
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
|
-
|
|
207
|
-
|
|
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 (
|
|
282
|
+
if (resolution < 0) {
|
|
210
283
|
return;
|
|
211
284
|
}
|
|
212
|
-
}
|
|
213
285
|
|
|
214
|
-
|
|
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
|
-
|
|
231
|
-
|
|
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
|
-
|
|
281
|
-
|
|
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
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
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;
|