@deck.gl/geo-layers 8.9.21 → 8.9.22
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 +21 -7
- package/dist/es5/geo-cell-layer/GeoCellLayer.js +12 -3
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-layer.js +6 -1
- package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-utils.js +5 -3
- package/dist/es5/quadkey-layer/quadkey-utils.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +14 -9
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js +6 -2
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-layer.js +6 -1
- package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-utils.js +4 -4
- package/dist/esm/quadkey-layer/quadkey-utils.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +6 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist.min.js +55 -55
- package/package.json +2 -2
- package/src/geo-cell-layer/GeoCellLayer.ts +3 -1
- package/src/mvt-layer/mvt-layer.ts +1 -1
- package/src/quadkey-layer/quadkey-layer.ts +5 -2
- package/src/quadkey-layer/quadkey-utils.ts +4 -4
- package/src/tile-3d-layer/tile-3d-layer.ts +5 -1
- package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
- package/typed/mvt-layer/mvt-layer.d.ts +1 -1
- package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
- package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
- package/typed/quadkey-layer/quadkey-utils.d.ts +2 -2
- package/typed/quadkey-layer/quadkey-utils.d.ts.map +1 -1
- package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -6264,6 +6264,10 @@ var __exports__ = (() => {
|
|
|
6264
6264
|
transitions
|
|
6265
6265
|
} = this.props;
|
|
6266
6266
|
const CellLayer = this.getSubLayerClass("cell", import_layers4.PolygonLayer);
|
|
6267
|
+
const {
|
|
6268
|
+
updateTriggers: boundsUpdateTriggers,
|
|
6269
|
+
...boundsProps
|
|
6270
|
+
} = this.indexToBounds() || {};
|
|
6267
6271
|
return new CellLayer({
|
|
6268
6272
|
filled,
|
|
6269
6273
|
wireframe,
|
|
@@ -6286,12 +6290,13 @@ var __exports__ = (() => {
|
|
|
6286
6290
|
}, this.getSubLayerProps({
|
|
6287
6291
|
id: "cell",
|
|
6288
6292
|
updateTriggers: updateTriggers && {
|
|
6293
|
+
...boundsUpdateTriggers,
|
|
6289
6294
|
getElevation: updateTriggers.getElevation,
|
|
6290
6295
|
getFillColor: updateTriggers.getFillColor,
|
|
6291
6296
|
getLineColor: updateTriggers.getLineColor,
|
|
6292
6297
|
getLineWidth: updateTriggers.getLineWidth
|
|
6293
6298
|
}
|
|
6294
|
-
}),
|
|
6299
|
+
}), boundsProps);
|
|
6295
6300
|
}
|
|
6296
6301
|
};
|
|
6297
6302
|
__publicField(GeoCellLayer, "layerName", "GeoCellLayer");
|
|
@@ -6487,7 +6492,7 @@ var __exports__ = (() => {
|
|
|
6487
6492
|
|
|
6488
6493
|
// src/quadkey-layer/quadkey-utils.ts
|
|
6489
6494
|
var TILE_SIZE2 = 512;
|
|
6490
|
-
function quadkeyToWorldBounds(quadkey) {
|
|
6495
|
+
function quadkeyToWorldBounds(quadkey, coverage) {
|
|
6491
6496
|
let x2 = 0;
|
|
6492
6497
|
let y2 = 0;
|
|
6493
6498
|
let mask = 1 << quadkey.length;
|
|
@@ -6500,10 +6505,10 @@ var __exports__ = (() => {
|
|
|
6500
6505
|
if (q > 1)
|
|
6501
6506
|
y2 |= mask;
|
|
6502
6507
|
}
|
|
6503
|
-
return [[x2 / scale5, TILE_SIZE2 - y2 / scale5], [(x2 +
|
|
6508
|
+
return [[x2 / scale5, TILE_SIZE2 - y2 / scale5], [(x2 + coverage) / scale5, TILE_SIZE2 - (y2 + coverage) / scale5]];
|
|
6504
6509
|
}
|
|
6505
|
-
function getQuadkeyPolygon(quadkey) {
|
|
6506
|
-
const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);
|
|
6510
|
+
function getQuadkeyPolygon(quadkey, coverage = 1) {
|
|
6511
|
+
const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey, coverage);
|
|
6507
6512
|
const [w, n2] = worldToLngLat(topLeft);
|
|
6508
6513
|
const [e, s2] = worldToLngLat(bottomRight);
|
|
6509
6514
|
return [e, n2, e, s2, w, s2, w, n2, e, n2];
|
|
@@ -6520,13 +6525,18 @@ var __exports__ = (() => {
|
|
|
6520
6525
|
indexToBounds() {
|
|
6521
6526
|
const {
|
|
6522
6527
|
data,
|
|
6528
|
+
extruded,
|
|
6523
6529
|
getQuadkey
|
|
6524
6530
|
} = this.props;
|
|
6531
|
+
const coverage = extruded ? 0.99 : 1;
|
|
6525
6532
|
return {
|
|
6526
6533
|
data,
|
|
6527
6534
|
_normalize: false,
|
|
6528
6535
|
positionFormat: "XY",
|
|
6529
|
-
getPolygon: (x2, objectInfo) => getQuadkeyPolygon(getQuadkey(x2, objectInfo))
|
|
6536
|
+
getPolygon: (x2, objectInfo) => getQuadkeyPolygon(getQuadkey(x2, objectInfo), coverage),
|
|
6537
|
+
updateTriggers: {
|
|
6538
|
+
getPolygon: coverage
|
|
6539
|
+
}
|
|
6530
6540
|
};
|
|
6531
6541
|
}
|
|
6532
6542
|
};
|
|
@@ -26234,8 +26244,12 @@ void main(void) {
|
|
|
26234
26244
|
...loadOptions
|
|
26235
26245
|
}
|
|
26236
26246
|
};
|
|
26247
|
+
let actualTilesetUrl = tilesetUrl;
|
|
26237
26248
|
if (loader.preload) {
|
|
26238
26249
|
const preloadOptions = await loader.preload(tilesetUrl, loadOptions);
|
|
26250
|
+
if (preloadOptions.url) {
|
|
26251
|
+
actualTilesetUrl = preloadOptions.url;
|
|
26252
|
+
}
|
|
26239
26253
|
if (preloadOptions.headers) {
|
|
26240
26254
|
options.loadOptions.fetch = {
|
|
26241
26255
|
...options.loadOptions.fetch,
|
|
@@ -26244,7 +26258,7 @@ void main(void) {
|
|
|
26244
26258
|
}
|
|
26245
26259
|
Object.assign(options, preloadOptions);
|
|
26246
26260
|
}
|
|
26247
|
-
const tilesetJson = await (0, import_core45.load)(
|
|
26261
|
+
const tilesetJson = await (0, import_core45.load)(actualTilesetUrl, loader, options.loadOptions);
|
|
26248
26262
|
const tileset3d = new Tileset3D(tilesetJson, {
|
|
26249
26263
|
onTileLoad: this._onTileLoad.bind(this),
|
|
26250
26264
|
onTileUnload: this._onTileUnload.bind(this),
|
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -23,6 +25,8 @@ var _core = require("@deck.gl/core");
|
|
|
23
25
|
|
|
24
26
|
var _layers = require("@deck.gl/layers");
|
|
25
27
|
|
|
28
|
+
var _excluded = ["updateTriggers"];
|
|
29
|
+
|
|
26
30
|
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); }; }
|
|
27
31
|
|
|
28
32
|
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; } }
|
|
@@ -73,6 +77,11 @@ var GeoCellLayer = function (_CompositeLayer) {
|
|
|
73
77
|
material = _this$props2.material,
|
|
74
78
|
transitions = _this$props2.transitions;
|
|
75
79
|
var CellLayer = this.getSubLayerClass('cell', _layers.PolygonLayer);
|
|
80
|
+
|
|
81
|
+
var _ref = this.indexToBounds() || {},
|
|
82
|
+
boundsUpdateTriggers = _ref.updateTriggers,
|
|
83
|
+
boundsProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
84
|
+
|
|
76
85
|
return new CellLayer({
|
|
77
86
|
filled: filled,
|
|
78
87
|
wireframe: wireframe,
|
|
@@ -94,13 +103,13 @@ var GeoCellLayer = function (_CompositeLayer) {
|
|
|
94
103
|
getLineWidth: getLineWidth
|
|
95
104
|
}, this.getSubLayerProps({
|
|
96
105
|
id: 'cell',
|
|
97
|
-
updateTriggers: updateTriggers && {
|
|
106
|
+
updateTriggers: updateTriggers && _objectSpread(_objectSpread({}, boundsUpdateTriggers), {}, {
|
|
98
107
|
getElevation: updateTriggers.getElevation,
|
|
99
108
|
getFillColor: updateTriggers.getFillColor,
|
|
100
109
|
getLineColor: updateTriggers.getLineColor,
|
|
101
110
|
getLineWidth: updateTriggers.getLineWidth
|
|
102
|
-
}
|
|
103
|
-
}),
|
|
111
|
+
})
|
|
112
|
+
}), boundsProps);
|
|
104
113
|
}
|
|
105
114
|
}]);
|
|
106
115
|
return GeoCellLayer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/geo-cell-layer/GeoCellLayer.ts"],"names":["defaultProps","PolygonLayer","GeoCellLayer","props","elevationScale","extruded","wireframe","filled","stroked","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","lineJointRounded","lineMiterLimit","lineDashJustified","getElevation","getFillColor","getLineColor","getLineWidth","updateTriggers","material","transitions","CellLayer","getSubLayerClass","
|
|
1
|
+
{"version":3,"sources":["../../../src/geo-cell-layer/GeoCellLayer.ts"],"names":["defaultProps","PolygonLayer","GeoCellLayer","props","elevationScale","extruded","wireframe","filled","stroked","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","lineJointRounded","lineMiterLimit","lineDashJustified","getElevation","getFillColor","getLineColor","getLineWidth","updateTriggers","material","transitions","CellLayer","getSubLayerClass","indexToBounds","boundsUpdateTriggers","boundsProps","getSubLayerProps","id","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;;;AAEA,IAAMA,YAA6C,qBAC9CC,qBAAaD,YADiC,CAAnD;;IAOqBE,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,aAAO,IAAP;AACD;;;WAED,wBAA0C;AAExC,wBAiBI,KAAKC,KAjBT;AAAA,UACEC,cADF,eACEA,cADF;AAAA,UAEEC,QAFF,eAEEA,QAFF;AAAA,UAGEC,SAHF,eAGEA,SAHF;AAAA,UAIEC,MAJF,eAIEA,MAJF;AAAA,UAKEC,OALF,eAKEA,OALF;AAAA,UAMEC,cANF,eAMEA,cANF;AAAA,UAOEC,cAPF,eAOEA,cAPF;AAAA,UAQEC,kBARF,eAQEA,kBARF;AAAA,UASEC,kBATF,eASEA,kBATF;AAAA,UAUEC,gBAVF,eAUEA,gBAVF;AAAA,UAWEC,cAXF,eAWEA,cAXF;AAAA,UAYEC,iBAZF,eAYEA,iBAZF;AAAA,UAaEC,YAbF,eAaEA,YAbF;AAAA,UAcEC,YAdF,eAcEA,YAdF;AAAA,UAeEC,YAfF,eAeEA,YAfF;AAAA,UAgBEC,YAhBF,eAgBEA,YAhBF;AAoBA,yBAAgD,KAAKhB,KAArD;AAAA,UAAOiB,cAAP,gBAAOA,cAAP;AAAA,UAAuBC,QAAvB,gBAAuBA,QAAvB;AAAA,UAAiCC,WAAjC,gBAAiCA,WAAjC;AAGA,UAAMC,SAAS,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8BvB,oBAA9B,CAAlB;;AACA,iBAA+D,KAAKwB,aAAL,MAAwB,EAAvF;AAAA,UAAuBC,oBAAvB,QAAON,cAAP;AAAA,UAAgDO,WAAhD;;AACA,aAAO,IAAIJ,SAAJ,CACL;AACEhB,QAAAA,MAAM,EAANA,MADF;AAEED,QAAAA,SAAS,EAATA,SAFF;AAIED,QAAAA,QAAQ,EAARA,QAJF;AAKED,QAAAA,cAAc,EAAdA,cALF;AAOEI,QAAAA,OAAO,EAAPA,OAPF;AAQEC,QAAAA,cAAc,EAAdA,cARF;AASEC,QAAAA,cAAc,EAAdA,cATF;AAUEC,QAAAA,kBAAkB,EAAlBA,kBAVF;AAWEC,QAAAA,kBAAkB,EAAlBA,kBAXF;AAYEC,QAAAA,gBAAgB,EAAhBA,gBAZF;AAaEC,QAAAA,cAAc,EAAdA,cAbF;AAcEC,QAAAA,iBAAiB,EAAjBA,iBAdF;AAgBEM,QAAAA,QAAQ,EAARA,QAhBF;AAiBEC,QAAAA,WAAW,EAAXA,WAjBF;AAmBEN,QAAAA,YAAY,EAAZA,YAnBF;AAoBEC,QAAAA,YAAY,EAAZA,YApBF;AAqBEC,QAAAA,YAAY,EAAZA,YArBF;AAsBEC,QAAAA,YAAY,EAAZA;AAtBF,OADK,EAyBL,KAAKS,gBAAL,CAAsB;AACpBC,QAAAA,EAAE,EAAE,MADgB;AAEpBT,QAAAA,cAAc,EAAEA,cAAc,oCACzBM,oBADyB;AAE5BV,UAAAA,YAAY,EAAEI,cAAc,CAACJ,YAFD;AAG5BC,UAAAA,YAAY,EAAEG,cAAc,CAACH,YAHD;AAI5BC,UAAAA,YAAY,EAAEE,cAAc,CAACF,YAJD;AAK5BC,UAAAA,YAAY,EAAEC,cAAc,CAACD;AALD;AAFV,OAAtB,CAzBK,EAmCLQ,WAnCK,CAAP;AAqCD;;;EA3EgFG,oB;;;8BAA9D5B,Y,eAGA,c;8BAHAA,Y,kBAIiBF,Y","sourcesContent":["import {CompositeLayer, Layer, LayersList, DefaultProps} from '@deck.gl/core';\nimport {PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\nconst defaultProps: DefaultProps<GeoCellLayerProps> = {\n ...PolygonLayer.defaultProps\n};\n\n/** All properties supported by GeoCellLayer. */\nexport type GeoCellLayerProps<DataT = any> = PolygonLayerProps<DataT>;\n\nexport default class GeoCellLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<\n Required<GeoCellLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'GeoCellLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n /** Implement to generate props to create geometry. */\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n return null;\n }\n\n renderLayers(): Layer | null | LayersList {\n // Rendering props underlying layer\n const {\n elevationScale,\n extruded,\n wireframe,\n filled,\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n } = this.props;\n\n // Accessor props for underlying layers\n const {updateTriggers, material, transitions} = this.props;\n\n // Filled Polygon Layer\n const CellLayer = this.getSubLayerClass('cell', PolygonLayer);\n const {updateTriggers: boundsUpdateTriggers, ...boundsProps} = this.indexToBounds() || {};\n return new CellLayer(\n {\n filled,\n wireframe,\n\n extruded,\n elevationScale,\n\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n\n material,\n transitions,\n\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n },\n this.getSubLayerProps({\n id: 'cell',\n updateTriggers: updateTriggers && {\n ...boundsUpdateTriggers,\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n }),\n boundsProps\n );\n }\n}\n"],"file":"GeoCellLayer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.ts"],"names":["WORLD_SIZE","defaultProps","GeoJsonLayer","data","urlType","onDataLoad","type","value","optional","compare","uniqueIdProperty","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","context","viewport","resolution","undefined","props","setState","tileJSON","state","tileset","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","fetch","propName","layer","raiseError","tilejson","tiles","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","loadProps","index","signal","url","Promise","reject","loadOptions","getLoadOptions","mimeType","mvt","coordinates","tileIndex","gis","format","tile","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","Boolean","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n GetPickingInfoParams,\n Viewport,\n COORDINATE_SYSTEM,\n DefaultProps\n} from '@deck.gl/core';\nimport {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';\n\nimport type {Tileset2DProps, TileLoadProps, GeoBoundingBox} from '../tileset-2d';\nimport {\n urlType,\n Tileset2D,\n Tile2DHeader,\n getURLFromTemplate,\n isGeoBoundingBox,\n isURLTemplate\n} from '../tileset-2d';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps: DefaultProps<MVTLayerProps> = {\n ...GeoJsonLayer.defaultProps,\n data: urlType,\n onDataLoad: {type: 'function', value: null, optional: true, compare: false},\n uniqueIdProperty: '',\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport type TileJson = {\n tilejson: string;\n tiles: string[];\n // eslint-disable-next-line camelcase\n vector_layers: any[];\n attribution?: string;\n scheme?: string;\n maxzoom?: number;\n minzoom?: number;\n version?: string;\n};\n\ntype ParsedMvtTile = Feature[] | BinaryFeatures;\n\n/** All props supported by the MVTLayer */\nexport type MVTLayerProps = _MVTLayerProps &\n Omit<GeoJsonLayerProps, 'data'> &\n TileLayerProps<ParsedMvtTile>;\n\n/** Props added by the MVTLayer */\nexport type _MVTLayerProps = {\n /** Called if `data` is a TileJSON URL when it is successfully fetched. */\n onDataLoad?: ((tilejson: TileJson | null) => void) | null;\n\n /** Needed for highlighting a feature split across two or more tiles. */\n uniqueIdProperty?: string;\n\n /** A feature with ID corresponding to the supplied value will be highlighted. */\n highlightedFeatureId?: string | null;\n\n /**\n * Use tile data in binary format.\n *\n * @default true\n */\n binary?: boolean;\n\n /**\n * Loaders used to transform tiles into `data` property passed to `renderSubLayers`.\n *\n * @default [MVTWorkerLoader] from `@loaders.gl/mvt`\n */\n loaders?: Loader[];\n};\n\ntype ContentWGS84Cache = {_contentWGS84?: Feature[]};\n\n/** Render data formatted as [Mapbox Vector Tiles](https://docs.mapbox.com/vector-tiles/specification/). */\nexport default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<\n ParsedMvtTile,\n Required<_MVTLayerProps> & ExtraProps\n> {\n static layerName = 'MVTLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded(): boolean {\n return this.state && this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {\n if (changeFlags.dataChanged) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateTileData();\n }\n\n if (this.state?.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n private async _updateTileData(): Promise<void> {\n let data: any = this.props.data;\n let tileJSON: any = 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: any) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON, {propName: 'data', layer: this});\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(): Tileset2DProps {\n const opts = super._getTilesetOptions();\n const tileJSON: TileJson | null | undefined = this.state.tileJSON;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {\n opts.minZoom = tileJSON.minzoom as number;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))\n ) {\n opts.maxZoom = tileJSON.maxzoom as number;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers(): Layer | null | LayersList {\n if (!this.state?.data) return null;\n return super.renderLayers();\n }\n\n getTileData(loadProps: TileLoadProps): Promise<ParsedMvtTile> {\n const {data, binary} = this.state;\n const {index, signal} = loadProps;\n\n const url = getURLFromTemplate(data, loadProps);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\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(\n props: TileLayer['props'] & {\n id: string;\n data: ParsedMvtTile;\n _offset: number;\n tile: Tile2DHeader<ParsedMvtTile>;\n }\n ): Layer | null | LayersList {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - 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.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\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 let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): TiledPickingInfo {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = Boolean(this.context.viewport.resolution);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {\n globalFeatureId: info.index\n }) as Feature;\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(\n info.object,\n info.tile!.bbox as GeoBoundingBox, // eslint-disable-line\n this.context.viewport\n );\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader<ParsedMvtTile>): Record<string, any> {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n private getHighlightedObjectIndex(tile: Tile2DHeader<ParsedMvtTile>): number {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = 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 private _pickObjects(maxObjects: number | null): PickingInfo[] {\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 /** Get the rendered features in the current viewport. */\n getRenderedFeatures(maxFeatures: number | null = null): Feature[] {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures: Feature[] = [];\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 as Feature);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object as Feature);\n }\n }\n\n return renderedFeatures;\n }\n\n private _setWGS84PropertyForTiles(): void {\n const propName = 'dataInWGS84';\n const tileset: Tileset2D = this.state.tileset;\n\n // @ts-expect-error selectedTiles are always initialized when tile is being processed\n tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {\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.state.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 const {bbox} = tile;\n if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n // Create a cache to transform only once\n\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature: Feature, uniqueIdProperty: string | undefined) {\n if (feature.properties && 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: Feature): string | null {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(\n object: Feature,\n bbox: GeoBoundingBox,\n viewport: Viewport\n): Feature {\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 as Feature;\n}\n"],"file":"mvt-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.ts"],"names":["WORLD_SIZE","defaultProps","GeoJsonLayer","data","urlType","onDataLoad","type","value","optional","compare","uniqueIdProperty","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","context","viewport","resolution","undefined","props","setState","tileJSON","state","tileset","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","fetch","propName","layer","raiseError","tilejson","tiles","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","loadProps","index","signal","url","Promise","reject","loadOptions","getLoadOptions","mimeType","mvt","coordinates","tileIndex","gis","format","tile","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","Boolean","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n GetPickingInfoParams,\n Viewport,\n COORDINATE_SYSTEM,\n DefaultProps\n} from '@deck.gl/core';\nimport {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';\n\nimport type {Tileset2DProps, TileLoadProps, GeoBoundingBox} from '../tileset-2d';\nimport {\n urlType,\n Tileset2D,\n Tile2DHeader,\n getURLFromTemplate,\n isGeoBoundingBox,\n isURLTemplate\n} from '../tileset-2d';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps: DefaultProps<MVTLayerProps> = {\n ...GeoJsonLayer.defaultProps,\n data: urlType,\n onDataLoad: {type: 'function', value: null, optional: true, compare: false},\n uniqueIdProperty: '',\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport type TileJson = {\n tilejson: string;\n tiles: string[];\n // eslint-disable-next-line camelcase\n vector_layers: any[];\n attribution?: string;\n scheme?: string;\n maxzoom?: number;\n minzoom?: number;\n version?: string;\n};\n\ntype ParsedMvtTile = Feature[] | BinaryFeatures;\n\n/** All props supported by the MVTLayer */\nexport type MVTLayerProps = _MVTLayerProps &\n Omit<GeoJsonLayerProps, 'data'> &\n TileLayerProps<ParsedMvtTile>;\n\n/** Props added by the MVTLayer */\nexport type _MVTLayerProps = {\n /** Called if `data` is a TileJSON URL when it is successfully fetched. */\n onDataLoad?: ((tilejson: TileJson | null) => void) | null;\n\n /** Needed for highlighting a feature split across two or more tiles. */\n uniqueIdProperty?: string;\n\n /** A feature with ID corresponding to the supplied value will be highlighted. */\n highlightedFeatureId?: string | number | null;\n\n /**\n * Use tile data in binary format.\n *\n * @default true\n */\n binary?: boolean;\n\n /**\n * Loaders used to transform tiles into `data` property passed to `renderSubLayers`.\n *\n * @default [MVTWorkerLoader] from `@loaders.gl/mvt`\n */\n loaders?: Loader[];\n};\n\ntype ContentWGS84Cache = {_contentWGS84?: Feature[]};\n\n/** Render data formatted as [Mapbox Vector Tiles](https://docs.mapbox.com/vector-tiles/specification/). */\nexport default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<\n ParsedMvtTile,\n Required<_MVTLayerProps> & ExtraProps\n> {\n static layerName = 'MVTLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded(): boolean {\n return this.state && this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {\n if (changeFlags.dataChanged) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateTileData();\n }\n\n if (this.state?.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n private async _updateTileData(): Promise<void> {\n let data: any = this.props.data;\n let tileJSON: any = 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: any) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON, {propName: 'data', layer: this});\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(): Tileset2DProps {\n const opts = super._getTilesetOptions();\n const tileJSON: TileJson | null | undefined = this.state.tileJSON;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {\n opts.minZoom = tileJSON.minzoom as number;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))\n ) {\n opts.maxZoom = tileJSON.maxzoom as number;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers(): Layer | null | LayersList {\n if (!this.state?.data) return null;\n return super.renderLayers();\n }\n\n getTileData(loadProps: TileLoadProps): Promise<ParsedMvtTile> {\n const {data, binary} = this.state;\n const {index, signal} = loadProps;\n\n const url = getURLFromTemplate(data, loadProps);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\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(\n props: TileLayer['props'] & {\n id: string;\n data: ParsedMvtTile;\n _offset: number;\n tile: Tile2DHeader<ParsedMvtTile>;\n }\n ): Layer | null | LayersList {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - 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.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\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 let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): TiledPickingInfo {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = Boolean(this.context.viewport.resolution);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {\n globalFeatureId: info.index\n }) as Feature;\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(\n info.object,\n info.tile!.bbox as GeoBoundingBox, // eslint-disable-line\n this.context.viewport\n );\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader<ParsedMvtTile>): Record<string, any> {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n private getHighlightedObjectIndex(tile: Tile2DHeader<ParsedMvtTile>): number {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = 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 private _pickObjects(maxObjects: number | null): PickingInfo[] {\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 /** Get the rendered features in the current viewport. */\n getRenderedFeatures(maxFeatures: number | null = null): Feature[] {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures: Feature[] = [];\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 as Feature);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object as Feature);\n }\n }\n\n return renderedFeatures;\n }\n\n private _setWGS84PropertyForTiles(): void {\n const propName = 'dataInWGS84';\n const tileset: Tileset2D = this.state.tileset;\n\n // @ts-expect-error selectedTiles are always initialized when tile is being processed\n tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {\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.state.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 const {bbox} = tile;\n if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n // Create a cache to transform only once\n\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature: Feature, uniqueIdProperty: string | undefined) {\n if (feature.properties && 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: Feature): string | null {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(\n object: Feature,\n bbox: GeoBoundingBox,\n viewport: Viewport\n): Feature {\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 as Feature;\n}\n"],"file":"mvt-layer.js"}
|
|
@@ -51,13 +51,18 @@ var QuadkeyLayer = function (_GeoCellLayer) {
|
|
|
51
51
|
value: function indexToBounds() {
|
|
52
52
|
var _this$props = this.props,
|
|
53
53
|
data = _this$props.data,
|
|
54
|
+
extruded = _this$props.extruded,
|
|
54
55
|
getQuadkey = _this$props.getQuadkey;
|
|
56
|
+
var coverage = extruded ? 0.99 : 1;
|
|
55
57
|
return {
|
|
56
58
|
data: data,
|
|
57
59
|
_normalize: false,
|
|
58
60
|
positionFormat: 'XY',
|
|
59
61
|
getPolygon: function getPolygon(x, objectInfo) {
|
|
60
|
-
return (0, _quadkeyUtils.getQuadkeyPolygon)(getQuadkey(x, objectInfo));
|
|
62
|
+
return (0, _quadkeyUtils.getQuadkeyPolygon)(getQuadkey(x, objectInfo), coverage);
|
|
63
|
+
},
|
|
64
|
+
updateTriggers: {
|
|
65
|
+
getPolygon: coverage
|
|
61
66
|
}
|
|
62
67
|
};
|
|
63
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.ts"],"names":["defaultProps","getQuadkey","type","value","d","quadkey","QuadkeyLayer","props","data","_normalize","positionFormat","getPolygon","x","objectInfo","GeoCellLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAEA,IAAMA,YAA6C,GAAG;AACpDC,EAAAA,UAAU,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAC,CAAC;AAAA,aAAIA,CAAC,CAACC,OAAN;AAAA;AAA3B;AADwC,CAAtD;;IAkBqBC,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,
|
|
1
|
+
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.ts"],"names":["defaultProps","getQuadkey","type","value","d","quadkey","QuadkeyLayer","props","data","extruded","coverage","_normalize","positionFormat","getPolygon","x","objectInfo","updateTriggers","GeoCellLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAEA,IAAMA,YAA6C,GAAG;AACpDC,EAAAA,UAAU,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAC,CAAC;AAAA,aAAIA,CAAC,CAACC,OAAN;AAAA;AAA3B;AADwC,CAAtD;;IAkBqBC,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,wBAAqC,KAAKC,KAA1C;AAAA,UAAOC,IAAP,eAAOA,IAAP;AAAA,UAAaC,QAAb,eAAaA,QAAb;AAAA,UAAuBR,UAAvB,eAAuBA,UAAvB;AAEA,UAAMS,QAAQ,GAAGD,QAAQ,GAAG,IAAH,GAAU,CAAnC;AAEA,aAAO;AACLD,QAAAA,IAAI,EAAJA,IADK;AAELG,QAAAA,UAAU,EAAE,KAFP;AAGLC,QAAAA,cAAc,EAAE,IAHX;AAKLC,QAAAA,UAAU,EAAE,oBAACC,CAAD,EAAWC,UAAX;AAAA,iBAA0B,qCAAkBd,UAAU,CAACa,CAAD,EAAIC,UAAJ,CAA5B,EAA6CL,QAA7C,CAA1B;AAAA,SALP;AAMLM,QAAAA,cAAc,EAAE;AAACH,UAAAA,UAAU,EAAEH;AAAb;AANX,OAAP;AAQD;;;EApBgFO,sB;;;8BAA9DX,Y,eAIA,c;8BAJAA,Y,kBAKGN,Y","sourcesContent":["import {AccessorFunction, DefaultProps} from '@deck.gl/core';\nimport GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';\nimport {getQuadkeyPolygon} from './quadkey-utils';\n\nconst defaultProps: DefaultProps<QuadkeyLayerProps> = {\n getQuadkey: {type: 'accessor', value: d => d.quadkey}\n};\n\n/** All properties supported by QuadkeyLayer. */\nexport type QuadkeyLayerProps<DataT = any> = _QuadkeyLayerProps<DataT> & GeoCellLayerProps<DataT>;\n\n/** Properties added by QuadkeyLayer. */\ntype _QuadkeyLayerProps<DataT> = {\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `quadkey` property of data object.\n */\n getQuadkey?: AccessorFunction<DataT, string>;\n};\n\n/** Render filled and/or stroked polygons based on the [Quadkey](https://towardsdatascience.com/geospatial-indexing-with-quadkeys-d933dff01496) geospatial indexing system. */\nexport default class QuadkeyLayer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<\n DataT,\n Required<_QuadkeyLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'QuadkeyLayer';\n static defaultProps = defaultProps;\n\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n const {data, extruded, getQuadkey} = this.props;\n // To avoid z-fighting reduce polygon footprint when extruding\n const coverage = extruded ? 0.99 : 1;\n\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n\n getPolygon: (x: DataT, objectInfo) => getQuadkeyPolygon(getQuadkey(x, objectInfo), coverage),\n updateTriggers: {getPolygon: coverage}\n };\n }\n}\n"],"file":"quadkey-layer.js"}
|
|
@@ -14,7 +14,7 @@ var _webMercator = require("@math.gl/web-mercator");
|
|
|
14
14
|
|
|
15
15
|
var TILE_SIZE = 512;
|
|
16
16
|
|
|
17
|
-
function quadkeyToWorldBounds(quadkey) {
|
|
17
|
+
function quadkeyToWorldBounds(quadkey, coverage) {
|
|
18
18
|
var x = 0;
|
|
19
19
|
var y = 0;
|
|
20
20
|
var mask = 1 << quadkey.length;
|
|
@@ -27,11 +27,13 @@ function quadkeyToWorldBounds(quadkey) {
|
|
|
27
27
|
if (q > 1) y |= mask;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
return [[x / scale, TILE_SIZE - y / scale], [(x +
|
|
30
|
+
return [[x / scale, TILE_SIZE - y / scale], [(x + coverage) / scale, TILE_SIZE - (y + coverage) / scale]];
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function getQuadkeyPolygon(quadkey) {
|
|
34
|
-
var
|
|
34
|
+
var coverage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
35
|
+
|
|
36
|
+
var _quadkeyToWorldBounds = quadkeyToWorldBounds(quadkey, coverage),
|
|
35
37
|
_quadkeyToWorldBounds2 = (0, _slicedToArray2.default)(_quadkeyToWorldBounds, 2),
|
|
36
38
|
topLeft = _quadkeyToWorldBounds2[0],
|
|
37
39
|
bottomRight = _quadkeyToWorldBounds2[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.ts"],"names":["TILE_SIZE","quadkeyToWorldBounds","quadkey","x","y","mask","length","scale","i","q","parseInt","getQuadkeyPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":";;;;;;;;;;;;AAAA;;AAEA,IAAMA,SAAS,GAAG,GAAlB;;AAEO,SAASC,oBAAT,CAA8BC,OAA9B,
|
|
1
|
+
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.ts"],"names":["TILE_SIZE","quadkeyToWorldBounds","quadkey","coverage","x","y","mask","length","scale","i","q","parseInt","getQuadkeyPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":";;;;;;;;;;;;AAAA;;AAEA,IAAMA,SAAS,GAAG,GAAlB;;AAEO,SAASC,oBAAT,CAA8BC,OAA9B,EAA+CC,QAA/C,EAAuF;AAC5F,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,IAAI,GAAG,KAAKJ,OAAO,CAACK,MAAxB;AACA,MAAMC,KAAK,GAAGF,IAAI,GAAGN,SAArB;;AAEA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,OAAO,CAACK,MAA5B,EAAoCE,CAAC,EAArC,EAAyC;AACvCH,IAAAA,IAAI,KAAK,CAAT;AACA,QAAMI,CAAC,GAAGC,QAAQ,CAACT,OAAO,CAACO,CAAD,CAAR,CAAlB;AACA,QAAIC,CAAC,GAAG,CAAR,EAAWN,CAAC,IAAIE,IAAL;AACX,QAAII,CAAC,GAAG,CAAR,EAAWL,CAAC,IAAIC,IAAL;AACZ;;AACD,SAAO,CACL,CAACF,CAAC,GAAGI,KAAL,EAAYR,SAAS,GAAGK,CAAC,GAAGG,KAA5B,CADK,EAEL,CAAC,CAACJ,CAAC,GAAGD,QAAL,IAAiBK,KAAlB,EAAyBR,SAAS,GAAG,CAACK,CAAC,GAAGF,QAAL,IAAiBK,KAAtD,CAFK,CAAP;AAID;;AAEM,SAASI,iBAAT,CAA2BV,OAA3B,EAAoE;AAAA,MAAxBC,QAAwB,uEAAb,CAAa;;AACzE,8BAA+BF,oBAAoB,CAACC,OAAD,EAAUC,QAAV,CAAnD;AAAA;AAAA,MAAOU,OAAP;AAAA,MAAgBC,WAAhB;;AACA,uBAAe,gCAAcD,OAAd,CAAf;AAAA;AAAA,MAAOE,CAAP;AAAA,MAAUC,CAAV;;AACA,wBAAe,gCAAcF,WAAd,CAAf;AAAA;AAAA,MAAOG,CAAP;AAAA,MAAUC,CAAV;;AACA,SAAO,CAACD,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaH,CAAb,EAAgBG,CAAhB,EAAmBH,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\n\nconst TILE_SIZE = 512;\n\nexport function quadkeyToWorldBounds(quadkey: string, coverage: number): [number[], number[]] {\n let x = 0;\n let y = 0;\n let mask = 1 << quadkey.length;\n const scale = mask / TILE_SIZE;\n\n for (let i = 0; i < quadkey.length; i++) {\n mask >>= 1;\n const q = parseInt(quadkey[i]);\n if (q % 2) x |= mask;\n if (q > 1) y |= mask;\n }\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + coverage) / scale, TILE_SIZE - (y + coverage) / scale]\n ];\n}\n\nexport function getQuadkeyPolygon(quadkey: string, coverage = 1): number[] {\n const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey, coverage);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadkey-utils.js"}
|
|
@@ -213,7 +213,7 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
213
213
|
key: "_loadTileset",
|
|
214
214
|
value: function () {
|
|
215
215
|
var _loadTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tilesetUrl) {
|
|
216
|
-
var _this$props$loadOptio, loadOptions, loader, options, preloadOptions, tilesetJson, tileset3d;
|
|
216
|
+
var _this$props$loadOptio, loadOptions, loader, options, actualTilesetUrl, preloadOptions, tilesetJson, tileset3d;
|
|
217
217
|
|
|
218
218
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
219
219
|
while (1) {
|
|
@@ -229,18 +229,23 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
229
229
|
options = {
|
|
230
230
|
loadOptions: _objectSpread({}, loadOptions)
|
|
231
231
|
};
|
|
232
|
+
actualTilesetUrl = tilesetUrl;
|
|
232
233
|
|
|
233
234
|
if (!loader.preload) {
|
|
234
|
-
_context.next =
|
|
235
|
+
_context.next = 12;
|
|
235
236
|
break;
|
|
236
237
|
}
|
|
237
238
|
|
|
238
|
-
_context.next =
|
|
239
|
+
_context.next = 8;
|
|
239
240
|
return loader.preload(tilesetUrl, loadOptions);
|
|
240
241
|
|
|
241
|
-
case
|
|
242
|
+
case 8:
|
|
242
243
|
preloadOptions = _context.sent;
|
|
243
244
|
|
|
245
|
+
if (preloadOptions.url) {
|
|
246
|
+
actualTilesetUrl = preloadOptions.url;
|
|
247
|
+
}
|
|
248
|
+
|
|
244
249
|
if (preloadOptions.headers) {
|
|
245
250
|
options.loadOptions.fetch = _objectSpread(_objectSpread({}, options.loadOptions.fetch), {}, {
|
|
246
251
|
headers: preloadOptions.headers
|
|
@@ -249,11 +254,11 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
249
254
|
|
|
250
255
|
Object.assign(options, preloadOptions);
|
|
251
256
|
|
|
252
|
-
case 10:
|
|
253
|
-
_context.next = 12;
|
|
254
|
-
return (0, _core3.load)(tilesetUrl, loader, options.loadOptions);
|
|
255
|
-
|
|
256
257
|
case 12:
|
|
258
|
+
_context.next = 14;
|
|
259
|
+
return (0, _core3.load)(actualTilesetUrl, loader, options.loadOptions);
|
|
260
|
+
|
|
261
|
+
case 14:
|
|
257
262
|
tilesetJson = _context.sent;
|
|
258
263
|
tileset3d = new _tiles.Tileset3D(tilesetJson, _objectSpread({
|
|
259
264
|
onTileLoad: this._onTileLoad.bind(this),
|
|
@@ -269,7 +274,7 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
269
274
|
|
|
270
275
|
this.props.onTilesetLoad(tileset3d);
|
|
271
276
|
|
|
272
|
-
case
|
|
277
|
+
case 19:
|
|
273
278
|
case "end":
|
|
274
279
|
return _context.stop();
|
|
275
280
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.ts"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","sourceTile","picked","object","layer","viewportId","selected","viewportIds","includes","layerCache","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","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","_getSubLayer","filter","Boolean","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n COORDINATE_SYSTEM,\n FilterContext,\n GetPickingInfoParams,\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n Viewport,\n DefaultProps\n} 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';\n\nimport {load} from '@loaders.gl/core';\nimport {MeshAttributes} from '@loaders.gl/schema';\nimport {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps: DefaultProps<Tile3DLayerProps> = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n // Disable async data loading (handling it in _loadTileSet)\n data: '',\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}},\n onTileLoad: {type: 'function', value: tileHeader => {}},\n onTileUnload: {type: 'function', value: tileHeader => {}},\n onTileError: {type: 'function', value: (tile, message, url) => {}},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255]}\n};\n\n/** All properties supported by Tile3DLayer */\nexport type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps;\n\n/** Props added by the Tile3DLayer */\ntype _Tile3DLayerProps<DataT> = {\n data: string;\n /** Color Accessor for point clouds. **/\n getPointColor?: Accessor<DataT, Color>;\n\n /** Global radius of all points in pixels. **/\n pointSize?: number;\n\n /** A loader which is used to decode the fetched tiles.\n * @deprecated Use `loaders` instead\n */\n loader?: typeof Tiles3DLoader;\n\n /** Called when Tileset JSON file is loaded. **/\n onTilesetLoad?: (tile: Tileset3D) => void;\n\n /** Called when a tile in the tileset hierarchy is loaded. **/\n onTileLoad?: (tile: Tile3D) => void;\n\n /** Called when a tile is unloaded. **/\n onTileUnload?: (tile: Tile3D) => void;\n\n /** Called when a tile fails to load. **/\n onTileError?: (tile: Tile3D, url: string, message: string) => void;\n\n /** (Experimental) Accessor to change color of mesh based on properties. **/\n _getMeshColor?: (tile: Tile3D) => Color;\n};\n\n/** Render 3d tiles data formatted according to the [3D Tiles Specification](https://www.opengeospatial.org/standards/3DTiles) and [`ESRI I3S`](https://github.com/Esri/i3s-spec) */\nexport default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_Tile3DLayerProps<DataT>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'Tile3DLayer';\n\n state!: {\n activeViewports: {};\n frameNumber?: number;\n lastUpdatedViewports: {[viewportId: string]: Viewport} | null;\n layerMap: {[layerId: string]: any};\n tileset3d: Tileset3D | null;\n };\n\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(): boolean {\n const {tileset3d} = this.state;\n return tileset3d !== null && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n if (props.data && props.data !== oldProps.data) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\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: Viewport): void {\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}: GetPickingInfoParams) {\n const sourceTile = sourceLayer && (sourceLayer.props as any).tile;\n if (info.picked) {\n info.object = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n\n return info;\n }\n\n filterSubLayer({layer, viewport}: FilterContext): boolean {\n // All sublayers will have a tile prop\n const {tile} = layer.props as unknown as {tile: Tile3D};\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile;\n const layerCache = this.state.layerMap[sourceTile?.id];\n if (layerCache && layerCache.layer) {\n layerCache.layer.updateAutoHighlight(info);\n }\n }\n\n private async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n // @ts-ignore\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 onTileError: 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 private _onTileLoad(tileHeader: Tile3D): void {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n private _onTileUnload(tileHeader: Tile3D): void {\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 private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {\n if (!viewports) {\n return;\n }\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\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n private _getSubLayer(\n tileHeader: Tile3D,\n oldLayer?: Layer\n ): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n private _makePointCloudLayer(\n tileHeader: Tile3D,\n oldLayer?: PointCloudLayer<DataT>\n ): PointCloudLayer<DataT> | null {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, 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 private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {\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 private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = 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,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n // loaders.gl doesn't provide a type for tileset3d.tiles\n return (tileset3d.tiles as Tile3D[])\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: MeshAttributes): MeshAttributes {\n const attributes: MeshAttributes = {};\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"],"file":"tile-3d-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.ts"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","sourceTile","picked","object","layer","viewportId","selected","viewportIds","includes","layerCache","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","actualTilesetUrl","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","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","_getSubLayer","filter","Boolean","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n COORDINATE_SYSTEM,\n FilterContext,\n GetPickingInfoParams,\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n Viewport,\n DefaultProps\n} 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';\n\nimport {load} from '@loaders.gl/core';\nimport {MeshAttributes} from '@loaders.gl/schema';\nimport {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps: DefaultProps<Tile3DLayerProps> = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n // Disable async data loading (handling it in _loadTileSet)\n data: '',\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}},\n onTileLoad: {type: 'function', value: tileHeader => {}},\n onTileUnload: {type: 'function', value: tileHeader => {}},\n onTileError: {type: 'function', value: (tile, message, url) => {}},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255]}\n};\n\n/** All properties supported by Tile3DLayer */\nexport type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps;\n\n/** Props added by the Tile3DLayer */\ntype _Tile3DLayerProps<DataT> = {\n data: string;\n /** Color Accessor for point clouds. **/\n getPointColor?: Accessor<DataT, Color>;\n\n /** Global radius of all points in pixels. **/\n pointSize?: number;\n\n /** A loader which is used to decode the fetched tiles.\n * @deprecated Use `loaders` instead\n */\n loader?: typeof Tiles3DLoader;\n\n /** Called when Tileset JSON file is loaded. **/\n onTilesetLoad?: (tile: Tileset3D) => void;\n\n /** Called when a tile in the tileset hierarchy is loaded. **/\n onTileLoad?: (tile: Tile3D) => void;\n\n /** Called when a tile is unloaded. **/\n onTileUnload?: (tile: Tile3D) => void;\n\n /** Called when a tile fails to load. **/\n onTileError?: (tile: Tile3D, url: string, message: string) => void;\n\n /** (Experimental) Accessor to change color of mesh based on properties. **/\n _getMeshColor?: (tile: Tile3D) => Color;\n};\n\n/** Render 3d tiles data formatted according to the [3D Tiles Specification](https://www.opengeospatial.org/standards/3DTiles) and [`ESRI I3S`](https://github.com/Esri/i3s-spec) */\nexport default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_Tile3DLayerProps<DataT>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'Tile3DLayer';\n\n state!: {\n activeViewports: {};\n frameNumber?: number;\n lastUpdatedViewports: {[viewportId: string]: Viewport} | null;\n layerMap: {[layerId: string]: any};\n tileset3d: Tileset3D | null;\n };\n\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(): boolean {\n const {tileset3d} = this.state;\n return tileset3d !== null && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n if (props.data && props.data !== oldProps.data) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\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: Viewport): void {\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}: GetPickingInfoParams) {\n const sourceTile = sourceLayer && (sourceLayer.props as any).tile;\n if (info.picked) {\n info.object = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n\n return info;\n }\n\n filterSubLayer({layer, viewport}: FilterContext): boolean {\n // All sublayers will have a tile prop\n const {tile} = layer.props as unknown as {tile: Tile3D};\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile;\n const layerCache = this.state.layerMap[sourceTile?.id];\n if (layerCache && layerCache.layer) {\n layerCache.layer.updateAutoHighlight(info);\n }\n }\n\n private async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n // @ts-ignore\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 let actualTilesetUrl = tilesetUrl;\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n if (preloadOptions.url) {\n actualTilesetUrl = preloadOptions.url;\n }\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(actualTilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileError: 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 private _onTileLoad(tileHeader: Tile3D): void {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n private _onTileUnload(tileHeader: Tile3D): void {\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 private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {\n if (!viewports) {\n return;\n }\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\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n private _getSubLayer(\n tileHeader: Tile3D,\n oldLayer?: Layer\n ): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n private _makePointCloudLayer(\n tileHeader: Tile3D,\n oldLayer?: PointCloudLayer<DataT>\n ): PointCloudLayer<DataT> | null {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, 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 private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {\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 private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = 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,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n // loaders.gl doesn't provide a type for tileset3d.tiles\n return (tileset3d.tiles as Tile3D[])\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: MeshAttributes): MeshAttributes {\n const attributes: MeshAttributes = {};\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"],"file":"tile-3d-layer.js"}
|
|
@@ -33,6 +33,10 @@ export default class GeoCellLayer extends CompositeLayer {
|
|
|
33
33
|
transitions
|
|
34
34
|
} = this.props;
|
|
35
35
|
const CellLayer = this.getSubLayerClass('cell', PolygonLayer);
|
|
36
|
+
const {
|
|
37
|
+
updateTriggers: boundsUpdateTriggers,
|
|
38
|
+
...boundsProps
|
|
39
|
+
} = this.indexToBounds() || {};
|
|
36
40
|
return new CellLayer({
|
|
37
41
|
filled,
|
|
38
42
|
wireframe,
|
|
@@ -54,13 +58,13 @@ export default class GeoCellLayer extends CompositeLayer {
|
|
|
54
58
|
getLineWidth
|
|
55
59
|
}, this.getSubLayerProps({
|
|
56
60
|
id: 'cell',
|
|
57
|
-
updateTriggers: updateTriggers && {
|
|
61
|
+
updateTriggers: updateTriggers && { ...boundsUpdateTriggers,
|
|
58
62
|
getElevation: updateTriggers.getElevation,
|
|
59
63
|
getFillColor: updateTriggers.getFillColor,
|
|
60
64
|
getLineColor: updateTriggers.getLineColor,
|
|
61
65
|
getLineWidth: updateTriggers.getLineWidth
|
|
62
66
|
}
|
|
63
|
-
}),
|
|
67
|
+
}), boundsProps);
|
|
64
68
|
}
|
|
65
69
|
|
|
66
70
|
}
|