@deck.gl/geo-layers 8.6.3 → 8.7.0-alpha.10
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 +9747 -6413
- 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 +9 -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 +254 -213
- 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 +110 -61
- 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.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/s2-layer/s2-utils.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-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-traversal.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.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} +0 -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/s2-layer/s2-utils.js +7 -1
- package/src/terrain-layer/terrain-layer.js +10 -9
- package/src/tile-3d-layer/tile-3d-layer.js +12 -9
- package/src/tile-layer/tile-2d-traversal.js +17 -3
- package/src/tile-layer/tile-layer.js +11 -12
- package/src/tile-layer/tileset-2d.js +103 -90
|
@@ -7,9 +7,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
|
|
18
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
+
|
|
20
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
21
|
+
|
|
22
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
23
|
+
|
|
24
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
25
|
+
|
|
26
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
27
|
+
|
|
28
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
29
|
+
|
|
10
30
|
var _core = require("@deck.gl/core");
|
|
11
31
|
|
|
12
|
-
var
|
|
32
|
+
var _core2 = require("@math.gl/core");
|
|
13
33
|
|
|
14
34
|
var _mvt = require("@loaders.gl/mvt");
|
|
15
35
|
|
|
@@ -27,8 +47,22 @@ var _findIndexBinary = _interopRequireDefault(require("./find-index-binary"));
|
|
|
27
47
|
|
|
28
48
|
var _layers = require("@deck.gl/layers");
|
|
29
49
|
|
|
30
|
-
|
|
31
|
-
|
|
50
|
+
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; } } }; }
|
|
51
|
+
|
|
52
|
+
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); }
|
|
53
|
+
|
|
54
|
+
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; }
|
|
55
|
+
|
|
56
|
+
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; }
|
|
57
|
+
|
|
58
|
+
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; }
|
|
59
|
+
|
|
60
|
+
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); }; }
|
|
61
|
+
|
|
62
|
+
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; } }
|
|
63
|
+
|
|
64
|
+
var WORLD_SIZE = 512;
|
|
65
|
+
var defaultProps = {
|
|
32
66
|
uniqueIdProperty: {
|
|
33
67
|
type: 'string',
|
|
34
68
|
value: ''
|
|
@@ -38,328 +72,408 @@ const defaultProps = {
|
|
|
38
72
|
binary: true
|
|
39
73
|
};
|
|
40
74
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
super.initializeState();
|
|
44
|
-
this.setState({
|
|
45
|
-
data: null,
|
|
46
|
-
tileJSON: null
|
|
47
|
-
});
|
|
48
|
-
}
|
|
75
|
+
var MVTLayer = function (_TileLayer) {
|
|
76
|
+
(0, _inherits2.default)(MVTLayer, _TileLayer);
|
|
49
77
|
|
|
50
|
-
|
|
51
|
-
return this.state.data && this.state.tileset && super.isLoaded;
|
|
52
|
-
}
|
|
78
|
+
var _super = _createSuper(MVTLayer);
|
|
53
79
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
context,
|
|
58
|
-
changeFlags
|
|
59
|
-
}) {
|
|
60
|
-
if (changeFlags.dataChanged) {
|
|
61
|
-
this._updateTileData();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (this.state.data) {
|
|
65
|
-
super.updateState({
|
|
66
|
-
props,
|
|
67
|
-
oldProps,
|
|
68
|
-
context,
|
|
69
|
-
changeFlags
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
this._setWGS84PropertyForTiles();
|
|
73
|
-
}
|
|
80
|
+
function MVTLayer() {
|
|
81
|
+
(0, _classCallCheck2.default)(this, MVTLayer);
|
|
82
|
+
return _super.apply(this, arguments);
|
|
74
83
|
}
|
|
75
84
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
let tileJSON = null;
|
|
81
|
-
|
|
82
|
-
if (typeof data === 'string' && !(0, _utils.isURLTemplate)(data)) {
|
|
83
|
-
const {
|
|
84
|
-
onDataLoad,
|
|
85
|
-
fetch
|
|
86
|
-
} = this.props;
|
|
85
|
+
(0, _createClass2.default)(MVTLayer, [{
|
|
86
|
+
key: "initializeState",
|
|
87
|
+
value: function initializeState() {
|
|
88
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "initializeState", this).call(this);
|
|
87
89
|
this.setState({
|
|
88
90
|
data: null,
|
|
89
91
|
tileJSON: null
|
|
90
92
|
});
|
|
91
|
-
|
|
92
|
-
try {
|
|
93
|
-
tileJSON = await fetch(data, {
|
|
94
|
-
propName: 'data',
|
|
95
|
-
layer: this,
|
|
96
|
-
loaders: []
|
|
97
|
-
});
|
|
98
|
-
} catch (error) {
|
|
99
|
-
this.raiseError(error, 'loading TileJSON');
|
|
100
|
-
data = null;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (onDataLoad) {
|
|
104
|
-
onDataLoad(tileJSON);
|
|
105
|
-
}
|
|
106
|
-
} else if (data.tilejson) {
|
|
107
|
-
tileJSON = data;
|
|
108
93
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
94
|
+
}, {
|
|
95
|
+
key: "isLoaded",
|
|
96
|
+
get: function get() {
|
|
97
|
+
return this.state.data && this.state.tileset && (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "isLoaded", this);
|
|
112
98
|
}
|
|
99
|
+
}, {
|
|
100
|
+
key: "updateState",
|
|
101
|
+
value: function updateState(_ref) {
|
|
102
|
+
var props = _ref.props,
|
|
103
|
+
oldProps = _ref.oldProps,
|
|
104
|
+
context = _ref.context,
|
|
105
|
+
changeFlags = _ref.changeFlags;
|
|
106
|
+
|
|
107
|
+
if (changeFlags.dataChanged) {
|
|
108
|
+
this._updateTileData();
|
|
109
|
+
}
|
|
113
110
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const opts = super._getTilesetOptions(props);
|
|
122
|
-
|
|
123
|
-
const {
|
|
124
|
-
tileJSON
|
|
125
|
-
} = this.state;
|
|
111
|
+
if (this.state.data) {
|
|
112
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "updateState", this).call(this, {
|
|
113
|
+
props: props,
|
|
114
|
+
oldProps: oldProps,
|
|
115
|
+
context: context,
|
|
116
|
+
changeFlags: changeFlags
|
|
117
|
+
});
|
|
126
118
|
|
|
127
|
-
|
|
128
|
-
if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {
|
|
129
|
-
opts.minZoom = tileJSON.minzoom;
|
|
119
|
+
this._setWGS84PropertyForTiles();
|
|
130
120
|
}
|
|
131
121
|
|
|
132
|
-
|
|
133
|
-
|
|
122
|
+
var highlightColor = props.highlightColor;
|
|
123
|
+
|
|
124
|
+
if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {
|
|
125
|
+
this.setState({
|
|
126
|
+
highlightColor: highlightColor
|
|
127
|
+
});
|
|
134
128
|
}
|
|
135
129
|
}
|
|
130
|
+
}, {
|
|
131
|
+
key: "_updateTileData",
|
|
132
|
+
value: function () {
|
|
133
|
+
var _updateTileData2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
134
|
+
var data, tileJSON, _this$props, onDataLoad, fetch;
|
|
135
|
+
|
|
136
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
137
|
+
while (1) {
|
|
138
|
+
switch (_context.prev = _context.next) {
|
|
139
|
+
case 0:
|
|
140
|
+
data = this.props.data;
|
|
141
|
+
tileJSON = null;
|
|
142
|
+
|
|
143
|
+
if (!(typeof data === 'string' && !(0, _utils.isURLTemplate)(data))) {
|
|
144
|
+
_context.next = 18;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
_this$props = this.props, onDataLoad = _this$props.onDataLoad, fetch = _this$props.fetch;
|
|
149
|
+
this.setState({
|
|
150
|
+
data: null,
|
|
151
|
+
tileJSON: null
|
|
152
|
+
});
|
|
153
|
+
_context.prev = 5;
|
|
154
|
+
_context.next = 8;
|
|
155
|
+
return fetch(data, {
|
|
156
|
+
propName: 'data',
|
|
157
|
+
layer: this,
|
|
158
|
+
loaders: []
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
case 8:
|
|
162
|
+
tileJSON = _context.sent;
|
|
163
|
+
_context.next = 15;
|
|
164
|
+
break;
|
|
165
|
+
|
|
166
|
+
case 11:
|
|
167
|
+
_context.prev = 11;
|
|
168
|
+
_context.t0 = _context["catch"](5);
|
|
169
|
+
this.raiseError(_context.t0, 'loading TileJSON');
|
|
170
|
+
data = null;
|
|
171
|
+
|
|
172
|
+
case 15:
|
|
173
|
+
if (onDataLoad) {
|
|
174
|
+
onDataLoad(tileJSON);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
_context.next = 19;
|
|
178
|
+
break;
|
|
179
|
+
|
|
180
|
+
case 18:
|
|
181
|
+
if (data.tilejson) {
|
|
182
|
+
tileJSON = data;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
case 19:
|
|
186
|
+
if (tileJSON) {
|
|
187
|
+
data = tileJSON.tiles;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
this.setState({
|
|
191
|
+
data: data,
|
|
192
|
+
tileJSON: tileJSON
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
case 21:
|
|
196
|
+
case "end":
|
|
197
|
+
return _context.stop();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}, _callee, this, [[5, 11]]);
|
|
201
|
+
}));
|
|
136
202
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
renderLayers() {
|
|
141
|
-
if (!this.state.data) return null;
|
|
142
|
-
return super.renderLayers();
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
getTileData(tile) {
|
|
146
|
-
var _loadOptions;
|
|
147
|
-
|
|
148
|
-
const url = (0, _utils.getURLFromTemplate)(this.state.data, tile);
|
|
203
|
+
function _updateTileData() {
|
|
204
|
+
return _updateTileData2.apply(this, arguments);
|
|
205
|
+
}
|
|
149
206
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
207
|
+
return _updateTileData;
|
|
208
|
+
}()
|
|
209
|
+
}, {
|
|
210
|
+
key: "_getTilesetOptions",
|
|
211
|
+
value: function _getTilesetOptions(props) {
|
|
212
|
+
var opts = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "_getTilesetOptions", this).call(this, props);
|
|
213
|
+
var tileJSON = this.state.tileJSON;
|
|
214
|
+
|
|
215
|
+
if (tileJSON) {
|
|
216
|
+
if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {
|
|
217
|
+
opts.minZoom = tileJSON.minzoom;
|
|
218
|
+
}
|
|
153
219
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
binary,
|
|
157
|
-
fetch
|
|
158
|
-
} = this.props;
|
|
159
|
-
const {
|
|
160
|
-
signal,
|
|
161
|
-
x,
|
|
162
|
-
y,
|
|
163
|
-
z
|
|
164
|
-
} = tile;
|
|
165
|
-
loadOptions = { ...loadOptions,
|
|
166
|
-
mimeType: 'application/x-protobuf',
|
|
167
|
-
mvt: { ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.mvt),
|
|
168
|
-
coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',
|
|
169
|
-
tileIndex: {
|
|
170
|
-
x,
|
|
171
|
-
y,
|
|
172
|
-
z
|
|
220
|
+
if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)) {
|
|
221
|
+
opts.maxZoom = tileJSON.maxzoom;
|
|
173
222
|
}
|
|
174
|
-
}
|
|
175
|
-
gis: binary ? {
|
|
176
|
-
format: 'binary'
|
|
177
|
-
} : {}
|
|
178
|
-
};
|
|
179
|
-
return fetch(url, {
|
|
180
|
-
propName: 'data',
|
|
181
|
-
layer: this,
|
|
182
|
-
loadOptions,
|
|
183
|
-
signal
|
|
184
|
-
});
|
|
185
|
-
}
|
|
223
|
+
}
|
|
186
224
|
|
|
187
|
-
|
|
188
|
-
const {
|
|
189
|
-
tile
|
|
190
|
-
} = props;
|
|
191
|
-
const worldScale = Math.pow(2, tile.z);
|
|
192
|
-
const xScale = WORLD_SIZE / worldScale;
|
|
193
|
-
const yScale = -xScale;
|
|
194
|
-
const xOffset = WORLD_SIZE * tile.x / worldScale;
|
|
195
|
-
const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);
|
|
196
|
-
const modelMatrix = new _math.Matrix4().scale([xScale, yScale, 1]);
|
|
197
|
-
props.autoHighlight = false;
|
|
198
|
-
|
|
199
|
-
if (!this.context.viewport.resolution) {
|
|
200
|
-
props.modelMatrix = modelMatrix;
|
|
201
|
-
props.coordinateOrigin = [xOffset, yOffset, 0];
|
|
202
|
-
props.coordinateSystem = _core.COORDINATE_SYSTEM.CARTESIAN;
|
|
203
|
-
props.extensions = [...(props.extensions || []), new _extensions.ClipExtension()];
|
|
225
|
+
return opts;
|
|
204
226
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
227
|
+
}, {
|
|
228
|
+
key: "renderLayers",
|
|
229
|
+
value: function renderLayers() {
|
|
230
|
+
if (!this.state.data) return null;
|
|
231
|
+
return (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "renderLayers", this).call(this);
|
|
210
232
|
}
|
|
233
|
+
}, {
|
|
234
|
+
key: "getTileData",
|
|
235
|
+
value: function getTileData(tile) {
|
|
236
|
+
var _loadOptions;
|
|
211
237
|
|
|
212
|
-
|
|
213
|
-
}
|
|
238
|
+
var url = (0, _utils.getURLFromTemplate)(this.state.data, tile);
|
|
214
239
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
} = this.props;
|
|
219
|
-
const {
|
|
220
|
-
hoveredFeatureId,
|
|
221
|
-
hoveredFeatureLayerName
|
|
222
|
-
} = this.state;
|
|
223
|
-
const hoveredFeature = info.object;
|
|
224
|
-
let newHoveredFeatureId;
|
|
225
|
-
let newHoveredFeatureLayerName;
|
|
226
|
-
|
|
227
|
-
if (hoveredFeature) {
|
|
228
|
-
newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);
|
|
229
|
-
newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);
|
|
230
|
-
}
|
|
240
|
+
if (!url) {
|
|
241
|
+
return Promise.reject('Invalid URL');
|
|
242
|
+
}
|
|
231
243
|
|
|
232
|
-
|
|
233
|
-
this.
|
|
234
|
-
|
|
235
|
-
|
|
244
|
+
var loadOptions = this.getLoadOptions();
|
|
245
|
+
var _this$props2 = this.props,
|
|
246
|
+
binary = _this$props2.binary,
|
|
247
|
+
fetch = _this$props2.fetch;
|
|
248
|
+
var signal = tile.signal,
|
|
249
|
+
x = tile.x,
|
|
250
|
+
y = tile.y,
|
|
251
|
+
z = tile.z;
|
|
252
|
+
loadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
|
|
253
|
+
mimeType: 'application/x-protobuf',
|
|
254
|
+
mvt: _objectSpread(_objectSpread({}, (_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.mvt), {}, {
|
|
255
|
+
coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',
|
|
256
|
+
tileIndex: {
|
|
257
|
+
x: x,
|
|
258
|
+
y: y,
|
|
259
|
+
z: z
|
|
260
|
+
}
|
|
261
|
+
}),
|
|
262
|
+
gis: binary ? {
|
|
263
|
+
format: 'binary'
|
|
264
|
+
} : {}
|
|
236
265
|
});
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
const isWGS84 = this.context.viewport.resolution;
|
|
243
|
-
|
|
244
|
-
if (this.props.binary && info.index !== -1) {
|
|
245
|
-
const {
|
|
246
|
-
data
|
|
247
|
-
} = params.sourceLayer.props;
|
|
248
|
-
info.object = (0, _gis.binaryToGeojson)(data, {
|
|
249
|
-
globalFeatureId: info.index
|
|
266
|
+
return fetch(url, {
|
|
267
|
+
propName: 'data',
|
|
268
|
+
layer: this,
|
|
269
|
+
loadOptions: loadOptions,
|
|
270
|
+
signal: signal
|
|
250
271
|
});
|
|
251
272
|
}
|
|
273
|
+
}, {
|
|
274
|
+
key: "renderSubLayers",
|
|
275
|
+
value: function renderSubLayers(props) {
|
|
276
|
+
var tile = props.tile;
|
|
277
|
+
var worldScale = Math.pow(2, tile.z);
|
|
278
|
+
var xScale = WORLD_SIZE / worldScale;
|
|
279
|
+
var yScale = -xScale;
|
|
280
|
+
var xOffset = WORLD_SIZE * tile.x / worldScale;
|
|
281
|
+
var yOffset = WORLD_SIZE * (1 - tile.y / worldScale);
|
|
282
|
+
var modelMatrix = new _core2.Matrix4().scale([xScale, yScale, 1]);
|
|
283
|
+
props.autoHighlight = false;
|
|
284
|
+
|
|
285
|
+
if (!this.context.viewport.resolution) {
|
|
286
|
+
props.modelMatrix = modelMatrix;
|
|
287
|
+
props.coordinateOrigin = [xOffset, yOffset, 0];
|
|
288
|
+
props.coordinateSystem = _core.COORDINATE_SYSTEM.CARTESIAN;
|
|
289
|
+
props.extensions = [].concat((0, _toConsumableArray2.default)(props.extensions || []), [new _extensions.ClipExtension()]);
|
|
290
|
+
}
|
|
252
291
|
|
|
253
|
-
|
|
254
|
-
info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);
|
|
255
|
-
}
|
|
292
|
+
var subLayers = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "renderSubLayers", this).call(this, props);
|
|
256
293
|
|
|
257
|
-
|
|
258
|
-
|
|
294
|
+
if (this.props.binary && !(subLayers instanceof _layers.GeoJsonLayer)) {
|
|
295
|
+
_core.log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();
|
|
296
|
+
}
|
|
259
297
|
|
|
260
|
-
|
|
261
|
-
const {
|
|
262
|
-
hoveredFeatureId,
|
|
263
|
-
hoveredFeatureLayerName
|
|
264
|
-
} = this.state;
|
|
265
|
-
const {
|
|
266
|
-
uniqueIdProperty,
|
|
267
|
-
highlightedFeatureId,
|
|
268
|
-
binary
|
|
269
|
-
} = this.props;
|
|
270
|
-
const data = tile.content;
|
|
271
|
-
const isHighlighted = isFeatureIdDefined(highlightedFeatureId);
|
|
272
|
-
const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;
|
|
273
|
-
|
|
274
|
-
if (!isFeatureIdPresent) {
|
|
275
|
-
return -1;
|
|
298
|
+
return subLayers;
|
|
276
299
|
}
|
|
300
|
+
}, {
|
|
301
|
+
key: "_updateAutoHighlight",
|
|
302
|
+
value: function _updateAutoHighlight(info) {
|
|
303
|
+
var uniqueIdProperty = this.props.uniqueIdProperty;
|
|
304
|
+
var _this$state = this.state,
|
|
305
|
+
hoveredFeatureId = _this$state.hoveredFeatureId,
|
|
306
|
+
hoveredFeatureLayerName = _this$state.hoveredFeatureLayerName;
|
|
307
|
+
var hoveredFeature = info.object;
|
|
308
|
+
var newHoveredFeatureId;
|
|
309
|
+
var newHoveredFeatureLayerName;
|
|
310
|
+
|
|
311
|
+
if (hoveredFeature) {
|
|
312
|
+
newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);
|
|
313
|
+
newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);
|
|
314
|
+
}
|
|
277
315
|
|
|
278
|
-
|
|
316
|
+
var highlightColor = this.props.highlightColor;
|
|
279
317
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
const isMatchingLayer = isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;
|
|
284
|
-
return isMatchingId && isMatchingLayer;
|
|
285
|
-
});
|
|
286
|
-
} else if (data && binary) {
|
|
287
|
-
return (0, _findIndexBinary.default)(data, uniqueIdProperty, featureIdToHighlight, isHighlighted ? '' : hoveredFeatureLayerName);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
return -1;
|
|
291
|
-
}
|
|
318
|
+
if (typeof highlightColor === 'function') {
|
|
319
|
+
highlightColor = highlightColor(info);
|
|
320
|
+
}
|
|
292
321
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
322
|
+
if (hoveredFeatureId !== newHoveredFeatureId || hoveredFeatureLayerName !== newHoveredFeatureLayerName) {
|
|
323
|
+
this.setState({
|
|
324
|
+
highlightColor: highlightColor,
|
|
325
|
+
hoveredFeatureId: newHoveredFeatureId,
|
|
326
|
+
hoveredFeatureLayerName: newHoveredFeatureLayerName
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}, {
|
|
331
|
+
key: "getPickingInfo",
|
|
332
|
+
value: function getPickingInfo(params) {
|
|
333
|
+
var info = (0, _get2.default)((0, _getPrototypeOf2.default)(MVTLayer.prototype), "getPickingInfo", this).call(this, params);
|
|
334
|
+
var isWGS84 = this.context.viewport.resolution;
|
|
335
|
+
|
|
336
|
+
if (this.props.binary && info.index !== -1) {
|
|
337
|
+
var data = params.sourceLayer.props.data;
|
|
338
|
+
info.object = (0, _gis.binaryToGeojson)(data, {
|
|
339
|
+
globalFeatureId: info.index
|
|
340
|
+
});
|
|
341
|
+
}
|
|
312
342
|
|
|
313
|
-
|
|
314
|
-
|
|
343
|
+
if (info.object && !isWGS84) {
|
|
344
|
+
info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);
|
|
345
|
+
}
|
|
315
346
|
|
|
316
|
-
|
|
317
|
-
|
|
347
|
+
return info;
|
|
348
|
+
}
|
|
349
|
+
}, {
|
|
350
|
+
key: "getSubLayerPropsByTile",
|
|
351
|
+
value: function getSubLayerPropsByTile(tile) {
|
|
352
|
+
return {
|
|
353
|
+
highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
|
|
354
|
+
highlightColor: this.state.highlightColor
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
}, {
|
|
358
|
+
key: "getHighlightedObjectIndex",
|
|
359
|
+
value: function getHighlightedObjectIndex(tile) {
|
|
360
|
+
var _this$state2 = this.state,
|
|
361
|
+
hoveredFeatureId = _this$state2.hoveredFeatureId,
|
|
362
|
+
hoveredFeatureLayerName = _this$state2.hoveredFeatureLayerName;
|
|
363
|
+
var _this$props3 = this.props,
|
|
364
|
+
uniqueIdProperty = _this$props3.uniqueIdProperty,
|
|
365
|
+
highlightedFeatureId = _this$props3.highlightedFeatureId,
|
|
366
|
+
binary = _this$props3.binary;
|
|
367
|
+
var data = tile.content;
|
|
368
|
+
var isHighlighted = isFeatureIdDefined(highlightedFeatureId);
|
|
369
|
+
var isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;
|
|
370
|
+
|
|
371
|
+
if (!isFeatureIdPresent) {
|
|
372
|
+
return -1;
|
|
373
|
+
}
|
|
318
374
|
|
|
319
|
-
|
|
320
|
-
const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);
|
|
375
|
+
var featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;
|
|
321
376
|
|
|
322
|
-
if (
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
377
|
+
if (Array.isArray(data)) {
|
|
378
|
+
return data.findIndex(function (feature) {
|
|
379
|
+
var isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;
|
|
380
|
+
var isMatchingLayer = isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;
|
|
381
|
+
return isMatchingId && isMatchingLayer;
|
|
382
|
+
});
|
|
383
|
+
} else if (data && binary) {
|
|
384
|
+
return (0, _findIndexBinary.default)(data, uniqueIdProperty, featureIdToHighlight, isHighlighted ? '' : hoveredFeatureLayerName);
|
|
327
385
|
}
|
|
328
|
-
}
|
|
329
386
|
|
|
330
|
-
|
|
331
|
-
|
|
387
|
+
return -1;
|
|
388
|
+
}
|
|
389
|
+
}, {
|
|
390
|
+
key: "_pickObjects",
|
|
391
|
+
value: function _pickObjects(maxObjects) {
|
|
392
|
+
var _this$context = this.context,
|
|
393
|
+
deck = _this$context.deck,
|
|
394
|
+
viewport = _this$context.viewport;
|
|
395
|
+
var width = viewport.width;
|
|
396
|
+
var height = viewport.height;
|
|
397
|
+
var x = viewport.x;
|
|
398
|
+
var y = viewport.y;
|
|
399
|
+
var layerIds = [this.id];
|
|
400
|
+
return deck.pickObjects({
|
|
401
|
+
x: x,
|
|
402
|
+
y: y,
|
|
403
|
+
width: width,
|
|
404
|
+
height: height,
|
|
405
|
+
layerIds: layerIds,
|
|
406
|
+
maxObjects: maxObjects
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
}, {
|
|
410
|
+
key: "getRenderedFeatures",
|
|
411
|
+
value: function getRenderedFeatures() {
|
|
412
|
+
var maxFeatures = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
332
413
|
|
|
333
|
-
|
|
334
|
-
const propName = 'dataInWGS84';
|
|
335
|
-
const {
|
|
336
|
-
tileset
|
|
337
|
-
} = this.state;
|
|
338
|
-
tileset.selectedTiles.forEach(tile => {
|
|
339
|
-
if (!tile.hasOwnProperty(propName)) {
|
|
340
|
-
Object.defineProperty(tile, propName, {
|
|
341
|
-
get: () => {
|
|
342
|
-
if (!tile.content) {
|
|
343
|
-
return null;
|
|
344
|
-
}
|
|
414
|
+
var features = this._pickObjects(maxFeatures);
|
|
345
415
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}
|
|
416
|
+
var featureCache = new Set();
|
|
417
|
+
var renderedFeatures = [];
|
|
349
418
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
tile._contentWGS84 = content.map(feature => transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport));
|
|
353
|
-
}
|
|
419
|
+
var _iterator = _createForOfIteratorHelper(features),
|
|
420
|
+
_step;
|
|
354
421
|
|
|
355
|
-
|
|
422
|
+
try {
|
|
423
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
424
|
+
var f = _step.value;
|
|
425
|
+
var featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);
|
|
426
|
+
|
|
427
|
+
if (featureId === undefined) {
|
|
428
|
+
renderedFeatures.push(f.object);
|
|
429
|
+
} else if (!featureCache.has(featureId)) {
|
|
430
|
+
featureCache.add(featureId);
|
|
431
|
+
renderedFeatures.push(f.object);
|
|
356
432
|
}
|
|
357
|
-
}
|
|
433
|
+
}
|
|
434
|
+
} catch (err) {
|
|
435
|
+
_iterator.e(err);
|
|
436
|
+
} finally {
|
|
437
|
+
_iterator.f();
|
|
358
438
|
}
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
439
|
|
|
362
|
-
|
|
440
|
+
return renderedFeatures;
|
|
441
|
+
}
|
|
442
|
+
}, {
|
|
443
|
+
key: "_setWGS84PropertyForTiles",
|
|
444
|
+
value: function _setWGS84PropertyForTiles() {
|
|
445
|
+
var _this = this;
|
|
446
|
+
|
|
447
|
+
var propName = 'dataInWGS84';
|
|
448
|
+
var tileset = this.state.tileset;
|
|
449
|
+
tileset.selectedTiles.forEach(function (tile) {
|
|
450
|
+
if (!tile.hasOwnProperty(propName)) {
|
|
451
|
+
Object.defineProperty(tile, propName, {
|
|
452
|
+
get: function get() {
|
|
453
|
+
if (!tile.content) {
|
|
454
|
+
return null;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
if (_this.props.binary && Array.isArray(tile.content) && !tile.content.length) {
|
|
458
|
+
return [];
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
if (tile._contentWGS84 === undefined) {
|
|
462
|
+
var content = _this.props.binary ? (0, _gis.binaryToGeojson)(tile.content) : tile.content;
|
|
463
|
+
tile._contentWGS84 = content.map(function (feature) {
|
|
464
|
+
return transformTileCoordsToWGS84(feature, tile.bbox, _this.context.viewport);
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
return tile._contentWGS84;
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
}]);
|
|
475
|
+
return MVTLayer;
|
|
476
|
+
}(_tileLayer.default);
|
|
363
477
|
|
|
364
478
|
exports.default = MVTLayer;
|
|
365
479
|
|
|
@@ -386,14 +500,15 @@ function isFeatureIdDefined(value) {
|
|
|
386
500
|
}
|
|
387
501
|
|
|
388
502
|
function transformTileCoordsToWGS84(object, bbox, viewport) {
|
|
389
|
-
|
|
503
|
+
var feature = _objectSpread(_objectSpread({}, object), {}, {
|
|
390
504
|
geometry: {
|
|
391
505
|
type: object.geometry.type
|
|
392
506
|
}
|
|
393
|
-
};
|
|
507
|
+
});
|
|
508
|
+
|
|
394
509
|
Object.defineProperty(feature.geometry, 'coordinates', {
|
|
395
|
-
get: ()
|
|
396
|
-
|
|
510
|
+
get: function get() {
|
|
511
|
+
var wgs84Geom = (0, _coordinateTransform.transform)(object.geometry, bbox, viewport);
|
|
397
512
|
return wgs84Geom.coordinates;
|
|
398
513
|
}
|
|
399
514
|
});
|