@deck.gl/geo-layers 8.6.2 → 8.6.6
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 +7810 -4699
- package/dist/es5/great-circle-layer/great-circle-layer.js +4 -2
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +4 -4
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +5 -5
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +14 -14
- package/dist/es5/mesh-layer/mesh-layer.js +3 -3
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +2 -2
- package/dist/es5/mvt-layer/find-index-binary.js +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +34 -11
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js +2 -2
- package/dist/es5/s2-layer/s2-layer.js +3 -3
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +8 -12
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +9 -9
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +35 -35
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +13 -13
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +30 -27
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +19 -19
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +3 -3
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +3 -3
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-cluster-layer.js +7 -5
- package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js +14 -9
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js +6 -5
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js +3 -1
- package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +37 -7
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/s2-layer/s2-geometry.js +5 -2
- package/dist/esm/s2-layer/s2-geometry.js.map +1 -1
- package/dist/esm/s2-layer/s2-utils.js +6 -5
- package/dist/esm/s2-layer/s2-utils.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +22 -21
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +21 -16
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-header.js +13 -11
- package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js +12 -6
- package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +24 -22
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +26 -22
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist/esm/tile-layer/utils.js +16 -13
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +11 -11
- package/src/mvt-layer/mvt-layer.js +16 -0
- package/src/terrain-layer/terrain-layer.js +10 -9
- package/src/tile-layer/tile-layer.js +9 -6
- package/src/tile-layer/utils.js +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","setState","data","tileJSON","isLoaded","state","tileset","updateState","props","oldProps","context","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","renderSubLayers","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","Array","isArray","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","setState","data","tileJSON","isLoaded","state","tileset","updateState","props","oldProps","context","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","renderSubLayers","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"AAAA,SAAQA,GAAR,QAAkB,eAAlB;AACA,SAAQC,OAAR,QAAsB,SAAtB;AACA,SAAQC,eAAR,QAA8B,iBAA9B;AACA,SAAQC,eAAR,QAA8B,iBAA9B;AACA,SAAQC,iBAAR,QAAgC,eAAhC;AACA,SAAQC,aAAR,QAA4B,qBAA5B;AAEA,OAAOC,SAAP,MAAsB,0BAAtB;AACA,SAAQC,kBAAR,EAA4BC,aAA5B,QAAgD,qBAAhD;AACA,SAAQC,SAAR,QAAwB,wBAAxB;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AAEA,SAAQC,YAAR,QAA2B,iBAA3B;AAEA,MAAMC,UAAU,GAAG,GAAnB;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,gBAAgB,EAAE;AAACC,IAAAA,IAAI,EAAE,QAAP;AAAiBC,IAAAA,KAAK,EAAE;AAAxB,GADC;AAEnBC,EAAAA,oBAAoB,EAAE,IAFH;AAGnBC,EAAAA,OAAO,EAAE,CAAChB,eAAD,CAHU;AAInBiB,EAAAA,MAAM,EAAE;AAJW,CAArB;AAOA,eAAe,MAAMC,QAAN,SAAuBd,SAAvB,CAAiC;AAC9Ce,EAAAA,eAAe,GAAG;AAChB,UAAMA,eAAN;AACA,SAAKC,QAAL,CAAc;AACZC,MAAAA,IAAI,EAAE,IADM;AAEZC,MAAAA,QAAQ,EAAE;AAFE,KAAd;AAID;;AAEW,MAARC,QAAQ,GAAG;AACb,WAAO,KAAKC,KAAL,CAAWH,IAAX,IAAmB,KAAKG,KAAL,CAAWC,OAA9B,IAAyC,MAAMF,QAAtD;AACD;;AAEDG,EAAAA,WAAW,OAA0C;AAAA,QAAzC;AAACC,MAAAA,KAAD;AAAQC,MAAAA,QAAR;AAAkBC,MAAAA,OAAlB;AAA2BC,MAAAA;AAA3B,KAAyC;;AACnD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,WAAKC,eAAL;AACD;;AAED,QAAI,KAAKR,KAAL,CAAWH,IAAf,EAAqB;AACnB,YAAMK,WAAN,CAAkB;AAACC,QAAAA,KAAD;AAAQC,QAAAA,QAAR;AAAkBC,QAAAA,OAAlB;AAA2BC,QAAAA;AAA3B,OAAlB;;AACA,WAAKG,yBAAL;AACD;;AACD,UAAM;AAACC,MAAAA;AAAD,QAAmBP,KAAzB;;AACA,QAAIO,cAAc,KAAKN,QAAQ,CAACM,cAA5B,IAA8CC,KAAK,CAACC,OAAN,CAAcF,cAAd,CAAlD,EAAiF;AAC/E,WAAKd,QAAL,CAAc;AAACc,QAAAA;AAAD,OAAd;AACD;AACF;;AAGoB,QAAfF,eAAe,GAAG;AACtB,QAAI;AAACX,MAAAA;AAAD,QAAS,KAAKM,KAAlB;AACA,QAAIL,QAAQ,GAAG,IAAf;;AAEA,QAAI,OAAOD,IAAP,KAAgB,QAAhB,IAA4B,CAACf,aAAa,CAACe,IAAD,CAA9C,EAAsD;AACpD,YAAM;AAACgB,QAAAA,UAAD;AAAaC,QAAAA;AAAb,UAAsB,KAAKX,KAAjC;AACA,WAAKP,QAAL,CAAc;AAACC,QAAAA,IAAI,EAAE,IAAP;AAAaC,QAAAA,QAAQ,EAAE;AAAvB,OAAd;;AACA,UAAI;AACFA,QAAAA,QAAQ,GAAG,MAAMgB,KAAK,CAACjB,IAAD,EAAO;AAACkB,UAAAA,QAAQ,EAAE,MAAX;AAAmBC,UAAAA,KAAK,EAAE,IAA1B;AAAgCxB,UAAAA,OAAO,EAAE;AAAzC,SAAP,CAAtB;AACD,OAFD,CAEE,OAAOyB,KAAP,EAAc;AACd,aAAKC,UAAL,CAAgBD,KAAhB,EAAuB,kBAAvB;AACApB,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAIgB,UAAJ,EAAgB;AACdA,QAAAA,UAAU,CAACf,QAAD,CAAV;AACD;AACF,KAbD,MAaO,IAAID,IAAI,CAACsB,QAAT,EAAmB;AACxBrB,MAAAA,QAAQ,GAAGD,IAAX;AACD;;AAED,QAAIC,QAAJ,EAAc;AACZD,MAAAA,IAAI,GAAGC,QAAQ,CAACsB,KAAhB;AACD;;AAED,SAAKxB,QAAL,CAAc;AAACC,MAAAA,IAAD;AAAOC,MAAAA;AAAP,KAAd;AACD;;AAEDuB,EAAAA,kBAAkB,CAAClB,KAAD,EAAQ;AACxB,UAAMmB,IAAI,GAAG,MAAMD,kBAAN,CAAyBlB,KAAzB,CAAb;;AACA,UAAM;AAACL,MAAAA;AAAD,QAAa,KAAKE,KAAxB;;AAEA,QAAIF,QAAJ,EAAc;AACZ,UAAIyB,MAAM,CAACC,QAAP,CAAgB1B,QAAQ,CAAC2B,OAAzB,KAAqC3B,QAAQ,CAAC2B,OAAT,GAAmBtB,KAAK,CAACuB,OAAlE,EAA2E;AACzEJ,QAAAA,IAAI,CAACI,OAAL,GAAe5B,QAAQ,CAAC2B,OAAxB;AACD;;AAED,UACEF,MAAM,CAACC,QAAP,CAAgB1B,QAAQ,CAAC6B,OAAzB,MACC,CAACJ,MAAM,CAACC,QAAP,CAAgBrB,KAAK,CAACyB,OAAtB,CAAD,IAAmC9B,QAAQ,CAAC6B,OAAT,GAAmBxB,KAAK,CAACyB,OAD7D,CADF,EAGE;AACAN,QAAAA,IAAI,CAACM,OAAL,GAAe9B,QAAQ,CAAC6B,OAAxB;AACD;AACF;;AACD,WAAOL,IAAP;AACD;;AAIDO,EAAAA,YAAY,GAAG;AACb,QAAI,CAAC,KAAK7B,KAAL,CAAWH,IAAhB,EAAsB,OAAO,IAAP;AACtB,WAAO,MAAMgC,YAAN,EAAP;AACD;;AAEDC,EAAAA,WAAW,CAACC,IAAD,EAAO;AAAA;;AAChB,UAAMC,GAAG,GAAGnD,kBAAkB,CAAC,KAAKmB,KAAL,CAAWH,IAAZ,EAAkBkC,IAAlB,CAA9B;;AACA,QAAI,CAACC,GAAL,EAAU;AACR,aAAOC,OAAO,CAACC,MAAR,CAAe,aAAf,CAAP;AACD;;AACD,QAAIC,WAAW,GAAG,KAAKC,cAAL,EAAlB;AACA,UAAM;AAAC3C,MAAAA,MAAD;AAASqB,MAAAA;AAAT,QAAkB,KAAKX,KAA7B;AACA,UAAM;AAACkC,MAAAA,MAAD;AAASC,MAAAA,CAAT;AAAYC,MAAAA,CAAZ;AAAeC,MAAAA;AAAf,QAAoBT,IAA1B;AACAI,IAAAA,WAAW,GAAG,EACZ,GAAGA,WADS;AAEZM,MAAAA,QAAQ,EAAE,wBAFE;AAGZC,MAAAA,GAAG,EAAE,EACH,oBAAGP,WAAH,iDAAG,aAAaO,GAAhB,CADG;AAEHC,QAAAA,WAAW,EAAE,KAAKtC,OAAL,CAAauC,QAAb,CAAsBC,UAAtB,GAAmC,OAAnC,GAA6C,OAFvD;AAGHC,QAAAA,SAAS,EAAE;AAACR,UAAAA,CAAD;AAAIC,UAAAA,CAAJ;AAAOC,UAAAA;AAAP;AAHR,OAHO;AAYZO,MAAAA,GAAG,EAAEtD,MAAM,GAAG;AAACuD,QAAAA,MAAM,EAAE;AAAT,OAAH,GAAwB;AAZvB,KAAd;AAcA,WAAOlC,KAAK,CAACkB,GAAD,EAAM;AAACjB,MAAAA,QAAQ,EAAE,MAAX;AAAmBC,MAAAA,KAAK,EAAE,IAA1B;AAAgCmB,MAAAA,WAAhC;AAA6CE,MAAAA;AAA7C,KAAN,CAAZ;AACD;;AAEDY,EAAAA,eAAe,CAAC9C,KAAD,EAAQ;AACrB,UAAM;AAAC4B,MAAAA;AAAD,QAAS5B,KAAf;AACA,UAAM+C,UAAU,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYrB,IAAI,CAACS,CAAjB,CAAnB;AAEA,UAAMa,MAAM,GAAGnE,UAAU,GAAGgE,UAA5B;AACA,UAAMI,MAAM,GAAG,CAACD,MAAhB;AAEA,UAAME,OAAO,GAAIrE,UAAU,GAAG6C,IAAI,CAACO,CAAnB,GAAwBY,UAAxC;AACA,UAAMM,OAAO,GAAGtE,UAAU,IAAI,IAAI6C,IAAI,CAACQ,CAAL,GAASW,UAAjB,CAA1B;AAEA,UAAMO,WAAW,GAAG,IAAIlF,OAAJ,GAAcmF,KAAd,CAAoB,CAACL,MAAD,EAASC,MAAT,EAAiB,CAAjB,CAApB,CAApB;AAEAnD,IAAAA,KAAK,CAACwD,aAAN,GAAsB,KAAtB;;AAEA,QAAI,CAAC,KAAKtD,OAAL,CAAauC,QAAb,CAAsBC,UAA3B,EAAuC;AACrC1C,MAAAA,KAAK,CAACsD,WAAN,GAAoBA,WAApB;AACAtD,MAAAA,KAAK,CAACyD,gBAAN,GAAyB,CAACL,OAAD,EAAUC,OAAV,EAAmB,CAAnB,CAAzB;AACArD,MAAAA,KAAK,CAAC0D,gBAAN,GAAyBnF,iBAAiB,CAACoF,SAA3C;AACA3D,MAAAA,KAAK,CAAC4D,UAAN,GAAmB,CAAC,IAAI5D,KAAK,CAAC4D,UAAN,IAAoB,EAAxB,CAAD,EAA8B,IAAIpF,aAAJ,EAA9B,CAAnB;AACD;;AAED,UAAMqF,SAAS,GAAG,MAAMf,eAAN,CAAsB9C,KAAtB,CAAlB;;AAEA,QAAI,KAAKA,KAAL,CAAWV,MAAX,IAAqB,EAAEuE,SAAS,YAAY/E,YAAvB,CAAzB,EAA+D;AAC7DX,MAAAA,GAAG,CAAC2F,IAAJ,CAAS,mEAAT;AACD;;AAED,WAAOD,SAAP;AACD;;AAEDE,EAAAA,oBAAoB,CAACC,IAAD,EAAO;AACzB,UAAM;AAAC/E,MAAAA;AAAD,QAAqB,KAAKe,KAAhC;AAEA,UAAM;AAACiE,MAAAA,gBAAD;AAAmBC,MAAAA;AAAnB,QAA8C,KAAKrE,KAAzD;AACA,UAAMsE,cAAc,GAAGH,IAAI,CAACI,MAA5B;AACA,QAAIC,mBAAJ;AACA,QAAIC,0BAAJ;;AAEA,QAAIH,cAAJ,EAAoB;AAClBE,MAAAA,mBAAmB,GAAGE,kBAAkB,CAACJ,cAAD,EAAiBlF,gBAAjB,CAAxC;AACAqF,MAAAA,0BAA0B,GAAGE,mBAAmB,CAACL,cAAD,CAAhD;AACD;;AACD,QAAI;AAAC5D,MAAAA;AAAD,QAAmB,KAAKP,KAA5B;;AACA,QAAI,OAAOO,cAAP,KAA0B,UAA9B,EAA0C;AACxCA,MAAAA,cAAc,GAAGA,cAAc,CAACyD,IAAD,CAA/B;AACD;;AAED,QACEC,gBAAgB,KAAKI,mBAArB,IACAH,uBAAuB,KAAKI,0BAF9B,EAGE;AACA,WAAK7E,QAAL,CAAc;AACZc,QAAAA,cADY;AAEZ0D,QAAAA,gBAAgB,EAAEI,mBAFN;AAGZH,QAAAA,uBAAuB,EAAEI;AAHb,OAAd;AAKD;AACF;;AAEDG,EAAAA,cAAc,CAACC,MAAD,EAAS;AACrB,UAAMV,IAAI,GAAG,MAAMS,cAAN,CAAqBC,MAArB,CAAb;AAEA,UAAMC,OAAO,GAAG,KAAKzE,OAAL,CAAauC,QAAb,CAAsBC,UAAtC;;AAEA,QAAI,KAAK1C,KAAL,CAAWV,MAAX,IAAqB0E,IAAI,CAACY,KAAL,KAAe,CAAC,CAAzC,EAA4C;AAC1C,YAAM;AAAClF,QAAAA;AAAD,UAASgF,MAAM,CAACG,WAAP,CAAmB7E,KAAlC;AACAgE,MAAAA,IAAI,CAACI,MAAL,GAAc9F,eAAe,CAACoB,IAAD,EAAO;AAACoF,QAAAA,eAAe,EAAEd,IAAI,CAACY;AAAvB,OAAP,CAA7B;AACD;;AACD,QAAIZ,IAAI,CAACI,MAAL,IAAe,CAACO,OAApB,EAA6B;AAC3BX,MAAAA,IAAI,CAACI,MAAL,GAAcW,0BAA0B,CAACf,IAAI,CAACI,MAAN,EAAcJ,IAAI,CAACpC,IAAL,CAAUoD,IAAxB,EAA8B,KAAK9E,OAAL,CAAauC,QAA3C,CAAxC;AACD;;AAED,WAAOuB,IAAP;AACD;;AAEDiB,EAAAA,sBAAsB,CAACrD,IAAD,EAAO;AAC3B,WAAO;AACLsD,MAAAA,sBAAsB,EAAE,KAAKC,yBAAL,CAA+BvD,IAA/B,CADnB;AAELrB,MAAAA,cAAc,EAAE,KAAKV,KAAL,CAAWU;AAFtB,KAAP;AAID;;AAED4E,EAAAA,yBAAyB,CAACvD,IAAD,EAAO;AAC9B,UAAM;AAACqC,MAAAA,gBAAD;AAAmBC,MAAAA;AAAnB,QAA8C,KAAKrE,KAAzD;AACA,UAAM;AAACZ,MAAAA,gBAAD;AAAmBG,MAAAA,oBAAnB;AAAyCE,MAAAA;AAAzC,QAAmD,KAAKU,KAA9D;AACA,UAAMN,IAAI,GAAGkC,IAAI,CAACwD,OAAlB;AAEA,UAAMC,aAAa,GAAGC,kBAAkB,CAAClG,oBAAD,CAAxC;AACA,UAAMmG,kBAAkB,GAAGD,kBAAkB,CAACrB,gBAAD,CAAlB,IAAwCoB,aAAnE;;AAEA,QAAI,CAACE,kBAAL,EAAyB;AACvB,aAAO,CAAC,CAAR;AACD;;AAED,UAAMC,oBAAoB,GAAGH,aAAa,GAAGjG,oBAAH,GAA0B6E,gBAApE;;AAGA,QAAIzD,KAAK,CAACC,OAAN,CAAcf,IAAd,CAAJ,EAAyB;AACvB,aAAOA,IAAI,CAAC+F,SAAL,CAAeC,OAAO,IAAI;AAC/B,cAAMC,YAAY,GAAGpB,kBAAkB,CAACmB,OAAD,EAAUzG,gBAAV,CAAlB,KAAkDuG,oBAAvE;AACA,cAAMI,eAAe,GACnBP,aAAa,IAAIb,mBAAmB,CAACkB,OAAD,CAAnB,KAAiCxB,uBADpD;AAEA,eAAOyB,YAAY,IAAIC,eAAvB;AACD,OALM,CAAP;AAQD,KATD,MASO,IAAIlG,IAAI,IAAIJ,MAAZ,EAAoB;AAEzB,aAAOT,eAAe,CACpBa,IADoB,EAEpBT,gBAFoB,EAGpBuG,oBAHoB,EAIpBH,aAAa,GAAG,EAAH,GAAQnB,uBAJD,CAAtB;AAMD;;AAED,WAAO,CAAC,CAAR;AACD;;AAED2B,EAAAA,YAAY,CAACC,UAAD,EAAa;AACvB,UAAM;AAACC,MAAAA,IAAD;AAAOtD,MAAAA;AAAP,QAAmB,KAAKvC,OAA9B;AACA,UAAM8F,KAAK,GAAGvD,QAAQ,CAACuD,KAAvB;AACA,UAAMC,MAAM,GAAGxD,QAAQ,CAACwD,MAAxB;AACA,UAAM9D,CAAC,GAAGM,QAAQ,CAACN,CAAnB;AACA,UAAMC,CAAC,GAAGK,QAAQ,CAACL,CAAnB;AACA,UAAM8D,QAAQ,GAAG,CAAC,KAAKC,EAAN,CAAjB;AACA,WAAOJ,IAAI,CAACK,WAAL,CAAiB;AAACjE,MAAAA,CAAD;AAAIC,MAAAA,CAAJ;AAAO4D,MAAAA,KAAP;AAAcC,MAAAA,MAAd;AAAsBC,MAAAA,QAAtB;AAAgCJ,MAAAA;AAAhC,KAAjB,CAAP;AACD;;AAEDO,EAAAA,mBAAmB,GAAqB;AAAA,QAApBC,WAAoB,uEAAN,IAAM;;AACtC,UAAMC,QAAQ,GAAG,KAAKV,YAAL,CAAkBS,WAAlB,CAAjB;;AACA,UAAME,YAAY,GAAG,IAAIC,GAAJ,EAArB;AACA,UAAMC,gBAAgB,GAAG,EAAzB;;AAEA,SAAK,MAAMC,CAAX,IAAgBJ,QAAhB,EAA0B;AACxB,YAAMK,SAAS,GAAGrC,kBAAkB,CAACoC,CAAC,CAACvC,MAAH,EAAW,KAAKpE,KAAL,CAAWf,gBAAtB,CAApC;;AAEA,UAAI2H,SAAS,KAAKC,SAAlB,EAA6B;AAE3BH,QAAAA,gBAAgB,CAACI,IAAjB,CAAsBH,CAAC,CAACvC,MAAxB;AACD,OAHD,MAGO,IAAI,CAACoC,YAAY,CAACO,GAAb,CAAiBH,SAAjB,CAAL,EAAkC;AAEvCJ,QAAAA,YAAY,CAACQ,GAAb,CAAiBJ,SAAjB;AACAF,QAAAA,gBAAgB,CAACI,IAAjB,CAAsBH,CAAC,CAACvC,MAAxB;AACD;AACF;;AAED,WAAOsC,gBAAP;AACD;;AAEDpG,EAAAA,yBAAyB,GAAG;AAC1B,UAAMM,QAAQ,GAAG,aAAjB;AACA,UAAM;AAACd,MAAAA;AAAD,QAAY,KAAKD,KAAvB;AAEAC,IAAAA,OAAO,CAACmH,aAAR,CAAsBC,OAAtB,CAA8BtF,IAAI,IAAI;AACpC,UAAI,CAACA,IAAI,CAACuF,cAAL,CAAoBvG,QAApB,CAAL,EAAoC;AAElCwG,QAAAA,MAAM,CAACC,cAAP,CAAsBzF,IAAtB,EAA4BhB,QAA5B,EAAsC;AACpC0G,UAAAA,GAAG,EAAE,MAAM;AAET,gBAAI,CAAC1F,IAAI,CAACwD,OAAV,EAAmB;AACjB,qBAAO,IAAP;AACD;;AAED,gBAAI,KAAKpF,KAAL,CAAWV,MAAX,IAAqBkB,KAAK,CAACC,OAAN,CAAcmB,IAAI,CAACwD,OAAnB,CAArB,IAAoD,CAACxD,IAAI,CAACwD,OAAL,CAAamC,MAAtE,EAA8E;AAG5E,qBAAO,EAAP;AACD;;AAED,gBAAI3F,IAAI,CAAC4F,aAAL,KAAuBX,SAA3B,EAAsC;AAEpC,oBAAMzB,OAAO,GAAG,KAAKpF,KAAL,CAAWV,MAAX,GAAoBhB,eAAe,CAACsD,IAAI,CAACwD,OAAN,CAAnC,GAAoDxD,IAAI,CAACwD,OAAzE;AACAxD,cAAAA,IAAI,CAAC4F,aAAL,GAAqBpC,OAAO,CAACqC,GAAR,CAAY/B,OAAO,IACtCX,0BAA0B,CAACW,OAAD,EAAU9D,IAAI,CAACoD,IAAf,EAAqB,KAAK9E,OAAL,CAAauC,QAAlC,CADP,CAArB;AAGD;;AACD,mBAAOb,IAAI,CAAC4F,aAAZ;AACD;AArBmC,SAAtC;AAuBD;AACF,KA3BD;AA4BD;;AAlS6C;;AAqShD,SAASjD,kBAAT,CAA4BmB,OAA5B,EAAqCzG,gBAArC,EAAuD;AACrD,MAAIA,gBAAJ,EAAsB;AACpB,WAAOyG,OAAO,CAACgC,UAAR,CAAmBzI,gBAAnB,CAAP;AACD;;AAED,MAAI,QAAQyG,OAAZ,EAAqB;AACnB,WAAOA,OAAO,CAACS,EAAf;AACD;;AAED,SAAOU,SAAP;AACD;;AAED,SAASrC,mBAAT,CAA6BkB,OAA7B,EAAsC;AAAA;;AACpC,SAAO,wBAAAA,OAAO,CAACgC,UAAR,4EAAoBC,SAApB,KAAiC,IAAxC;AACD;;AAED,SAASrC,kBAAT,CAA4BnG,KAA5B,EAAmC;AACjC,SAAOA,KAAK,KAAK0H,SAAV,IAAuB1H,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAK,EAA1D;AACD;;AAED,SAAS4F,0BAAT,CAAoCX,MAApC,EAA4CY,IAA5C,EAAkDvC,QAAlD,EAA4D;AAC1D,QAAMiD,OAAO,GAAG,EACd,GAAGtB,MADW;AAEdwD,IAAAA,QAAQ,EAAE;AACR1I,MAAAA,IAAI,EAAEkF,MAAM,CAACwD,QAAP,CAAgB1I;AADd;AAFI,GAAhB;AAQAkI,EAAAA,MAAM,CAACC,cAAP,CAAsB3B,OAAO,CAACkC,QAA9B,EAAwC,aAAxC,EAAuD;AACrDN,IAAAA,GAAG,EAAE,MAAM;AACT,YAAMO,SAAS,GAAGjJ,SAAS,CAACwF,MAAM,CAACwD,QAAR,EAAkB5C,IAAlB,EAAwBvC,QAAxB,CAA3B;AACA,aAAOoF,SAAS,CAACrF,WAAjB;AACD;AAJoD,GAAvD;AAOA,SAAOkD,OAAP;AACD;;AAEDnG,QAAQ,CAACoI,SAAT,GAAqB,UAArB;AACApI,QAAQ,CAACP,YAAT,GAAwBA,YAAxB","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 const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\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 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) {\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 getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\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"}
|
|
@@ -19,7 +19,9 @@ function singleSTtoUV(st) {
|
|
|
19
19
|
export function STToUV(st) {
|
|
20
20
|
return [singleSTtoUV(st[0]), singleSTtoUV(st[1])];
|
|
21
21
|
}
|
|
22
|
-
export function FaceUVToXYZ(face,
|
|
22
|
+
export function FaceUVToXYZ(face, _ref) {
|
|
23
|
+
let [u, v] = _ref;
|
|
24
|
+
|
|
23
25
|
switch (face) {
|
|
24
26
|
case 0:
|
|
25
27
|
return [1, u, v];
|
|
@@ -43,7 +45,8 @@ export function FaceUVToXYZ(face, [u, v]) {
|
|
|
43
45
|
throw new Error('Invalid face');
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
|
-
export function XYZToLngLat(
|
|
48
|
+
export function XYZToLngLat(_ref2) {
|
|
49
|
+
let [x, y, z] = _ref2;
|
|
47
50
|
const lat = Math.atan2(z, Math.sqrt(x * x + y * y));
|
|
48
51
|
const lng = Math.atan2(y, x);
|
|
49
52
|
return [lng * RADIAN_TO_DEGREE, lat * RADIAN_TO_DEGREE];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/s2-layer/s2-geometry.js"],"names":["Long","FACE_BITS","MAX_LEVEL","POS_BITS","RADIAN_TO_DEGREE","Math","PI","IJToST","ij","order","offsets","maxSize","singleSTtoUV","st","STToUV","FaceUVToXYZ","face","u","v","Error","XYZToLngLat","x","y","z","lat","atan2","sqrt","lng","toHilbertQuadkey","idS","bin","fromString","toString","length","lsbIndex","lastIndexOf","faceB","substring","posB","levelN","faceS","posS","rotateAndFlipQuadrant","n","point","rx","ry","FromHilbertQuadKey","hilbertQuadkey","parts","split","parseInt","position","maxLevel","level","i","bit","val","pow","t"],"mappings":"AAaA,OAAOA,IAAP,MAAiB,MAAjB;AAKA,MAAMC,SAAS,GAAG,CAAlB;AACA,MAAMC,SAAS,GAAG,EAAlB;AACA,MAAMC,QAAQ,GAAG,IAAID,SAAJ,GAAgB,CAAjC;AACA,MAAME,gBAAgB,GAAG,MAAMC,IAAI,CAACC,EAApC;AAEA,OAAO,SAASC,MAAT,CAAgBC,EAAhB,EAAoBC,KAApB,EAA2BC,OAA3B,EAAoC;AACzC,QAAMC,OAAO,GAAG,KAAKF,KAArB;AAEA,SAAO,CAAC,CAACD,EAAE,CAAC,CAAD,CAAF,GAAQE,OAAO,CAAC,CAAD,CAAhB,IAAuBC,OAAxB,EAAiC,CAACH,EAAE,CAAC,CAAD,CAAF,GAAQE,OAAO,CAAC,CAAD,CAAhB,IAAuBC,OAAxD,CAAP;AACD;;AAED,SAASC,YAAT,CAAsBC,EAAtB,EAA0B;AACxB,MAAIA,EAAE,IAAI,GAAV,EAAe;AACb,WAAQ,IAAI,GAAL,IAAa,IAAIA,EAAJ,GAASA,EAAT,GAAc,CAA3B,CAAP;AACD;;AACD,SAAQ,IAAI,GAAL,IAAa,IAAI,KAAK,IAAIA,EAAT,KAAgB,IAAIA,EAApB,CAAjB,CAAP;AACD;;AAED,OAAO,SAASC,MAAT,CAAgBD,EAAhB,EAAoB;AACzB,SAAO,CAACD,YAAY,CAACC,EAAE,CAAC,CAAD,CAAH,CAAb,EAAsBD,YAAY,CAACC,EAAE,CAAC,CAAD,CAAH,CAAlC,CAAP;AACD;AAED,OAAO,SAASE,WAAT,CAAqBC,IAArB,
|
|
1
|
+
{"version":3,"sources":["../../../src/s2-layer/s2-geometry.js"],"names":["Long","FACE_BITS","MAX_LEVEL","POS_BITS","RADIAN_TO_DEGREE","Math","PI","IJToST","ij","order","offsets","maxSize","singleSTtoUV","st","STToUV","FaceUVToXYZ","face","u","v","Error","XYZToLngLat","x","y","z","lat","atan2","sqrt","lng","toHilbertQuadkey","idS","bin","fromString","toString","length","lsbIndex","lastIndexOf","faceB","substring","posB","levelN","faceS","posS","rotateAndFlipQuadrant","n","point","rx","ry","FromHilbertQuadKey","hilbertQuadkey","parts","split","parseInt","position","maxLevel","level","i","bit","val","pow","t"],"mappings":"AAaA,OAAOA,IAAP,MAAiB,MAAjB;AAKA,MAAMC,SAAS,GAAG,CAAlB;AACA,MAAMC,SAAS,GAAG,EAAlB;AACA,MAAMC,QAAQ,GAAG,IAAID,SAAJ,GAAgB,CAAjC;AACA,MAAME,gBAAgB,GAAG,MAAMC,IAAI,CAACC,EAApC;AAEA,OAAO,SAASC,MAAT,CAAgBC,EAAhB,EAAoBC,KAApB,EAA2BC,OAA3B,EAAoC;AACzC,QAAMC,OAAO,GAAG,KAAKF,KAArB;AAEA,SAAO,CAAC,CAACD,EAAE,CAAC,CAAD,CAAF,GAAQE,OAAO,CAAC,CAAD,CAAhB,IAAuBC,OAAxB,EAAiC,CAACH,EAAE,CAAC,CAAD,CAAF,GAAQE,OAAO,CAAC,CAAD,CAAhB,IAAuBC,OAAxD,CAAP;AACD;;AAED,SAASC,YAAT,CAAsBC,EAAtB,EAA0B;AACxB,MAAIA,EAAE,IAAI,GAAV,EAAe;AACb,WAAQ,IAAI,GAAL,IAAa,IAAIA,EAAJ,GAASA,EAAT,GAAc,CAA3B,CAAP;AACD;;AACD,SAAQ,IAAI,GAAL,IAAa,IAAI,KAAK,IAAIA,EAAT,KAAgB,IAAIA,EAApB,CAAjB,CAAP;AACD;;AAED,OAAO,SAASC,MAAT,CAAgBD,EAAhB,EAAoB;AACzB,SAAO,CAACD,YAAY,CAACC,EAAE,CAAC,CAAD,CAAH,CAAb,EAAsBD,YAAY,CAACC,EAAE,CAAC,CAAD,CAAH,CAAlC,CAAP;AACD;AAED,OAAO,SAASE,WAAT,CAAqBC,IAArB,QAAmC;AAAA,MAAR,CAACC,CAAD,EAAIC,CAAJ,CAAQ;;AACxC,UAAQF,IAAR;AACE,SAAK,CAAL;AACE,aAAO,CAAC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAAP;;AACF,SAAK,CAAL;AACE,aAAO,CAAC,CAACD,CAAF,EAAK,CAAL,EAAQC,CAAR,CAAP;;AACF,SAAK,CAAL;AACE,aAAO,CAAC,CAACD,CAAF,EAAK,CAACC,CAAN,EAAS,CAAT,CAAP;;AACF,SAAK,CAAL;AACE,aAAO,CAAC,CAAC,CAAF,EAAK,CAACA,CAAN,EAAS,CAACD,CAAV,CAAP;;AACF,SAAK,CAAL;AACE,aAAO,CAACC,CAAD,EAAI,CAAC,CAAL,EAAQ,CAACD,CAAT,CAAP;;AACF,SAAK,CAAL;AACE,aAAO,CAACC,CAAD,EAAID,CAAJ,EAAO,CAAC,CAAR,CAAP;;AACF;AACE,YAAM,IAAIE,KAAJ,CAAU,cAAV,CAAN;AAdJ;AAgBD;AAED,OAAO,SAASC,WAAT,QAAgC;AAAA,MAAX,CAACC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAAW;AACrC,QAAMC,GAAG,GAAGnB,IAAI,CAACoB,KAAL,CAAWF,CAAX,EAAclB,IAAI,CAACqB,IAAL,CAAUL,CAAC,GAAGA,CAAJ,GAAQC,CAAC,GAAGA,CAAtB,CAAd,CAAZ;AACA,QAAMK,GAAG,GAAGtB,IAAI,CAACoB,KAAL,CAAWH,CAAX,EAAcD,CAAd,CAAZ;AAEA,SAAO,CAACM,GAAG,GAAGvB,gBAAP,EAAyBoB,GAAG,GAAGpB,gBAA/B,CAAP;AACD;AAED,OAAO,SAASwB,gBAAT,CAA0BC,GAA1B,EAA+B;AACpC,MAAIC,GAAG,GAAG9B,IAAI,CAAC+B,UAAL,CAAgBF,GAAhB,EAAqB,IAArB,EAA2B,EAA3B,EAA+BG,QAA/B,CAAwC,CAAxC,CAAV;;AAEA,SAAOF,GAAG,CAACG,MAAJ,GAAahC,SAAS,GAAGE,QAAhC,EAA0C;AAExC2B,IAAAA,GAAG,GAAG,MAAMA,GAAZ;AACD;;AAGD,QAAMI,QAAQ,GAAGJ,GAAG,CAACK,WAAJ,CAAgB,GAAhB,CAAjB;AAGA,QAAMC,KAAK,GAAGN,GAAG,CAACO,SAAJ,CAAc,CAAd,EAAiB,CAAjB,CAAd;AAEA,QAAMC,IAAI,GAAGR,GAAG,CAACO,SAAJ,CAAc,CAAd,EAAiBH,QAAjB,CAAb;AACA,QAAMK,MAAM,GAAGD,IAAI,CAACL,MAAL,GAAc,CAA7B;AAEA,QAAMO,KAAK,GAAGxC,IAAI,CAAC+B,UAAL,CAAgBK,KAAhB,EAAuB,IAAvB,EAA6B,CAA7B,EAAgCJ,QAAhC,CAAyC,EAAzC,CAAd;AACA,MAAIS,IAAI,GAAGzC,IAAI,CAAC+B,UAAL,CAAgBO,IAAhB,EAAsB,IAAtB,EAA4B,CAA5B,EAA+BN,QAA/B,CAAwC,CAAxC,CAAX;;AAEA,SAAOS,IAAI,CAACR,MAAL,GAAcM,MAArB,EAA6B;AAE3BE,IAAAA,IAAI,GAAG,MAAMA,IAAb;AACD;;AAED,mBAAUD,KAAV,cAAmBC,IAAnB;AACD;;AAED,SAASC,qBAAT,CAA+BC,CAA/B,EAAkCC,KAAlC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiD;AAC/C,MAAIA,EAAE,KAAK,CAAX,EAAc;AACZ,QAAID,EAAE,KAAK,CAAX,EAAc;AACZD,MAAAA,KAAK,CAAC,CAAD,CAAL,GAAWD,CAAC,GAAG,CAAJ,GAAQC,KAAK,CAAC,CAAD,CAAxB;AACAA,MAAAA,KAAK,CAAC,CAAD,CAAL,GAAWD,CAAC,GAAG,CAAJ,GAAQC,KAAK,CAAC,CAAD,CAAxB;AACD;;AAED,UAAMvB,CAAC,GAAGuB,KAAK,CAAC,CAAD,CAAf;AACAA,IAAAA,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAhB;AACAA,IAAAA,KAAK,CAAC,CAAD,CAAL,GAAWvB,CAAX;AACD;AACF;;AAED,OAAO,SAAS0B,kBAAT,CAA4BC,cAA5B,EAA4C;AACjD,QAAMC,KAAK,GAAGD,cAAc,CAACE,KAAf,CAAqB,GAArB,CAAd;AACA,QAAMlC,IAAI,GAAGmC,QAAQ,CAACF,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAArB;AACA,QAAMG,QAAQ,GAAGH,KAAK,CAAC,CAAD,CAAtB;AACA,QAAMI,QAAQ,GAAGD,QAAQ,CAACnB,MAA1B;AACA,QAAMW,KAAK,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAd;AACA,MAAIU,KAAJ;;AAEA,OAAK,IAAIC,CAAC,GAAGF,QAAQ,GAAG,CAAxB,EAA2BE,CAAC,IAAI,CAAhC,EAAmCA,CAAC,EAApC,EAAwC;AACtCD,IAAAA,KAAK,GAAGD,QAAQ,GAAGE,CAAnB;AACA,UAAMC,GAAG,GAAGJ,QAAQ,CAACG,CAAD,CAApB;AACA,QAAIV,EAAE,GAAG,CAAT;AACA,QAAIC,EAAE,GAAG,CAAT;;AACA,QAAIU,GAAG,KAAK,GAAZ,EAAiB;AACfV,MAAAA,EAAE,GAAG,CAAL;AACD,KAFD,MAEO,IAAIU,GAAG,KAAK,GAAZ,EAAiB;AACtBX,MAAAA,EAAE,GAAG,CAAL;AACAC,MAAAA,EAAE,GAAG,CAAL;AACD,KAHM,MAGA,IAAIU,GAAG,KAAK,GAAZ,EAAiB;AACtBX,MAAAA,EAAE,GAAG,CAAL;AACD;;AAED,UAAMY,GAAG,GAAGpD,IAAI,CAACqD,GAAL,CAAS,CAAT,EAAYJ,KAAK,GAAG,CAApB,CAAZ;AACAZ,IAAAA,qBAAqB,CAACe,GAAD,EAAMb,KAAN,EAAaC,EAAb,EAAiBC,EAAjB,CAArB;AAEAF,IAAAA,KAAK,CAAC,CAAD,CAAL,IAAYa,GAAG,GAAGZ,EAAlB;AACAD,IAAAA,KAAK,CAAC,CAAD,CAAL,IAAYa,GAAG,GAAGX,EAAlB;AACD;;AAED,MAAI9B,IAAI,GAAG,CAAP,KAAa,CAAjB,EAAoB;AAClB,UAAM2C,CAAC,GAAGf,KAAK,CAAC,CAAD,CAAf;AACAA,IAAAA,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAhB;AACAA,IAAAA,KAAK,CAAC,CAAD,CAAL,GAAWe,CAAX;AACD;;AAED,SAAO;AAAC3C,IAAAA,IAAD;AAAOR,IAAAA,EAAE,EAAEoC,KAAX;AAAkBU,IAAAA;AAAlB,GAAP;AACD","sourcesContent":["/*\nAdapted from s2-geometry\n\nISC License (ISC)\n\nCopyright (c) 2012-2016, Jon Atkins <github@jonatkins.com>\nCopyright (c) 2016, AJ ONeal <aj@daplie.com>\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n*/\n\nimport Long from 'long';\n\n//\n// Functional Style\n//\nconst FACE_BITS = 3;\nconst MAX_LEVEL = 30;\nconst POS_BITS = 2 * MAX_LEVEL + 1; // 61 (60 bits of data, 1 bit lsb marker)\nconst RADIAN_TO_DEGREE = 180 / Math.PI;\n\nexport function IJToST(ij, order, offsets) {\n const maxSize = 1 << order;\n\n return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];\n}\n\nfunction singleSTtoUV(st) {\n if (st >= 0.5) {\n return (1 / 3.0) * (4 * st * st - 1);\n }\n return (1 / 3.0) * (1 - 4 * (1 - st) * (1 - st));\n}\n\nexport function STToUV(st) {\n return [singleSTtoUV(st[0]), singleSTtoUV(st[1])];\n}\n\nexport function FaceUVToXYZ(face, [u, v]) {\n switch (face) {\n case 0:\n return [1, u, v];\n case 1:\n return [-u, 1, v];\n case 2:\n return [-u, -v, 1];\n case 3:\n return [-1, -v, -u];\n case 4:\n return [v, -1, -u];\n case 5:\n return [v, u, -1];\n default:\n throw new Error('Invalid face');\n }\n}\n\nexport function XYZToLngLat([x, y, z]) {\n const lat = Math.atan2(z, Math.sqrt(x * x + y * y));\n const lng = Math.atan2(y, x);\n\n return [lng * RADIAN_TO_DEGREE, lat * RADIAN_TO_DEGREE];\n}\n\nexport function toHilbertQuadkey(idS) {\n let bin = Long.fromString(idS, true, 10).toString(2);\n\n while (bin.length < FACE_BITS + POS_BITS) {\n // eslint-disable-next-line prefer-template\n bin = '0' + bin;\n }\n\n // MUST come AFTER binstr has been left-padded with '0's\n const lsbIndex = bin.lastIndexOf('1');\n // substr(start, len)\n // substring(start, end) // includes start, does not include end\n const faceB = bin.substring(0, 3);\n // posB will always be a multiple of 2 (or it's invalid)\n const posB = bin.substring(3, lsbIndex);\n const levelN = posB.length / 2;\n\n const faceS = Long.fromString(faceB, true, 2).toString(10);\n let posS = Long.fromString(posB, true, 2).toString(4);\n\n while (posS.length < levelN) {\n // eslint-disable-next-line prefer-template\n posS = '0' + posS;\n }\n\n return `${faceS}/${posS}`;\n}\n\nfunction rotateAndFlipQuadrant(n, point, rx, ry) {\n if (ry === 0) {\n if (rx === 1) {\n point[0] = n - 1 - point[0];\n point[1] = n - 1 - point[1];\n }\n\n const x = point[0];\n point[0] = point[1];\n point[1] = x;\n }\n}\n\nexport function FromHilbertQuadKey(hilbertQuadkey) {\n const parts = hilbertQuadkey.split('/');\n const face = parseInt(parts[0], 10);\n const position = parts[1];\n const maxLevel = position.length;\n const point = [0, 0];\n let level;\n\n for (let i = maxLevel - 1; i >= 0; i--) {\n level = maxLevel - i;\n const bit = position[i];\n let rx = 0;\n let ry = 0;\n if (bit === '1') {\n ry = 1;\n } else if (bit === '2') {\n rx = 1;\n ry = 1;\n } else if (bit === '3') {\n rx = 1;\n }\n\n const val = Math.pow(2, level - 1);\n rotateAndFlipQuadrant(val, point, rx, ry);\n\n point[0] += val * rx;\n point[1] += val * ry;\n }\n\n if (face % 2 === 1) {\n const t = point[0];\n point[0] = point[1];\n point[1] = t;\n }\n\n return {face, ij: point, level};\n}\n"],"file":"s2-geometry.js"}
|
|
@@ -8,11 +8,12 @@ function getIdFromToken(token) {
|
|
|
8
8
|
|
|
9
9
|
const MAX_RESOLUTION = 100;
|
|
10
10
|
|
|
11
|
-
function getGeoBounds({
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
function getGeoBounds(_ref) {
|
|
12
|
+
let {
|
|
13
|
+
face,
|
|
14
|
+
ij,
|
|
15
|
+
level
|
|
16
|
+
} = _ref;
|
|
16
17
|
const offsets = [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]];
|
|
17
18
|
const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));
|
|
18
19
|
const result = new Float64Array(4 * resolution * 2 + 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/s2-layer/s2-utils.js"],"names":["toHilbertQuadkey","FromHilbertQuadKey","IJToST","STToUV","FaceUVToXYZ","XYZToLngLat","Long","getIdFromToken","token","paddedToken","padEnd","fromString","MAX_RESOLUTION","getGeoBounds","face","ij","level","offsets","resolution","Math","max","ceil","pow","result","Float64Array","ptIndex","prevLng","i","offset","slice","nextOffset","stepI","stepJ","j","st","uv","xyz","lngLat","abs","deltaLng","getS2QuadKey","indexOf","toString","getS2Polygon","key","s2cell"],"mappings":"AAEA,SACEA,gBADF,EAEEC,kBAFF,EAGEC,MAHF,EAIEC,MAJF,EAKEC,WALF,EAMEC,WANF,QAOO,eAPP;AAQA,OAAOC,IAAP,MAAiB,MAAjB;;AAMA,SAASC,cAAT,CAAwBC,KAAxB,EAA+B;AAE7B,QAAMC,WAAW,GAAGD,KAAK,CAACE,MAAN,CAAa,EAAb,EAAiB,GAAjB,CAApB;AACA,SAAOJ,IAAI,CAACK,UAAL,CAAgBF,WAAhB,EAA6B,EAA7B,CAAP;AACD;;AAED,MAAMG,cAAc,GAAG,GAAvB;;AAIA,SAASC,YAAT,
|
|
1
|
+
{"version":3,"sources":["../../../src/s2-layer/s2-utils.js"],"names":["toHilbertQuadkey","FromHilbertQuadKey","IJToST","STToUV","FaceUVToXYZ","XYZToLngLat","Long","getIdFromToken","token","paddedToken","padEnd","fromString","MAX_RESOLUTION","getGeoBounds","face","ij","level","offsets","resolution","Math","max","ceil","pow","result","Float64Array","ptIndex","prevLng","i","offset","slice","nextOffset","stepI","stepJ","j","st","uv","xyz","lngLat","abs","deltaLng","getS2QuadKey","indexOf","toString","getS2Polygon","key","s2cell"],"mappings":"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","sourcesContent":["// s2-geometry is a pure JavaScript port of Google/Niantic's S2 Geometry library\n// which is perfect since it works in the browser.\nimport {\n toHilbertQuadkey,\n FromHilbertQuadKey,\n IJToST,\n STToUV,\n FaceUVToXYZ,\n XYZToLngLat\n} from './s2-geometry';\nimport Long from 'long';\n\n/**\n * Given an S2 token this function convert the token to 64 bit id\n https://github.com/google/s2-geometry-library-java/blob/c04b68bf3197a9c34082327eeb3aec7ab7c85da1/src/com/google/common/geometry/S2CellId.java#L439\n * */\nfunction getIdFromToken(token) {\n // pad token with zeros to make the length 16\n const paddedToken = token.padEnd(16, '0');\n return Long.fromString(paddedToken, 16);\n}\n\nconst MAX_RESOLUTION = 100;\n\n/* Adapted from s2-geometry's S2Cell.getCornerLatLngs */\n/* eslint-disable max-statements */\nfunction getGeoBounds({face, ij, level}) {\n const offsets = [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]];\n\n // The S2 cell edge is curved: http://s2geometry.io/\n // This is more prominent at lower levels\n // resolution is the number of segments to generate per edge.\n // We exponentially reduce resolution as level increases so it doesn't affect perf\n // when there are a large number of cells\n const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));\n const result = new Float64Array(4 * resolution * 2 + 2);\n let ptIndex = 0;\n let prevLng = 0;\n\n for (let i = 0; i < 4; i++) {\n const offset = offsets[i].slice(0);\n const nextOffset = offsets[i + 1];\n const stepI = (nextOffset[0] - offset[0]) / resolution;\n const stepJ = (nextOffset[1] - offset[1]) / resolution;\n\n for (let j = 0; j < resolution; j++) {\n offset[0] += stepI;\n offset[1] += stepJ;\n // Cell can be represented by coordinates IJ, ST, UV, XYZ\n // http://s2geometry.io/devguide/s2cell_hierarchy#coordinate-systems\n const st = IJToST(ij, level, offset);\n const uv = STToUV(st);\n const xyz = FaceUVToXYZ(face, uv);\n const lngLat = XYZToLngLat(xyz);\n\n // Adjust longitude for Web Mercator projection\n if (Math.abs(lngLat[1]) > 89.999) {\n lngLat[0] = prevLng;\n }\n const deltaLng = lngLat[0] - prevLng;\n lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;\n\n result[ptIndex++] = lngLat[0];\n result[ptIndex++] = lngLat[1];\n prevLng = lngLat[0];\n }\n }\n // close the loop\n result[ptIndex++] = result[0];\n result[ptIndex++] = result[1];\n return result;\n}\n/* eslint-enable max-statements */\n\nexport function getS2QuadKey(token) {\n if (typeof token === 'string') {\n if (token.indexOf('/') > 0) {\n // is Hilbert quad key\n return token;\n }\n // is S2 token\n token = getIdFromToken(token);\n }\n // is Long id\n return toHilbertQuadkey(token.toString());\n}\n\n/**\n * Get a polygon with corner coordinates for an s2 cell\n * @param {*} cell - This can be an S2 key or token\n * @return {Array} - a simple polygon in array format: [[lng, lat], ...]\n * - each coordinate is an array [lng, lat]\n * - the polygon is closed, i.e. last coordinate is a copy of the first coordinate\n */\nexport function getS2Polygon(token) {\n const key = getS2QuadKey(token);\n const s2cell = FromHilbertQuadKey(key);\n\n return getGeoBounds(s2cell);\n}\n"],"file":"s2-utils.js"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CompositeLayer, log } from '@deck.gl/core';
|
|
2
2
|
import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
|
|
3
|
-
import {
|
|
3
|
+
import { COORDINATE_SYSTEM } from '@deck.gl/core';
|
|
4
4
|
import { TerrainWorkerLoader } from '@loaders.gl/terrain';
|
|
5
5
|
import TileLayer from '../tile-layer/tile-layer';
|
|
6
6
|
import { urlType, getURLFromTemplate } from '../tile-layer/utils';
|
|
@@ -51,10 +51,11 @@ function urlTemplateToUpdateTrigger(template) {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export default class TerrainLayer extends CompositeLayer {
|
|
54
|
-
updateState({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
updateState(_ref) {
|
|
55
|
+
let {
|
|
56
|
+
props,
|
|
57
|
+
oldProps
|
|
58
|
+
} = _ref;
|
|
58
59
|
const elevationDataChanged = props.elevationData !== oldProps.elevationData;
|
|
59
60
|
|
|
60
61
|
if (elevationDataChanged) {
|
|
@@ -81,15 +82,17 @@ export default class TerrainLayer extends CompositeLayer {
|
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
loadTerrain({
|
|
85
|
-
elevationData,
|
|
86
|
-
bounds,
|
|
87
|
-
elevationDecoder,
|
|
88
|
-
meshMaxError,
|
|
89
|
-
signal
|
|
90
|
-
}) {
|
|
85
|
+
loadTerrain(_ref2) {
|
|
91
86
|
var _loadOptions;
|
|
92
87
|
|
|
88
|
+
let {
|
|
89
|
+
elevationData,
|
|
90
|
+
bounds,
|
|
91
|
+
elevationDecoder,
|
|
92
|
+
meshMaxError,
|
|
93
|
+
signal
|
|
94
|
+
} = _ref2;
|
|
95
|
+
|
|
93
96
|
if (!elevationData) {
|
|
94
97
|
return null;
|
|
95
98
|
}
|
|
@@ -123,20 +126,17 @@ export default class TerrainLayer extends CompositeLayer {
|
|
|
123
126
|
elevationDecoder,
|
|
124
127
|
meshMaxError
|
|
125
128
|
} = this.props;
|
|
129
|
+
const {
|
|
130
|
+
viewport
|
|
131
|
+
} = this.context;
|
|
126
132
|
const dataUrl = getURLFromTemplate(elevationData, tile);
|
|
127
133
|
const textureUrl = getURLFromTemplate(texture, tile);
|
|
128
134
|
const {
|
|
129
135
|
bbox,
|
|
130
|
-
signal
|
|
131
|
-
z
|
|
136
|
+
signal
|
|
132
137
|
} = tile;
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
latitude: (bbox.north + bbox.south) / 2,
|
|
136
|
-
zoom: z
|
|
137
|
-
});
|
|
138
|
-
const bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);
|
|
139
|
-
const topRight = viewport.projectFlat([bbox.east, bbox.north]);
|
|
138
|
+
const bottomLeft = viewport.isGeospatial ? viewport.projectFlat([bbox.west, bbox.south]) : [bbox.left, bbox.bottom];
|
|
139
|
+
const topRight = viewport.isGeospatial ? viewport.projectFlat([bbox.east, bbox.north]) : [bbox.right, bbox.top];
|
|
140
140
|
const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];
|
|
141
141
|
const terrain = this.loadTerrain({
|
|
142
142
|
elevationData: dataUrl,
|
|
@@ -170,6 +170,7 @@ export default class TerrainLayer extends CompositeLayer {
|
|
|
170
170
|
data: DUMMY_DATA,
|
|
171
171
|
mesh,
|
|
172
172
|
texture,
|
|
173
|
+
_instanced: false,
|
|
173
174
|
coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
|
|
174
175
|
getPosition: d => [0, 0, 0],
|
|
175
176
|
getColor: color
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.js"],"names":["CompositeLayer","log","SimpleMeshLayer","WebMercatorViewport","COORDINATE_SYSTEM","TerrainWorkerLoader","TileLayer","urlType","getURLFromTemplate","DUMMY_DATA","defaultProps","elevationData","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","updateState","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","state","terrain","loadTerrain","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","getTiledTerrainData","tile","dataUrl","textureUrl","bbox","z","viewport","longitude","west","east","latitude","north","south","zoom","bottomLeft","projectFlat","topRight","surface","catch","_","Promise","resolve","all","renderSubLayers","SubLayerClass","getSubLayerClass","data","mesh","coordinateSystem","CARTESIAN","getPosition","d","getColor","onViewportLoad","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","renderLayers","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","bind","updateTriggers","_instanced","layerName"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, log} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {WebMercatorViewport, COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer from '../tile-layer/tile-layer';\nimport {urlType, getURLFromTemplate} from '../tile-layer/utils';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: {type: 'string', value: null},\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template) {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template;\n}\n\n/**\n * state: {\n * isTiled: True renders TileLayer of many SimpleMeshLayers, false renders one SimpleMeshLayer\n * terrain: Mesh object. Only defined when isTiled is false.\n * }\n */\nexport default class TerrainLayer extends CompositeLayer {\n updateState({props, oldProps}) {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n const terrain = this.loadTerrain(props);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({elevationData, bounds, elevationDecoder, meshMaxError, signal}) {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile) {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = getURLFromTemplate(texture, tile);\n\n const {bbox, signal, z} = tile;\n const viewport = new WebMercatorViewport({\n longitude: (bbox.west + bbox.east) / 2,\n latitude: (bbox.north + bbox.south) / 2,\n zoom: z\n });\n const bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);\n const topRight = viewport.projectFlat([bbox.east, bbox.north]);\n const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(props) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n const {data, color} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles) {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers() {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n wireframe,\n color,\n material,\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n\nTerrainLayer.layerName = 'TerrainLayer';\nTerrainLayer.defaultProps = defaultProps;\n"],"file":"terrain-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.js"],"names":["CompositeLayer","log","SimpleMeshLayer","COORDINATE_SYSTEM","TerrainWorkerLoader","TileLayer","urlType","getURLFromTemplate","DUMMY_DATA","defaultProps","elevationData","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","updateState","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","state","terrain","loadTerrain","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","getTiledTerrainData","tile","viewport","context","dataUrl","textureUrl","bbox","bottomLeft","isGeospatial","projectFlat","west","south","left","bottom","topRight","east","north","right","top","surface","catch","_","Promise","resolve","all","renderSubLayers","SubLayerClass","getSubLayerClass","data","mesh","_instanced","coordinateSystem","CARTESIAN","getPosition","d","getColor","onViewportLoad","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","renderLayers","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","bind","updateTriggers","layerName"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, log} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer from '../tile-layer/tile-layer';\nimport {urlType, getURLFromTemplate} from '../tile-layer/utils';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: {type: 'string', value: null},\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template) {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template;\n}\n\n/**\n * state: {\n * isTiled: True renders TileLayer of many SimpleMeshLayers, false renders one SimpleMeshLayer\n * terrain: Mesh object. Only defined when isTiled is false.\n * }\n */\nexport default class TerrainLayer extends CompositeLayer {\n updateState({props, oldProps}) {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n const terrain = this.loadTerrain(props);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({elevationData, bounds, elevationDecoder, meshMaxError, signal}) {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile) {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const {viewport} = this.context;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = getURLFromTemplate(texture, tile);\n\n const {bbox, signal} = tile;\n const bottomLeft = viewport.isGeospatial\n ? viewport.projectFlat([bbox.west, bbox.south])\n : [bbox.left, bbox.bottom];\n const topRight = viewport.isGeospatial\n ? viewport.projectFlat([bbox.east, bbox.north])\n : [bbox.right, bbox.top];\n const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(props) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n const {data, color} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n _instanced: false,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles) {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers() {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n wireframe,\n color,\n material,\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n\nTerrainLayer.layerName = 'TerrainLayer';\nTerrainLayer.defaultProps = defaultProps;\n"],"file":"terrain-layer.js"}
|
|
@@ -63,17 +63,20 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
63
63
|
return tileset3d && tileset3d.isLoaded();
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
shouldUpdateState({
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
shouldUpdateState(_ref) {
|
|
67
|
+
let {
|
|
68
|
+
changeFlags
|
|
69
|
+
} = _ref;
|
|
69
70
|
return changeFlags.somethingChanged;
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
updateState({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
updateState(_ref2) {
|
|
74
|
+
let {
|
|
75
|
+
props,
|
|
76
|
+
oldProps,
|
|
77
|
+
changeFlags
|
|
78
|
+
} = _ref2;
|
|
79
|
+
|
|
77
80
|
if (props.data && props.data !== oldProps.data) {
|
|
78
81
|
this._loadTileset(props.data);
|
|
79
82
|
}
|
|
@@ -120,10 +123,11 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
125
|
|
|
123
|
-
getPickingInfo({
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
126
|
+
getPickingInfo(_ref3) {
|
|
127
|
+
let {
|
|
128
|
+
info,
|
|
129
|
+
sourceLayer
|
|
130
|
+
} = _ref3;
|
|
127
131
|
const {
|
|
128
132
|
layerMap
|
|
129
133
|
} = this.state;
|
|
@@ -138,10 +142,11 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
138
142
|
return info;
|
|
139
143
|
}
|
|
140
144
|
|
|
141
|
-
filterSubLayer({
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
filterSubLayer(_ref4) {
|
|
146
|
+
let {
|
|
147
|
+
layer,
|
|
148
|
+
viewport
|
|
149
|
+
} = _ref4;
|
|
145
150
|
const {
|
|
146
151
|
tile
|
|
147
152
|
} = layer.props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["Geometry","COORDINATE_SYSTEM","CompositeLayer","PointCloudLayer","ScenegraphLayer","default","_MeshLayer","log","load","Tileset3D","TILE_TYPE","Tiles3DLoader","SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","initializeState","props","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","shouldUpdateState","changeFlags","somethingChanged","updateState","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","activateViewport","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","getPickingInfo","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","filterSubLayer","layer","viewportId","selected","viewportIds","includes","_updateAutoHighlight","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","_onTileLoad","bind","_onTileUnload","onTileLoadFail","setState","viewports","timeline","context","frameNumber","update","values","tilesetChanged","_getSubLayer","oldLayer","content","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","getSubLayerProps","coordinateSystem","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","drawMode","getMeshGeometry","pbrMaterial","renderLayers","tiles","map","layerCache","filter","Boolean","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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["Geometry","COORDINATE_SYSTEM","CompositeLayer","PointCloudLayer","ScenegraphLayer","default","_MeshLayer","log","load","Tileset3D","TILE_TYPE","Tiles3DLoader","SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","initializeState","props","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","shouldUpdateState","changeFlags","somethingChanged","updateState","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","activateViewport","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","getPickingInfo","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","filterSubLayer","layer","viewportId","selected","viewportIds","includes","_updateAutoHighlight","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","_onTileLoad","bind","_onTileUnload","onTileLoadFail","setState","viewports","timeline","context","frameNumber","update","values","tilesetChanged","_getSubLayer","oldLayer","content","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","getSubLayerProps","coordinateSystem","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","drawMode","getMeshGeometry","pbrMaterial","renderLayers","tiles","map","layerCache","filter","Boolean","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"}
|