@deck.gl/geo-layers 8.6.0-alpha.2 → 8.6.0
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 +5981 -2029
- package/dist/es5/h3-layers/h3-hexagon-layer.js +61 -46
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +2 -2
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +70 -55
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +42 -4
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +31 -33
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +102 -67
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +1 -1
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js +52 -38
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +2 -4
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-header.js +43 -31
- package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js +23 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +29 -33
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +34 -11
- 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 +3 -3
- package/src/h3-layers/h3-hexagon-layer.js +47 -37
- package/src/mvt-layer/mvt-layer.js +2 -2
- package/src/tile-3d-layer/tile-3d-layer.js +1 -1
- package/src/tile-layer/tile-2d-header.js +43 -32
- package/src/tile-layer/tile-2d-traversal.js +28 -2
- package/src/tile-layer/tile-layer.js +33 -34
- package/src/tile-layer/tileset-2d.js +29 -15
- package/src/tile-layer/utils.js +1 -1
|
@@ -156,7 +156,7 @@ function mergeTriggers(getHexagon, coverage) {
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
var defaultProps = _objectSpread(_objectSpread({}, _layers.PolygonLayer.defaultProps), {}, {
|
|
159
|
-
highPrecision:
|
|
159
|
+
highPrecision: 'auto',
|
|
160
160
|
coverage: {
|
|
161
161
|
type: 'number',
|
|
162
162
|
min: 0,
|
|
@@ -198,59 +198,74 @@ var H3HexagonLayer = function (_CompositeLayer) {
|
|
|
198
198
|
oldProps = _ref2.oldProps,
|
|
199
199
|
changeFlags = _ref2.changeFlags;
|
|
200
200
|
|
|
201
|
-
if (changeFlags.dataChanged || changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon) {
|
|
202
|
-
var
|
|
203
|
-
var hasPentagon = false;
|
|
204
|
-
var hasMultipleRes = false;
|
|
205
|
-
|
|
206
|
-
var _createIterable = (0, _core.createIterable)(props.data),
|
|
207
|
-
iterable = _createIterable.iterable,
|
|
208
|
-
objectInfo = _createIterable.objectInfo;
|
|
209
|
-
|
|
210
|
-
var _iterator3 = _createForOfIteratorHelper(iterable),
|
|
211
|
-
_step3;
|
|
212
|
-
|
|
213
|
-
try {
|
|
214
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
215
|
-
var object = _step3.value;
|
|
216
|
-
objectInfo.index++;
|
|
217
|
-
var hexId = props.getHexagon(object, objectInfo);
|
|
218
|
-
var hexResolution = (0, _h3Js.h3GetResolution)(hexId);
|
|
219
|
-
if (resolution < 0) resolution = hexResolution;else if (resolution !== hexResolution) {
|
|
220
|
-
hasMultipleRes = true;
|
|
221
|
-
break;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
if ((0, _h3Js.h3IsPentagon)(hexId)) {
|
|
225
|
-
hasPentagon = true;
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
} catch (err) {
|
|
230
|
-
_iterator3.e(err);
|
|
231
|
-
} finally {
|
|
232
|
-
_iterator3.f();
|
|
233
|
-
}
|
|
201
|
+
if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon)) {
|
|
202
|
+
var dataProps = this._calculateH3DataProps(props);
|
|
234
203
|
|
|
235
|
-
this.setState(
|
|
236
|
-
resolution: resolution,
|
|
237
|
-
edgeLengthKM: resolution >= 0 ? (0, _h3Js.edgeLength)(resolution, _h3Js.UNITS.km) : 0,
|
|
238
|
-
hasMultipleRes: hasMultipleRes,
|
|
239
|
-
hasPentagon: hasPentagon
|
|
240
|
-
});
|
|
204
|
+
this.setState(dataProps);
|
|
241
205
|
}
|
|
242
206
|
|
|
243
207
|
this._updateVertices(this.context.viewport);
|
|
244
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
|
+
}
|
|
248
|
+
|
|
249
|
+
return {
|
|
250
|
+
resolution: resolution,
|
|
251
|
+
edgeLengthKM: resolution >= 0 ? (0, _h3Js.edgeLength)(resolution, _h3Js.UNITS.km) : 0,
|
|
252
|
+
hasMultipleRes: hasMultipleRes,
|
|
253
|
+
hasPentagon: hasPentagon
|
|
254
|
+
};
|
|
255
|
+
}
|
|
245
256
|
}, {
|
|
246
257
|
key: "_shouldUseHighPrecision",
|
|
247
258
|
value: function _shouldUseHighPrecision() {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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
|
+
}
|
|
267
|
+
|
|
268
|
+
return this.props.highPrecision;
|
|
254
269
|
}
|
|
255
270
|
}, {
|
|
256
271
|
key: "_updateVertices",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","props","oldProps","dataChanged","updateTriggers","resolution","hasPentagon","hasMultipleRes","data","iterable","index","hexResolution","setState","edgeLengthKM","UNITS","km","_updateVertices","context","viewport","state","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","projectFlat","centerX","centerY","map","p","worldPosition","_renderPolygonLayer","_renderColumnLayer","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","SubLayerClass","getSubLayerClass","forwardProps","_getForwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","ColumnLayer","getPosition","diskResolution","radius","bind","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n UNITS\n} from 'h3-js';\nimport {lerp} from 'math.gl';\nimport {CompositeLayer, createIterable} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1, flatten) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n if (flatten) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n }\n\n return vertices;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: false,\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n// not supported\ndelete defaultProps.getLineDashArray;\n\n/**\n * A subclass of HexagonLayer that uses H3 hexagonIds in data objects\n * rather than centroid lat/longs. The shape of each hexagon is determined\n * based on a single \"center\" hexagon, which can be selected by passing in\n * a center lat/lon pair. If not provided, the map center will be used.\n *\n * Also sets the `hexagonId` field in the onHover/onClick callback's info\n * objects. Since this is calculated using math, hexagonId will be present\n * even when no corresponding hexagon is in the data set. You can check\n * index !== -1 to see if picking matches an actual object.\n */\nexport default class H3HexagonLayer extends CompositeLayer {\n shouldUpdateState({changeFlags}) {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon)\n ) {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n const {iterable, objectInfo} = createIterable(props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) resolution = hexResolution;\n else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n this.setState({\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, UNITS.km) : 0,\n hasMultipleRes,\n hasPentagon\n });\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _shouldUseHighPrecision() {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n this.props.highPrecision ||\n viewport.resolution ||\n hasMultipleRes ||\n hasPentagon ||\n (resolution >= 0 && resolution <= 5)\n );\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return h3ToPolygon(hexagonId, coverage, true);\n }\n }\n );\n }\n\n _renderColumnLayer() {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n\nH3HexagonLayer.defaultProps = defaultProps;\nH3HexagonLayer.layerName = 'H3HexagonLayer';\n"],"file":"h3-hexagon-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","props","oldProps","dataChanged","updateTriggers","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","resolution","hasPentagon","hasMultipleRes","data","iterable","index","hexResolution","edgeLengthKM","UNITS","km","state","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","projectFlat","centerX","centerY","map","p","worldPosition","_renderPolygonLayer","_renderColumnLayer","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","SubLayerClass","getSubLayerClass","forwardProps","_getForwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","ColumnLayer","getPosition","diskResolution","radius","bind","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n UNITS\n} from 'h3-js';\nimport {lerp} from 'math.gl';\nimport {CompositeLayer, createIterable} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1, flatten) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n if (flatten) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n }\n\n return vertices;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n// not supported\ndelete defaultProps.getLineDashArray;\n\n/**\n * A subclass of HexagonLayer that uses H3 hexagonIds in data objects\n * rather than centroid lat/longs. The shape of each hexagon is determined\n * based on a single \"center\" hexagon, which can be selected by passing in\n * a center lat/lon pair. If not provided, the map center will be used.\n *\n * Also sets the `hexagonId` field in the onHover/onClick callback's info\n * objects. Since this is calculated using math, hexagonId will be present\n * even when no corresponding hexagon is in the data set. You can check\n * index !== -1 to see if picking matches an actual object.\n */\nexport default class H3HexagonLayer extends CompositeLayer {\n shouldUpdateState({changeFlags}) {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps(props);\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _calculateH3DataProps(props) {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, UNITS.km) : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n _shouldUseHighPrecision() {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n viewport.resolution || hasMultipleRes || hasPentagon || (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return h3ToPolygon(hexagonId, coverage, true);\n }\n }\n );\n }\n\n _renderColumnLayer() {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n\nH3HexagonLayer.defaultProps = defaultProps;\nH3HexagonLayer.layerName = 'H3HexagonLayer';\n"],"file":"h3-hexagon-layer.js"}
|
|
@@ -69,7 +69,7 @@ var defaultProps = {
|
|
|
69
69
|
},
|
|
70
70
|
highlightedFeatureId: null,
|
|
71
71
|
loaders: [_mvt.MVTWorkerLoader],
|
|
72
|
-
binary:
|
|
72
|
+
binary: true
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
var MVTLayer = function (_TileLayer) {
|
|
@@ -336,7 +336,7 @@ var MVTLayer = function (_TileLayer) {
|
|
|
336
336
|
uniqueIdProperty = _this$props3.uniqueIdProperty,
|
|
337
337
|
highlightedFeatureId = _this$props3.highlightedFeatureId,
|
|
338
338
|
binary = _this$props3.binary;
|
|
339
|
-
var data = tile.
|
|
339
|
+
var data = tile.content;
|
|
340
340
|
var isHighlighted = isFeatureIdDefined(highlightedFeatureId);
|
|
341
341
|
var isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;
|
|
342
342
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","setState","data","tileJSON","props","oldProps","context","changeFlags","dataChanged","_updateTileData","state","_setWGS84PropertyForTiles","onDataLoad","fetch","propName","layer","raiseError","tilejson","tiles","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","GeoJsonLayer","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","Array","isArray","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","tileset","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","content","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from 'math.gl';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: false\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const {data} = tile;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","setState","data","tileJSON","props","oldProps","context","changeFlags","dataChanged","_updateTileData","state","_setWGS84PropertyForTiles","onDataLoad","fetch","propName","layer","raiseError","tilejson","tiles","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","GeoJsonLayer","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","Array","isArray","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","tileset","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from 'math.gl';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
@@ -186,7 +186,7 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
186
186
|
viewport = _ref4.viewport;
|
|
187
187
|
var tile = layer.props.tile;
|
|
188
188
|
var viewportId = viewport.id;
|
|
189
|
-
return
|
|
189
|
+
return tile.selected && tile.viewportIds.includes(viewportId);
|
|
190
190
|
}
|
|
191
191
|
}, {
|
|
192
192
|
key: "_updateAutoHighlight",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","layer","viewportId","visible","selected","viewportIds","includes","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","onTileLoadFail","setState","viewports","timeline","context","frameNumber","update","values","tilesetChanged","oldLayer","content","TILE_TYPE","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","PointCloudLayer","getSubLayerProps","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","ScenegraphLayer","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","Geometry","drawMode","getMeshGeometry","_MeshLayer","pbrMaterial","tiles","map","layerCache","_getSubLayer","filter","Boolean","isLoaded","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions","layerName"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\nimport {COORDINATE_SYSTEM, CompositeLayer} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as _MeshLayer} from '../mesh-layer/mesh-layer';\nimport {log} from '@deck.gl/core';\n\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n data: null,\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}, compare: false},\n onTileLoad: {type: 'function', value: tileHeader => {}, compare: false},\n onTileUnload: {type: 'function', value: tileHeader => {}, compare: false},\n onTileError: {type: 'function', value: (tile, message, url) => {}, compare: false},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}\n};\n\nexport default class Tile3DLayer extends CompositeLayer {\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded() {\n const {tileset3d} = this.state;\n return tileset3d && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (props.data && props.data !== oldProps.data) {\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport) {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}) {\n const {layerMap} = this.state;\n const layerId = sourceLayer && sourceLayer.id;\n if (layerId) {\n // layerId: this.id-[scenegraph|pointcloud]-tileId\n const substr = layerId.substring(this.id.length + 1);\n const tileId = substr.substring(substr.indexOf('-') + 1);\n info.object = layerMap[tileId] && layerMap[tileId].tile;\n }\n\n return info;\n }\n\n filterSubLayer({layer, viewport}) {\n const {tile} = layer.props;\n const {id: viewportId} = viewport;\n return this.props.visible && tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileLoadFail: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n _onTileLoad(tileHeader) {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tileHeader) {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n _updateTileset(viewports) {\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n const frameNumber = tileset3d.update(Object.values(viewports));\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n }\n\n _getSubLayer(tileHeader, oldLayer) {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader, oldLayer);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n _makePointCloudLayer(tileHeader, oldLayer) {\n const {\n attributes,\n pointCount,\n constantRGBA,\n cartographicOrigin,\n modelMatrix\n } = tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n _make3DModelLayer(tileHeader) {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n _makeSimpleMeshLayer(tileHeader, oldLayer) {\n const content = tileHeader.content;\n const {attributes, indices, modelMatrix, cartographicOrigin, material, featureIds} = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', _MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers() {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n return tileset3d.tiles\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes) {\n const attributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n\nTile3DLayer.layerName = 'Tile3DLayer';\nTile3DLayer.defaultProps = defaultProps;\n"],"file":"tile-3d-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","layer","viewportId","selected","viewportIds","includes","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","onTileLoadFail","setState","viewports","timeline","context","frameNumber","update","values","tilesetChanged","oldLayer","content","TILE_TYPE","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","PointCloudLayer","getSubLayerProps","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","ScenegraphLayer","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","Geometry","drawMode","getMeshGeometry","_MeshLayer","pbrMaterial","tiles","map","layerCache","_getSubLayer","filter","Boolean","isLoaded","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions","layerName"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\nimport {COORDINATE_SYSTEM, CompositeLayer} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as _MeshLayer} from '../mesh-layer/mesh-layer';\nimport {log} from '@deck.gl/core';\n\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n data: null,\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}, compare: false},\n onTileLoad: {type: 'function', value: tileHeader => {}, compare: false},\n onTileUnload: {type: 'function', value: tileHeader => {}, compare: false},\n onTileError: {type: 'function', value: (tile, message, url) => {}, compare: false},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}\n};\n\nexport default class Tile3DLayer extends CompositeLayer {\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded() {\n const {tileset3d} = this.state;\n return tileset3d && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (props.data && props.data !== oldProps.data) {\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport) {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}) {\n const {layerMap} = this.state;\n const layerId = sourceLayer && sourceLayer.id;\n if (layerId) {\n // layerId: this.id-[scenegraph|pointcloud]-tileId\n const substr = layerId.substring(this.id.length + 1);\n const tileId = substr.substring(substr.indexOf('-') + 1);\n info.object = layerMap[tileId] && layerMap[tileId].tile;\n }\n\n return info;\n }\n\n filterSubLayer({layer, viewport}) {\n const {tile} = layer.props;\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileLoadFail: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n _onTileLoad(tileHeader) {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tileHeader) {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n _updateTileset(viewports) {\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n const frameNumber = tileset3d.update(Object.values(viewports));\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n }\n\n _getSubLayer(tileHeader, oldLayer) {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader, oldLayer);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n _makePointCloudLayer(tileHeader, oldLayer) {\n const {\n attributes,\n pointCount,\n constantRGBA,\n cartographicOrigin,\n modelMatrix\n } = tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n _make3DModelLayer(tileHeader) {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n _makeSimpleMeshLayer(tileHeader, oldLayer) {\n const content = tileHeader.content;\n const {attributes, indices, modelMatrix, cartographicOrigin, material, featureIds} = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', _MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers() {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n return tileset3d.tiles\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes) {\n const attributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n\nTile3DLayer.layerName = 'Tile3DLayer';\nTile3DLayer.defaultProps = defaultProps;\n"],"file":"tile-3d-layer.js"}
|