@deck.gl/geo-layers 8.6.2 → 8.6.3
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 +1449 -1449
- package/dist/es5/great-circle-layer/great-circle-layer.js +1 -26
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +87 -149
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +226 -321
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +9 -9
- package/dist/es5/mesh-layer/mesh-layer.js +125 -151
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +19 -45
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js +26 -45
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +282 -374
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js +32 -43
- package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +69 -104
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js +28 -27
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +208 -254
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +329 -382
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +119 -183
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +115 -178
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +214 -258
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +290 -435
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +61 -110
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +44 -81
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","props","oldProps","dataChanged","updateTriggers","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","resolution","hasPentagon","hasMultipleRes","data","iterable","index","hexResolution","edgeLengthKM","UNITS","km","state","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","projectFlat","centerX","centerY","map","p","worldPosition","_renderPolygonLayer","_renderColumnLayer","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","SubLayerClass","getSubLayerClass","forwardProps","_getForwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","ColumnLayer","getPosition","diskResolution","radius","bind","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n UNITS\n} from 'h3-js';\nimport {lerp} from 'math.gl';\nimport {CompositeLayer, createIterable} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1, flatten) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n if (flatten) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n }\n\n return vertices;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n// not supported\ndelete defaultProps.getLineDashArray;\n\n/**\n * A subclass of HexagonLayer that uses H3 hexagonIds in data objects\n * rather than centroid lat/longs. The shape of each hexagon is determined\n * based on a single \"center\" hexagon, which can be selected by passing in\n * a center lat/lon pair. If not provided, the map center will be used.\n *\n * Also sets the `hexagonId` field in the onHover/onClick callback's info\n * objects. Since this is calculated using math, hexagonId will be present\n * even when no corresponding hexagon is in the data set. You can check\n * index !== -1 to see if picking matches an actual object.\n */\nexport default class H3HexagonLayer extends CompositeLayer {\n shouldUpdateState({changeFlags}) {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps(props);\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _calculateH3DataProps(props) {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, UNITS.km) : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n _shouldUseHighPrecision() {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n viewport.resolution || hasMultipleRes || hasPentagon || (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return h3ToPolygon(hexagonId, coverage, true);\n }\n }\n );\n }\n\n _renderColumnLayer() {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n\nH3HexagonLayer.defaultProps = defaultProps;\nH3HexagonLayer.layerName = 'H3HexagonLayer';\n"],"file":"h3-hexagon-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","CompositeLayer","shouldUpdateState","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","updateState","props","oldProps","dataChanged","updateTriggers","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","resolution","hasPentagon","hasMultipleRes","iterable","data","index","hexResolution","edgeLengthKM","UNITS","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","ColumnLayer","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"}
|
package/dist/es5/index.js
CHANGED
|
@@ -7,55 +7,55 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
Object.defineProperty(exports, "GreatCircleLayer", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function
|
|
10
|
+
get: function () {
|
|
11
11
|
return _greatCircleLayer.default;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "S2Layer", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function
|
|
16
|
+
get: function () {
|
|
17
17
|
return _s2Layer.default;
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "TileLayer", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function
|
|
22
|
+
get: function () {
|
|
23
23
|
return _tileLayer.default;
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
26
|
Object.defineProperty(exports, "TripsLayer", {
|
|
27
27
|
enumerable: true,
|
|
28
|
-
get: function
|
|
28
|
+
get: function () {
|
|
29
29
|
return _tripsLayer.default;
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "H3ClusterLayer", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function
|
|
34
|
+
get: function () {
|
|
35
35
|
return _h3ClusterLayer.default;
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
Object.defineProperty(exports, "H3HexagonLayer", {
|
|
39
39
|
enumerable: true,
|
|
40
|
-
get: function
|
|
40
|
+
get: function () {
|
|
41
41
|
return _h3HexagonLayer.default;
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "Tile3DLayer", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function
|
|
46
|
+
get: function () {
|
|
47
47
|
return _tile3dLayer.default;
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
Object.defineProperty(exports, "TerrainLayer", {
|
|
51
51
|
enumerable: true,
|
|
52
|
-
get: function
|
|
52
|
+
get: function () {
|
|
53
53
|
return _terrainLayer.default;
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
56
|
Object.defineProperty(exports, "MVTLayer", {
|
|
57
57
|
enumerable: true,
|
|
58
|
-
get: function
|
|
58
|
+
get: function () {
|
|
59
59
|
return _mvtLayer.default;
|
|
60
60
|
}
|
|
61
61
|
});
|
|
@@ -7,20 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
24
10
|
var _experimental = require("@luma.gl/experimental");
|
|
25
11
|
|
|
26
12
|
var _core = require("@luma.gl/core");
|
|
@@ -31,16 +17,8 @@ var _meshLayerVertex = _interopRequireDefault(require("./mesh-layer-vertex.glsl"
|
|
|
31
17
|
|
|
32
18
|
var _meshLayerFragment = _interopRequireDefault(require("./mesh-layer-fragment.glsl"));
|
|
33
19
|
|
|
34
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
35
|
-
|
|
36
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
37
|
-
|
|
38
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
39
|
-
|
|
40
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
|
41
|
-
|
|
42
20
|
function validateGeometryAttributes(attributes) {
|
|
43
|
-
|
|
21
|
+
const hasColorAttribute = attributes.COLOR_0 || attributes.colors;
|
|
44
22
|
|
|
45
23
|
if (!hasColorAttribute) {
|
|
46
24
|
attributes.colors = {
|
|
@@ -57,7 +35,7 @@ function validateGeometryAttributes(attributes) {
|
|
|
57
35
|
}
|
|
58
36
|
}
|
|
59
37
|
|
|
60
|
-
|
|
38
|
+
const defaultProps = {
|
|
61
39
|
pbrMaterial: {
|
|
62
40
|
type: 'object',
|
|
63
41
|
value: null
|
|
@@ -69,142 +47,138 @@ var defaultProps = {
|
|
|
69
47
|
}
|
|
70
48
|
};
|
|
71
49
|
|
|
72
|
-
|
|
73
|
-
(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
50
|
+
class _MeshLayer extends _meshLayers.SimpleMeshLayer {
|
|
51
|
+
getShaders() {
|
|
52
|
+
const shaders = super.getShaders();
|
|
53
|
+
const modules = shaders.modules;
|
|
54
|
+
modules.push(_core.pbr);
|
|
55
|
+
return { ...shaders,
|
|
56
|
+
vs: _meshLayerVertex.default,
|
|
57
|
+
fs: _meshLayerFragment.default
|
|
58
|
+
};
|
|
80
59
|
}
|
|
81
60
|
|
|
82
|
-
(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
61
|
+
initializeState() {
|
|
62
|
+
const {
|
|
63
|
+
featureIds
|
|
64
|
+
} = this.props;
|
|
65
|
+
super.initializeState();
|
|
66
|
+
|
|
67
|
+
if (featureIds) {
|
|
68
|
+
this.state.attributeManager.add({
|
|
69
|
+
featureIdsPickingColors: {
|
|
70
|
+
type: 5121,
|
|
71
|
+
size: 3,
|
|
72
|
+
noAlloc: true,
|
|
73
|
+
update: this.calculateFeatureIdsPickingColors
|
|
74
|
+
}
|
|
91
75
|
});
|
|
92
76
|
}
|
|
93
|
-
}
|
|
94
|
-
key: "initializeState",
|
|
95
|
-
value: function initializeState() {
|
|
96
|
-
var featureIds = this.props.featureIds;
|
|
97
|
-
(0, _get2.default)((0, _getPrototypeOf2.default)(_MeshLayer.prototype), "initializeState", this).call(this);
|
|
98
|
-
|
|
99
|
-
if (featureIds) {
|
|
100
|
-
this.state.attributeManager.add({
|
|
101
|
-
featureIdsPickingColors: {
|
|
102
|
-
type: 5121,
|
|
103
|
-
size: 3,
|
|
104
|
-
noAlloc: true,
|
|
105
|
-
update: this.calculateFeatureIdsPickingColors
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}, {
|
|
111
|
-
key: "updateState",
|
|
112
|
-
value: function updateState(_ref) {
|
|
113
|
-
var props = _ref.props,
|
|
114
|
-
oldProps = _ref.oldProps,
|
|
115
|
-
changeFlags = _ref.changeFlags;
|
|
116
|
-
(0, _get2.default)((0, _getPrototypeOf2.default)(_MeshLayer.prototype), "updateState", this).call(this, {
|
|
117
|
-
props: props,
|
|
118
|
-
oldProps: oldProps,
|
|
119
|
-
changeFlags: changeFlags
|
|
120
|
-
});
|
|
77
|
+
}
|
|
121
78
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
this.state.model.setUniforms({
|
|
136
|
-
u_Camera: this.state.model.getUniforms().project_uCameraPosition,
|
|
137
|
-
u_pickFeatureIds: Boolean(featureIds)
|
|
138
|
-
});
|
|
139
|
-
(0, _get2.default)((0, _getPrototypeOf2.default)(_MeshLayer.prototype), "draw", this).call(this, opts);
|
|
79
|
+
updateState({
|
|
80
|
+
props,
|
|
81
|
+
oldProps,
|
|
82
|
+
changeFlags
|
|
83
|
+
}) {
|
|
84
|
+
super.updateState({
|
|
85
|
+
props,
|
|
86
|
+
oldProps,
|
|
87
|
+
changeFlags
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
if (props.pbrMaterial !== oldProps.pbrMaterial) {
|
|
91
|
+
this.updatePbrMaterialUniforms(props.pbrMaterial);
|
|
140
92
|
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
var model = new _core.Model(this.context.gl, _objectSpread(_objectSpread({}, this.getShaders()), {}, {
|
|
151
|
-
id: id,
|
|
152
|
-
geometry: mesh,
|
|
153
|
-
defines: _objectSpread(_objectSpread({}, shaders.defines), materialParser === null || materialParser === void 0 ? void 0 : materialParser.defines),
|
|
154
|
-
parameters: materialParser === null || materialParser === void 0 ? void 0 : materialParser.parameters,
|
|
155
|
-
isInstanced: true
|
|
156
|
-
}));
|
|
157
|
-
return model;
|
|
158
|
-
}
|
|
159
|
-
}, {
|
|
160
|
-
key: "updatePbrMaterialUniforms",
|
|
161
|
-
value: function updatePbrMaterialUniforms(pbrMaterial) {
|
|
162
|
-
var model = this.state.model;
|
|
163
|
-
|
|
164
|
-
if (model) {
|
|
165
|
-
var mesh = this.props.mesh;
|
|
166
|
-
var materialParser = this.parseMaterial(pbrMaterial, mesh);
|
|
167
|
-
model.setUniforms(materialParser.uniforms);
|
|
168
|
-
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
draw(opts) {
|
|
96
|
+
const {
|
|
97
|
+
featureIds
|
|
98
|
+
} = this.props;
|
|
99
|
+
|
|
100
|
+
if (!this.state.model) {
|
|
101
|
+
return;
|
|
169
102
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
103
|
+
|
|
104
|
+
this.state.model.setUniforms({
|
|
105
|
+
u_Camera: this.state.model.getUniforms().project_uCameraPosition,
|
|
106
|
+
u_pickFeatureIds: Boolean(featureIds)
|
|
107
|
+
});
|
|
108
|
+
super.draw(opts);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
getModel(mesh) {
|
|
112
|
+
const {
|
|
113
|
+
id,
|
|
114
|
+
pbrMaterial
|
|
115
|
+
} = this.props;
|
|
116
|
+
const materialParser = this.parseMaterial(pbrMaterial, mesh);
|
|
117
|
+
const shaders = this.getShaders();
|
|
118
|
+
validateGeometryAttributes(mesh.attributes);
|
|
119
|
+
const model = new _core.Model(this.context.gl, { ...this.getShaders(),
|
|
120
|
+
id,
|
|
121
|
+
geometry: mesh,
|
|
122
|
+
defines: { ...shaders.defines,
|
|
123
|
+
...(materialParser === null || materialParser === void 0 ? void 0 : materialParser.defines)
|
|
124
|
+
},
|
|
125
|
+
parameters: materialParser === null || materialParser === void 0 ? void 0 : materialParser.parameters,
|
|
126
|
+
isInstanced: true
|
|
127
|
+
});
|
|
128
|
+
return model;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
updatePbrMaterialUniforms(pbrMaterial) {
|
|
132
|
+
const {
|
|
133
|
+
model
|
|
134
|
+
} = this.state;
|
|
135
|
+
|
|
136
|
+
if (model) {
|
|
137
|
+
const {
|
|
138
|
+
mesh
|
|
139
|
+
} = this.props;
|
|
140
|
+
const materialParser = this.parseMaterial(pbrMaterial, mesh);
|
|
141
|
+
model.setUniforms(materialParser.uniforms);
|
|
188
142
|
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
parseMaterial(pbrMaterial, mesh) {
|
|
146
|
+
const unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
|
|
147
|
+
const materialParser = new _experimental.GLTFMaterialParser(this.context.gl, {
|
|
148
|
+
attributes: {
|
|
149
|
+
NORMAL: mesh.attributes.normals,
|
|
150
|
+
TEXCOORD_0: mesh.attributes.texCoords
|
|
151
|
+
},
|
|
152
|
+
material: {
|
|
153
|
+
unlit,
|
|
154
|
+
...pbrMaterial
|
|
155
|
+
},
|
|
156
|
+
pbrDebug: false,
|
|
157
|
+
imageBasedLightingEnvironment: null,
|
|
158
|
+
lights: true,
|
|
159
|
+
useTangents: false
|
|
160
|
+
});
|
|
161
|
+
return materialParser;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
calculateFeatureIdsPickingColors(attribute) {
|
|
165
|
+
const {
|
|
166
|
+
featureIds
|
|
167
|
+
} = this.props;
|
|
168
|
+
const value = new Uint8ClampedArray(featureIds.length * attribute.size);
|
|
169
|
+
const pickingColor = [];
|
|
170
|
+
|
|
171
|
+
for (let index = 0; index < featureIds.length; index++) {
|
|
172
|
+
this.encodePickingColor(featureIds[index], pickingColor);
|
|
173
|
+
value[index * 3] = pickingColor[0];
|
|
174
|
+
value[index * 3 + 1] = pickingColor[1];
|
|
175
|
+
value[index * 3 + 2] = pickingColor[2];
|
|
204
176
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
}
|
|
177
|
+
|
|
178
|
+
attribute.value = value;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
}
|
|
208
182
|
|
|
209
183
|
exports.default = _MeshLayer;
|
|
210
184
|
_MeshLayer.layerName = '_MeshLayer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mesh-layer/mesh-layer.js"],"names":["validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","uvRegions","defaultProps","pbrMaterial","type","featureIds","optional","_MeshLayer","shaders","modules","push","pbr","vs","fs","props","state","attributeManager","add","featureIdsPickingColors","size","noAlloc","update","calculateFeatureIdsPickingColors","oldProps","changeFlags","updatePbrMaterialUniforms","opts","model","setUniforms","u_Camera","getUniforms","project_uCameraPosition","u_pickFeatureIds","Boolean","mesh","id","materialParser","parseMaterial","
|
|
1
|
+
{"version":3,"sources":["../../../src/mesh-layer/mesh-layer.js"],"names":["validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","uvRegions","defaultProps","pbrMaterial","type","featureIds","optional","_MeshLayer","SimpleMeshLayer","getShaders","shaders","modules","push","pbr","vs","fs","initializeState","props","state","attributeManager","add","featureIdsPickingColors","size","noAlloc","update","calculateFeatureIdsPickingColors","updateState","oldProps","changeFlags","updatePbrMaterialUniforms","draw","opts","model","setUniforms","u_Camera","getUniforms","project_uCameraPosition","u_pickFeatureIds","Boolean","getModel","mesh","id","materialParser","parseMaterial","Model","context","gl","geometry","defines","parameters","isInstanced","uniforms","unlit","pbrMetallicRoughness","baseColorTexture","GLTFMaterialParser","NORMAL","normals","TEXCOORD_0","texCoords","material","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","attribute","Uint8ClampedArray","length","pickingColor","index","encodePickingColor","layerName"],"mappings":"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","sourcesContent":["import {GLTFMaterialParser} from '@luma.gl/experimental';\nimport {Model, pbr} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nfunction validateGeometryAttributes(attributes) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};\n }\n if (!attributes.uvRegions) {\n attributes.uvRegions = {constant: true, value: new Float32Array([0, 0, 1, 1])};\n }\n}\n\nconst defaultProps = {\n // PBR material object. _lighting must be pbr for this to work\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\nexport default class _MeshLayer extends SimpleMeshLayer {\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n if (featureIds) {\n this.state.attributeManager.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState({props, oldProps, changeFlags}) {\n super.updateState({props, oldProps, changeFlags});\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n u_Camera: this.state.model.getUniforms().project_uCameraPosition,\n u_pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n getModel(mesh) {\n const {id, pbrMaterial} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.gl, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n defines: {...shaders.defines, ...materialParser?.defines},\n parameters: materialParser?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n model.setUniforms(materialParser.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh) {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n const materialParser = new GLTFMaterialParser(this.context.gl, {\n attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n material: {unlit, ...pbrMaterial},\n pbrDebug: false,\n imageBasedLightingEnvironment: null,\n lights: true,\n useTangents: false\n });\n return materialParser;\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n const {featureIds} = this.props;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n}\n\n_MeshLayer.layerName = '_MeshLayer';\n_MeshLayer.defaultProps = defaultProps;\n"],"file":"mesh-layer.js"}
|
|
@@ -1,49 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.transform = transform;
|
|
9
7
|
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
-
|
|
14
8
|
var _math = require("math.gl");
|
|
15
9
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
LineString: LineString,
|
|
24
|
-
MultiLineString: MultiLineString,
|
|
25
|
-
Polygon: Polygon,
|
|
26
|
-
MultiPolygon: MultiPolygon
|
|
10
|
+
const availableTransformations = {
|
|
11
|
+
Point,
|
|
12
|
+
MultiPoint,
|
|
13
|
+
LineString,
|
|
14
|
+
MultiLineString,
|
|
15
|
+
Polygon,
|
|
16
|
+
MultiPolygon
|
|
27
17
|
};
|
|
28
18
|
|
|
29
|
-
function Point(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
pointY = _ref3[1];
|
|
33
|
-
|
|
34
|
-
var _ref4 = (0, _slicedToArray2.default)(_ref2, 2),
|
|
35
|
-
nw = _ref4[0],
|
|
36
|
-
se = _ref4[1];
|
|
37
|
-
|
|
38
|
-
var x = (0, _math.lerp)(nw[0], se[0], pointX);
|
|
39
|
-
var y = (0, _math.lerp)(nw[1], se[1], pointY);
|
|
19
|
+
function Point([pointX, pointY], [nw, se], viewport) {
|
|
20
|
+
const x = (0, _math.lerp)(nw[0], se[0], pointX);
|
|
21
|
+
const y = (0, _math.lerp)(nw[1], se[1], pointY);
|
|
40
22
|
return viewport.unprojectFlat([x, y]);
|
|
41
23
|
}
|
|
42
24
|
|
|
43
25
|
function getPoints(geometry, bbox, viewport) {
|
|
44
|
-
return geometry.map(
|
|
45
|
-
return Point(g, bbox, viewport);
|
|
46
|
-
});
|
|
26
|
+
return geometry.map(g => Point(g, bbox, viewport));
|
|
47
27
|
}
|
|
48
28
|
|
|
49
29
|
function MultiPoint(multiPoint, bbox, viewport) {
|
|
@@ -55,29 +35,23 @@ function LineString(line, bbox, viewport) {
|
|
|
55
35
|
}
|
|
56
36
|
|
|
57
37
|
function MultiLineString(multiLineString, bbox, viewport) {
|
|
58
|
-
return multiLineString.map(
|
|
59
|
-
return LineString(lineString, bbox, viewport);
|
|
60
|
-
});
|
|
38
|
+
return multiLineString.map(lineString => LineString(lineString, bbox, viewport));
|
|
61
39
|
}
|
|
62
40
|
|
|
63
41
|
function Polygon(polygon, bbox, viewport) {
|
|
64
|
-
return polygon.map(
|
|
65
|
-
return getPoints(polygonRing, bbox, viewport);
|
|
66
|
-
});
|
|
42
|
+
return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));
|
|
67
43
|
}
|
|
68
44
|
|
|
69
45
|
function MultiPolygon(multiPolygon, bbox, viewport) {
|
|
70
|
-
return multiPolygon.map(
|
|
71
|
-
return Polygon(polygon, bbox, viewport);
|
|
72
|
-
});
|
|
46
|
+
return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));
|
|
73
47
|
}
|
|
74
48
|
|
|
75
49
|
function transform(geometry, bbox, viewport) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return
|
|
50
|
+
const nw = viewport.projectFlat([bbox.west, bbox.north]);
|
|
51
|
+
const se = viewport.projectFlat([bbox.east, bbox.south]);
|
|
52
|
+
const projectedBbox = [nw, se];
|
|
53
|
+
return { ...geometry,
|
|
80
54
|
coordinates: availableTransformations[geometry.type](geometry.coordinates, projectedBbox, viewport)
|
|
81
|
-
}
|
|
55
|
+
};
|
|
82
56
|
}
|
|
83
57
|
//# sourceMappingURL=coordinate-transform.js.map
|