@deck.gl/geo-layers 8.6.0-alpha.3 → 8.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/dist.dev.js +4574 -622
  2. package/dist/es5/h3-layers/h3-hexagon-layer.js +61 -46
  3. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  4. package/dist/es5/mvt-layer/mvt-layer.js +2 -2
  5. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  6. package/dist/es5/tile-3d-layer/tile-3d-layer.js +1 -1
  7. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  8. package/dist/es5/tile-layer/tile-2d-header.js +70 -55
  9. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  10. package/dist/es5/tile-layer/tile-2d-traversal.js +42 -4
  11. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  12. package/dist/es5/tile-layer/tile-layer.js +31 -33
  13. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  14. package/dist/es5/tile-layer/tileset-2d.js +102 -67
  15. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  16. package/dist/es5/tile-layer/utils.js +1 -1
  17. package/dist/es5/tile-layer/utils.js.map +1 -1
  18. package/dist/esm/h3-layers/h3-hexagon-layer.js +52 -38
  19. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  20. package/dist/esm/mvt-layer/mvt-layer.js +2 -4
  21. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  22. package/dist/esm/tile-3d-layer/tile-3d-layer.js +1 -1
  23. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  24. package/dist/esm/tile-layer/tile-2d-header.js +43 -31
  25. package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
  26. package/dist/esm/tile-layer/tile-2d-traversal.js +23 -1
  27. package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
  28. package/dist/esm/tile-layer/tile-layer.js +29 -33
  29. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  30. package/dist/esm/tile-layer/tileset-2d.js +34 -11
  31. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  32. package/dist/esm/tile-layer/utils.js +1 -1
  33. package/dist/esm/tile-layer/utils.js.map +1 -1
  34. package/dist.min.js +2 -2
  35. package/package.json +3 -3
  36. package/src/h3-layers/h3-hexagon-layer.js +47 -37
  37. package/src/mvt-layer/mvt-layer.js +2 -2
  38. package/src/tile-3d-layer/tile-3d-layer.js +1 -1
  39. package/src/tile-layer/tile-2d-header.js +43 -32
  40. package/src/tile-layer/tile-2d-traversal.js +28 -2
  41. package/src/tile-layer/tile-layer.js +33 -34
  42. package/src/tile-layer/tileset-2d.js +29 -15
  43. package/src/tile-layer/utils.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["h3ToGeoBoundary","h3GetResolution","h3ToGeo","geoToH3","h3IsPentagon","h3Distance","edgeLength","UNITS","lerp","CompositeLayer","createIterable","ColumnLayer","PolygonLayer","UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","shouldUpdateState","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","updateState","props","oldProps","dataChanged","updateTriggers","resolution","hasPentagon","hasMultipleRes","iterable","data","index","hexResolution","setState","edgeLengthKM","km","_updateVertices","context","viewport","state","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","centerX","centerY","projectFlat","map","p","worldPosition","renderLayers","_renderPolygonLayer","_renderColumnLayer","_getForwardProps","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","SubLayerClass","getSubLayerClass","forwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","getPosition","diskResolution","radius","bind","layerName"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n UNITS\n} from 'h3-js';\nimport {lerp} from 'math.gl';\nimport {CompositeLayer, createIterable} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1, flatten) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n if (flatten) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n }\n\n return vertices;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: false,\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n// not supported\ndelete defaultProps.getLineDashArray;\n\n/**\n * A subclass of HexagonLayer that uses H3 hexagonIds in data objects\n * rather than centroid lat/longs. The shape of each hexagon is determined\n * based on a single \"center\" hexagon, which can be selected by passing in\n * a center lat/lon pair. If not provided, the map center will be used.\n *\n * Also sets the `hexagonId` field in the onHover/onClick callback's info\n * objects. Since this is calculated using math, hexagonId will be present\n * even when no corresponding hexagon is in the data set. You can check\n * index !== -1 to see if picking matches an actual object.\n */\nexport default class H3HexagonLayer extends CompositeLayer {\n shouldUpdateState({changeFlags}) {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon)\n ) {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n const {iterable, objectInfo} = createIterable(props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) resolution = hexResolution;\n else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n this.setState({\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, UNITS.km) : 0,\n hasMultipleRes,\n hasPentagon\n });\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _shouldUseHighPrecision() {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n this.props.highPrecision ||\n viewport.resolution ||\n hasMultipleRes ||\n hasPentagon ||\n (resolution >= 0 && resolution <= 5)\n );\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return h3ToPolygon(hexagonId, coverage, true);\n }\n }\n );\n }\n\n _renderColumnLayer() {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n\nH3HexagonLayer.defaultProps = defaultProps;\nH3HexagonLayer.layerName = 'H3HexagonLayer';\n"],"file":"h3-hexagon-layer.js"}
1
+ {"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["h3ToGeoBoundary","h3GetResolution","h3ToGeo","geoToH3","h3IsPentagon","h3Distance","edgeLength","UNITS","lerp","CompositeLayer","createIterable","ColumnLayer","PolygonLayer","UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","shouldUpdateState","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","updateState","props","oldProps","dataChanged","updateTriggers","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","resolution","hasPentagon","hasMultipleRes","iterable","data","index","hexResolution","edgeLengthKM","km","state","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","centerX","centerY","projectFlat","map","p","worldPosition","renderLayers","_renderPolygonLayer","_renderColumnLayer","_getForwardProps","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","SubLayerClass","getSubLayerClass","forwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","getPosition","diskResolution","radius","bind","layerName"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n UNITS\n} from 'h3-js';\nimport {lerp} from 'math.gl';\nimport {CompositeLayer, createIterable} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1, flatten) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n if (flatten) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n }\n\n return vertices;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n// not supported\ndelete defaultProps.getLineDashArray;\n\n/**\n * A subclass of HexagonLayer that uses H3 hexagonIds in data objects\n * rather than centroid lat/longs. The shape of each hexagon is determined\n * based on a single \"center\" hexagon, which can be selected by passing in\n * a center lat/lon pair. If not provided, the map center will be used.\n *\n * Also sets the `hexagonId` field in the onHover/onClick callback's info\n * objects. Since this is calculated using math, hexagonId will be present\n * even when no corresponding hexagon is in the data set. You can check\n * index !== -1 to see if picking matches an actual object.\n */\nexport default class H3HexagonLayer extends CompositeLayer {\n shouldUpdateState({changeFlags}) {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps(props);\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _calculateH3DataProps(props) {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, UNITS.km) : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n _shouldUseHighPrecision() {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n viewport.resolution || hasMultipleRes || hasPentagon || (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return h3ToPolygon(hexagonId, coverage, true);\n }\n }\n );\n }\n\n _renderColumnLayer() {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n\nH3HexagonLayer.defaultProps = defaultProps;\nH3HexagonLayer.layerName = 'H3HexagonLayer';\n"],"file":"h3-hexagon-layer.js"}
@@ -17,7 +17,7 @@ const defaultProps = {
17
17
  },
18
18
  highlightedFeatureId: null,
19
19
  loaders: [MVTWorkerLoader],
20
- binary: false
20
+ binary: true
21
21
  };
22
22
  export default class MVTLayer extends TileLayer {
23
23
  initializeState() {
@@ -248,9 +248,7 @@ export default class MVTLayer extends TileLayer {
248
248
  highlightedFeatureId,
249
249
  binary
250
250
  } = this.props;
251
- const {
252
- data
253
- } = tile;
251
+ const data = tile.content;
254
252
  const isHighlighted = isFeatureIdDefined(highlightedFeatureId);
255
253
  const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;
256
254
 
@@ -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","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","content","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: false\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const {data} = tile;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
1
+ {"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["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"}
@@ -148,7 +148,7 @@ export default class Tile3DLayer extends CompositeLayer {
148
148
  const {
149
149
  id: viewportId
150
150
  } = viewport;
151
- return this.props.visible && tile.selected && tile.viewportIds.includes(viewportId);
151
+ return tile.selected && tile.viewportIds.includes(viewportId);
152
152
  }
153
153
 
154
154
  _updateAutoHighlight(info) {
@@ -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","visible","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 this.props.visible && tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileLoadFail: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n _onTileLoad(tileHeader) {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tileHeader) {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n _updateTileset(viewports) {\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n const frameNumber = tileset3d.update(Object.values(viewports));\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n }\n\n _getSubLayer(tileHeader, oldLayer) {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader, oldLayer);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n _makePointCloudLayer(tileHeader, oldLayer) {\n const {\n attributes,\n pointCount,\n constantRGBA,\n cartographicOrigin,\n modelMatrix\n } = tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n _make3DModelLayer(tileHeader) {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n _makeSimpleMeshLayer(tileHeader, oldLayer) {\n const content = tileHeader.content;\n const {attributes, indices, modelMatrix, cartographicOrigin, material, featureIds} = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', _MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers() {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n return tileset3d.tiles\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes) {\n const attributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n\nTile3DLayer.layerName = 'Tile3DLayer';\nTile3DLayer.defaultProps = defaultProps;\n"],"file":"tile-3d-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["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"}
@@ -3,9 +3,7 @@ export default class Tile2DHeader {
3
3
  constructor({
4
4
  x,
5
5
  y,
6
- z,
7
- onTileLoad,
8
- onTileError
6
+ z
9
7
  }) {
10
8
  this.x = x;
11
9
  this.y = y;
@@ -15,26 +13,26 @@ export default class Tile2DHeader {
15
13
  this.parent = null;
16
14
  this.children = [];
17
15
  this.content = null;
16
+ this._loaderId = 0;
18
17
  this._isLoaded = false;
19
18
  this._isCancelled = false;
20
- this.onTileLoad = onTileLoad;
21
- this.onTileError = onTileError;
19
+ this._needsReload = false;
22
20
  }
23
21
 
24
22
  get data() {
25
- return this._isLoaded ? this.content : this._loader;
23
+ return this.isLoading ? this._loader.then(() => this.data) : this.content;
26
24
  }
27
25
 
28
26
  get isLoaded() {
29
- return this._isLoaded;
27
+ return this._isLoaded && !this._needsReload;
30
28
  }
31
29
 
32
30
  get isLoading() {
33
- return Boolean(this._loader);
31
+ return Boolean(this._loader) && !this._isCancelled;
34
32
  }
35
33
 
36
- get isCancelled() {
37
- return this._isCancelled;
34
+ get needsReload() {
35
+ return this._needsReload || this._isCancelled;
38
36
  }
39
37
 
40
38
  get byteLength() {
@@ -47,13 +45,19 @@ export default class Tile2DHeader {
47
45
  return result;
48
46
  }
49
47
 
50
- async _loadData(getTileData, requestScheduler) {
48
+ async _loadData({
49
+ getData,
50
+ requestScheduler,
51
+ onLoad,
52
+ onError
53
+ }) {
51
54
  const {
52
55
  x,
53
56
  y,
54
57
  z,
55
58
  bbox
56
59
  } = this;
60
+ const loaderId = this._loaderId;
57
61
  this._abortController = new AbortController();
58
62
  const {
59
63
  signal
@@ -72,11 +76,11 @@ export default class Tile2DHeader {
72
76
  return;
73
77
  }
74
78
 
75
- let tileData;
79
+ let tileData = null;
76
80
  let error;
77
81
 
78
82
  try {
79
- tileData = await getTileData({
83
+ tileData = await getData({
80
84
  x,
81
85
  y,
82
86
  z,
@@ -87,38 +91,46 @@ export default class Tile2DHeader {
87
91
  error = err || true;
88
92
  } finally {
89
93
  requestToken.done();
94
+ }
90
95
 
91
- if (this._isCancelled && !tileData) {
92
- this._isLoaded = false;
93
- } else {
94
- this._isLoaded = true;
95
- this._isCancelled = false;
96
- }
96
+ if (loaderId !== this._loaderId) {
97
+ return;
97
98
  }
98
99
 
99
- if (!this._isLoaded) {
100
+ this._loader = undefined;
101
+ this.content = tileData;
102
+
103
+ if (this._isCancelled && !tileData) {
104
+ this._isLoaded = false;
100
105
  return;
101
106
  }
102
107
 
108
+ this._isLoaded = true;
109
+ this._isCancelled = false;
110
+
103
111
  if (error) {
104
- this.onTileError(error, this);
112
+ onError(error, this);
105
113
  } else {
106
- this.content = tileData;
107
- this.onTileLoad(this);
114
+ onLoad(this);
108
115
  }
109
116
  }
110
117
 
111
- loadData(getTileData, requestScheduler) {
112
- if (!getTileData) {
113
- return;
114
- }
115
-
118
+ loadData(opts) {
119
+ this._isLoaded = false;
116
120
  this._isCancelled = false;
117
- this._loader = this._loadData(getTileData, requestScheduler);
121
+ this._needsReload = false;
122
+ this._loaderId++;
123
+ this._loader = this._loadData(opts);
124
+ return this._loader;
125
+ }
118
126
 
119
- this._loader.finally(() => {
127
+ setNeedsReload() {
128
+ if (this.isLoading) {
129
+ this.abort();
120
130
  this._loader = undefined;
121
- });
131
+ }
132
+
133
+ this._needsReload = true;
122
134
  }
123
135
 
124
136
  abort() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-2d-header.js"],"names":["log","Tile2DHeader","constructor","x","y","z","onTileLoad","onTileError","isVisible","isSelected","parent","children","content","_isLoaded","_isCancelled","data","_loader","isLoaded","isLoading","Boolean","isCancelled","byteLength","result","Number","isFinite","error","_loadData","getTileData","requestScheduler","bbox","_abortController","AbortController","signal","requestToken","scheduleRequest","tile","done","tileData","err","loadData","finally","undefined","abort"],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport {log} from '@deck.gl/core';\n\nexport default class Tile2DHeader {\n constructor({x, y, z, onTileLoad, onTileError}) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n this._isLoaded = false;\n this._isCancelled = false;\n\n this.onTileLoad = onTileLoad;\n this.onTileError = onTileError;\n }\n\n get data() {\n return this._isLoaded ? this.content : this._loader;\n }\n\n get isLoaded() {\n return this._isLoaded;\n }\n\n get isLoading() {\n return Boolean(this._loader);\n }\n\n get isCancelled() {\n return this._isCancelled;\n }\n\n get byteLength() {\n const result = this.content ? this.content.byteLength : 0;\n if (!Number.isFinite(result)) {\n log.error('byteLength not defined in tile data')();\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n async _loadData(getTileData, requestScheduler) {\n const {x, y, z, bbox} = this;\n\n this._abortController = new AbortController(); // eslint-disable-line no-undef\n const {signal} = this._abortController;\n\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData;\n let error;\n try {\n tileData = await getTileData({x, y, z, bbox, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n } else {\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n this._isLoaded = true;\n this._isCancelled = false;\n }\n }\n\n if (!this._isLoaded) {\n return;\n }\n\n if (error) {\n this.onTileError(error, this);\n } else {\n this.content = tileData;\n this.onTileLoad(this);\n }\n }\n /* eslint-enable max-statements */\n\n loadData(getTileData, requestScheduler) {\n if (!getTileData) {\n return;\n }\n\n this._isCancelled = false;\n this._loader = this._loadData(getTileData, requestScheduler);\n this._loader.finally(() => {\n this._loader = undefined;\n });\n }\n\n abort() {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController.abort();\n }\n}\n"],"file":"tile-2d-header.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-2d-header.js"],"names":["log","Tile2DHeader","constructor","x","y","z","isVisible","isSelected","parent","children","content","_loaderId","_isLoaded","_isCancelled","_needsReload","data","isLoading","_loader","then","isLoaded","Boolean","needsReload","byteLength","result","Number","isFinite","error","_loadData","getData","requestScheduler","onLoad","onError","bbox","loaderId","_abortController","AbortController","signal","requestToken","scheduleRequest","tile","done","tileData","err","undefined","loadData","opts","setNeedsReload","abort"],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport {log} from '@deck.gl/core';\n\nexport default class Tile2DHeader {\n constructor({x, y, z}) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n\n this._loaderId = 0;\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n }\n\n get data() {\n return this.isLoading ? this._loader.then(() => this.data) : this.content;\n }\n\n get isLoaded() {\n return this._isLoaded && !this._needsReload;\n }\n\n get isLoading() {\n return Boolean(this._loader) && !this._isCancelled;\n }\n\n get needsReload() {\n return this._needsReload || this._isCancelled;\n }\n\n get byteLength() {\n const result = this.content ? this.content.byteLength : 0;\n if (!Number.isFinite(result)) {\n log.error('byteLength not defined in tile data')();\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n async _loadData({getData, requestScheduler, onLoad, onError}) {\n const {x, y, z, bbox} = this;\n const loaderId = this._loaderId;\n\n this._abortController = new AbortController(); // eslint-disable-line no-undef\n const {signal} = this._abortController;\n\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData = null;\n let error;\n try {\n tileData = await getData({x, y, z, bbox, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n }\n\n // If loadData has been called with a newer version, discard the result from this operation\n if (loaderId !== this._loaderId) {\n return;\n }\n // Clear the `isLoading` flag\n this._loader = undefined;\n // Rewrite tile content with the result of getTileData if successful, or `null` in case of\n // error or cancellation\n this.content = tileData;\n // If cancelled, do not invoke the callbacks\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n return;\n }\n this._isLoaded = true;\n this._isCancelled = false;\n\n if (error) {\n onError(error, this);\n } else {\n onLoad(this);\n }\n }\n /* eslint-enable max-statements */\n\n loadData(opts) {\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n this._loaderId++;\n this._loader = this._loadData(opts);\n return this._loader;\n }\n\n setNeedsReload() {\n if (this.isLoading) {\n this.abort();\n this._loader = undefined;\n }\n this._needsReload = true;\n }\n\n abort() {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController.abort();\n }\n}\n"],"file":"tile-2d-header.js"}
@@ -1,4 +1,5 @@
1
1
  import { CullingVolume, Plane, AxisAlignedBoundingBox, makeOrientedBoundingBoxFromPoints } from '@math.gl/culling';
2
+ import { lngLatToWorld } from '@math.gl/web-mercator';
2
3
  import { osmTile2lngLat } from './utils';
3
4
  const TILE_SIZE = 512;
4
5
  const MAX_MAPS = 3;
@@ -31,10 +32,16 @@ class OSMNode {
31
32
  elevationBounds,
32
33
  minZ,
33
34
  maxZ,
35
+ bounds,
34
36
  offset,
35
37
  project
36
38
  } = params;
37
39
  const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);
40
+
41
+ if (bounds && !this.insideBounds(bounds)) {
42
+ return false;
43
+ }
44
+
38
45
  const isInside = cullingVolume.computeVisibility(boundingVolume);
39
46
 
40
47
  if (isInside < 0) {
@@ -81,6 +88,12 @@ class OSMNode {
81
88
  return result;
82
89
  }
83
90
 
91
+ insideBounds([minX, minY, maxX, maxY]) {
92
+ const scale = Math.pow(2, this.z);
93
+ const extent = TILE_SIZE / scale;
94
+ return this.x * extent < maxX && this.y * extent < maxY && (this.x + 1) * extent > minX && (this.y + 1) * extent > minY;
95
+ }
96
+
84
97
  getBoundingVolume(zRange, worldOffset, project) {
85
98
  if (project) {
86
99
  const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;
@@ -109,7 +122,7 @@ class OSMNode {
109
122
 
110
123
  }
111
124
 
112
- export function getOSMTileIndices(viewport, maxZ, zRange) {
125
+ export function getOSMTileIndices(viewport, maxZ, zRange, bounds) {
113
126
  const project = viewport.resolution ? viewport.projectPosition : null;
114
127
  const planes = Object.values(viewport.getFrustumPlanes()).map(({
115
128
  normal,
@@ -120,6 +133,14 @@ export function getOSMTileIndices(viewport, maxZ, zRange) {
120
133
  const elevationMin = zRange && zRange[0] * unitsPerMeter || 0;
121
134
  const elevationMax = zRange && zRange[1] * unitsPerMeter || 0;
122
135
  const minZ = viewport.pitch <= 60 ? maxZ : 0;
136
+
137
+ if (bounds) {
138
+ const [minLng, minLat, maxLng, maxLat] = bounds;
139
+ const topLeft = lngLatToWorld([minLng, maxLat]);
140
+ const bottomRight = lngLatToWorld([maxLng, minLat]);
141
+ bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];
142
+ }
143
+
123
144
  const root = new OSMNode(0, 0, 0);
124
145
  const traversalParams = {
125
146
  viewport,
@@ -128,6 +149,7 @@ export function getOSMTileIndices(viewport, maxZ, zRange) {
128
149
  elevationBounds: [elevationMin, elevationMax],
129
150
  minZ,
130
151
  maxZ,
152
+ bounds,
131
153
  offset: 0
132
154
  };
133
155
  root.update(traversalParams);