@deck.gl/geo-layers 8.6.1 → 8.6.5
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 +1469 -1449
- package/dist/es5/mvt-layer/mvt-layer.js +23 -0
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +5 -9
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +11 -12
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +26 -0
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +8 -10
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +6 -8
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/mvt-layer/mvt-layer.js +16 -0
- package/src/terrain-layer/terrain-layer.js +10 -9
- package/src/tile-layer/tile-layer.js +9 -6
|
@@ -113,6 +113,14 @@ var MVTLayer = function (_TileLayer) {
|
|
|
113
113
|
|
|
114
114
|
this._setWGS84PropertyForTiles();
|
|
115
115
|
}
|
|
116
|
+
|
|
117
|
+
var highlightColor = props.highlightColor;
|
|
118
|
+
|
|
119
|
+
if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {
|
|
120
|
+
this.setState({
|
|
121
|
+
highlightColor: highlightColor
|
|
122
|
+
});
|
|
123
|
+
}
|
|
116
124
|
}
|
|
117
125
|
}, {
|
|
118
126
|
key: "_updateTileData",
|
|
@@ -300,8 +308,15 @@ var MVTLayer = function (_TileLayer) {
|
|
|
300
308
|
newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);
|
|
301
309
|
}
|
|
302
310
|
|
|
311
|
+
var highlightColor = this.props.highlightColor;
|
|
312
|
+
|
|
313
|
+
if (typeof highlightColor === 'function') {
|
|
314
|
+
highlightColor = highlightColor(info);
|
|
315
|
+
}
|
|
316
|
+
|
|
303
317
|
if (hoveredFeatureId !== newHoveredFeatureId || hoveredFeatureLayerName !== newHoveredFeatureLayerName) {
|
|
304
318
|
this.setState({
|
|
319
|
+
highlightColor: highlightColor,
|
|
305
320
|
hoveredFeatureId: newHoveredFeatureId,
|
|
306
321
|
hoveredFeatureLayerName: newHoveredFeatureLayerName
|
|
307
322
|
});
|
|
@@ -326,6 +341,14 @@ var MVTLayer = function (_TileLayer) {
|
|
|
326
341
|
|
|
327
342
|
return info;
|
|
328
343
|
}
|
|
344
|
+
}, {
|
|
345
|
+
key: "getSubLayerPropsByTile",
|
|
346
|
+
value: function getSubLayerPropsByTile(tile) {
|
|
347
|
+
return {
|
|
348
|
+
highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
|
|
349
|
+
highlightColor: this.state.highlightColor
|
|
350
|
+
};
|
|
351
|
+
}
|
|
329
352
|
}, {
|
|
330
353
|
key: "getHighlightedObjectIndex",
|
|
331
354
|
value: function getHighlightedObjectIndex(tile) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","setState","data","tileJSON","props","oldProps","context","changeFlags","dataChanged","_updateTileData","state","_setWGS84PropertyForTiles","onDataLoad","fetch","propName","layer","raiseError","tilejson","tiles","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","GeoJsonLayer","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","Array","isArray","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","tileset","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from 'math.gl';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","setState","data","tileJSON","props","oldProps","context","changeFlags","dataChanged","_updateTileData","state","_setWGS84PropertyForTiles","highlightColor","Array","isArray","onDataLoad","fetch","propName","layer","raiseError","tilejson","tiles","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","GeoJsonLayer","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","tileset","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from 'math.gl';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
@@ -168,18 +168,13 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
168
168
|
texture = _this$props.texture,
|
|
169
169
|
elevationDecoder = _this$props.elevationDecoder,
|
|
170
170
|
meshMaxError = _this$props.meshMaxError;
|
|
171
|
+
var viewport = this.context.viewport;
|
|
171
172
|
var dataUrl = (0, _utils.getURLFromTemplate)(elevationData, tile);
|
|
172
173
|
var textureUrl = (0, _utils.getURLFromTemplate)(texture, tile);
|
|
173
174
|
var bbox = tile.bbox,
|
|
174
|
-
signal = tile.signal
|
|
175
|
-
|
|
176
|
-
var
|
|
177
|
-
longitude: (bbox.west + bbox.east) / 2,
|
|
178
|
-
latitude: (bbox.north + bbox.south) / 2,
|
|
179
|
-
zoom: z
|
|
180
|
-
});
|
|
181
|
-
var bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);
|
|
182
|
-
var topRight = viewport.projectFlat([bbox.east, bbox.north]);
|
|
175
|
+
signal = tile.signal;
|
|
176
|
+
var bottomLeft = viewport.isGeospatial ? viewport.projectFlat([bbox.west, bbox.south]) : [bbox.left, bbox.bottom];
|
|
177
|
+
var topRight = viewport.isGeospatial ? viewport.projectFlat([bbox.east, bbox.north]) : [bbox.right, bbox.top];
|
|
183
178
|
var bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];
|
|
184
179
|
var terrain = this.loadTerrain({
|
|
185
180
|
elevationData: dataUrl,
|
|
@@ -217,6 +212,7 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
217
212
|
data: DUMMY_DATA,
|
|
218
213
|
mesh: mesh,
|
|
219
214
|
texture: texture,
|
|
215
|
+
_instanced: false,
|
|
220
216
|
coordinateSystem: _core.COORDINATE_SYSTEM.CARTESIAN,
|
|
221
217
|
getPosition: function getPosition(d) {
|
|
222
218
|
return [0, 0, 0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.js"],"names":["DUMMY_DATA","defaultProps","TileLayer","elevationData","urlType","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","TerrainWorkerLoader","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","state","terrain","loadTerrain","log","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","tile","dataUrl","textureUrl","bbox","z","viewport","WebMercatorViewport","longitude","west","east","latitude","north","south","zoom","bottomLeft","projectFlat","topRight","surface","catch","_","Promise","resolve","all","SubLayerClass","getSubLayerClass","SimpleMeshLayer","data","mesh","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","getPosition","d","getColor","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","getTiledTerrainData","bind","renderSubLayers","updateTriggers","onViewportLoad","_instanced","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, log} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {WebMercatorViewport, COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer from '../tile-layer/tile-layer';\nimport {urlType, getURLFromTemplate} from '../tile-layer/utils';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: {type: 'string', value: null},\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template) {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template;\n}\n\n/**\n * state: {\n * isTiled: True renders TileLayer of many SimpleMeshLayers, false renders one SimpleMeshLayer\n * terrain: Mesh object. Only defined when isTiled is false.\n * }\n */\nexport default class TerrainLayer extends CompositeLayer {\n updateState({props, oldProps}) {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n const terrain = this.loadTerrain(props);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({elevationData, bounds, elevationDecoder, meshMaxError, signal}) {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile) {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = getURLFromTemplate(texture, tile);\n\n const {bbox, signal, z} = tile;\n const viewport = new WebMercatorViewport({\n longitude: (bbox.west + bbox.east) / 2,\n latitude: (bbox.north + bbox.south) / 2,\n zoom: z\n });\n const bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);\n const topRight = viewport.projectFlat([bbox.east, bbox.north]);\n const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(props) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n const {data, color} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles) {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers() {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n wireframe,\n color,\n material,\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n\nTerrainLayer.layerName = 'TerrainLayer';\nTerrainLayer.defaultProps = defaultProps;\n"],"file":"terrain-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.js"],"names":["DUMMY_DATA","defaultProps","TileLayer","elevationData","urlType","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","TerrainWorkerLoader","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","state","terrain","loadTerrain","log","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","tile","viewport","context","dataUrl","textureUrl","bbox","bottomLeft","isGeospatial","projectFlat","west","south","left","bottom","topRight","east","north","right","top","surface","catch","_","Promise","resolve","all","SubLayerClass","getSubLayerClass","SimpleMeshLayer","data","mesh","_instanced","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","getPosition","d","getColor","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","getTiledTerrainData","bind","renderSubLayers","updateTriggers","onViewportLoad","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, log} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer from '../tile-layer/tile-layer';\nimport {urlType, getURLFromTemplate} from '../tile-layer/utils';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: {type: 'string', value: null},\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template) {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template;\n}\n\n/**\n * state: {\n * isTiled: True renders TileLayer of many SimpleMeshLayers, false renders one SimpleMeshLayer\n * terrain: Mesh object. Only defined when isTiled is false.\n * }\n */\nexport default class TerrainLayer extends CompositeLayer {\n updateState({props, oldProps}) {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n const terrain = this.loadTerrain(props);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({elevationData, bounds, elevationDecoder, meshMaxError, signal}) {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile) {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const {viewport} = this.context;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = getURLFromTemplate(texture, tile);\n\n const {bbox, signal} = tile;\n const bottomLeft = viewport.isGeospatial\n ? viewport.projectFlat([bbox.west, bbox.south])\n : [bbox.left, bbox.bottom];\n const topRight = viewport.isGeospatial\n ? viewport.projectFlat([bbox.east, bbox.north])\n : [bbox.right, bbox.top];\n const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(props) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n const {data, color} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n _instanced: false,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles) {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers() {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n wireframe,\n color,\n material,\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n\nTerrainLayer.layerName = 'TerrainLayer';\nTerrainLayer.defaultProps = defaultProps;\n"],"file":"terrain-layer.js"}
|
|
@@ -272,9 +272,9 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
272
272
|
return this.props.renderSubLayers(props);
|
|
273
273
|
}
|
|
274
274
|
}, {
|
|
275
|
-
key: "
|
|
276
|
-
value: function
|
|
277
|
-
return
|
|
275
|
+
key: "getSubLayerPropsByTile",
|
|
276
|
+
value: function getSubLayerPropsByTile(tile) {
|
|
277
|
+
return null;
|
|
278
278
|
}
|
|
279
279
|
}, {
|
|
280
280
|
key: "getPickingInfo",
|
|
@@ -297,7 +297,7 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
297
297
|
var _this = this;
|
|
298
298
|
|
|
299
299
|
return this.state.tileset.tiles.map(function (tile) {
|
|
300
|
-
var
|
|
300
|
+
var subLayerProps = _this.getSubLayerPropsByTile(tile);
|
|
301
301
|
|
|
302
302
|
if (!tile.isLoaded && !tile.content) {} else if (!tile.layers) {
|
|
303
303
|
var layers = _this.renderSubLayers(_objectSpread(_objectSpread({}, _this.props), {}, {
|
|
@@ -308,16 +308,15 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
308
308
|
}));
|
|
309
309
|
|
|
310
310
|
tile.layers = (0, _core._flatten)(layers, Boolean).map(function (layer) {
|
|
311
|
-
return layer.clone({
|
|
312
|
-
tile: tile
|
|
313
|
-
|
|
314
|
-
});
|
|
311
|
+
return layer.clone(_objectSpread({
|
|
312
|
+
tile: tile
|
|
313
|
+
}, subLayerProps));
|
|
315
314
|
});
|
|
316
|
-
} else if (tile.layers[0] &&
|
|
315
|
+
} else if (subLayerProps && tile.layers[0] && Object.keys(subLayerProps).some(function (propName) {
|
|
316
|
+
return tile.layers[0].props[propName] !== subLayerProps[propName];
|
|
317
|
+
})) {
|
|
317
318
|
tile.layers = tile.layers.map(function (layer) {
|
|
318
|
-
return layer.clone(
|
|
319
|
-
highlightedObjectIndex: highlightedObjectIndex
|
|
320
|
-
});
|
|
319
|
+
return layer.clone(subLayerProps);
|
|
321
320
|
});
|
|
322
321
|
}
|
|
323
322
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/tile-layer.js"],"names":["defaultProps","data","dataComparator","urlType","equals","renderSubLayers","type","value","props","GeoJsonLayer","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","state","tileset","isLoaded","finalize","changeFlags","somethingChanged","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","Tileset2D","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","layers","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","selectedTiles","isVisible","setNeedsUpdate","fetch","signal","url","propName","layer","info","sourceLayer","updateAutoHighlight","map","highlightedObjectIndex","getHighlightedObjectIndex","content","id","x","y","z","_offset","Boolean","clone","every","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {CompositeLayer, _flatten as flatten} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nimport Tileset2D, {STRATEGY_DEFAULT} from './tileset-2d';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\nexport default class TileLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state.tileset?.finalize();\n }\n\n get isLoaded() {\n const {tileset} = this.state;\n return tileset.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new Tileset2D(this._getTilesetOptions(props));\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions(props));\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(props) {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset() {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad() {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile) {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileError(error, tile) {\n this.props.onTileError(error);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileUnload(tile) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url = getURLFromTemplate(data, tile);\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(props) {\n return this.props.renderSubLayers(props);\n }\n\n getHighlightedObjectIndex() {\n return -1;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers() {\n return this.state.tileset.tiles.map(tile => {\n const highlightedObjectIndex = this.getHighlightedObjectIndex(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.x}-${tile.y}-${tile.z}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = flatten(layers, Boolean).map(layer =>\n layer.clone({\n tile,\n highlightedObjectIndex\n })\n );\n } else if (\n tile.layers[0] &&\n tile.layers[0].props.highlightedObjectIndex !== highlightedObjectIndex\n ) {\n tile.layers = tile.layers.map(layer => layer.clone({highlightedObjectIndex}));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n\nTileLayer.layerName = 'TileLayer';\nTileLayer.defaultProps = defaultProps;\n"],"file":"tile-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/tile-layer.js"],"names":["defaultProps","data","dataComparator","urlType","equals","renderSubLayers","type","value","props","GeoJsonLayer","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","state","tileset","isLoaded","finalize","changeFlags","somethingChanged","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","Tileset2D","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","layers","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","selectedTiles","isVisible","setNeedsUpdate","fetch","signal","url","propName","layer","info","sourceLayer","updateAutoHighlight","map","subLayerProps","getSubLayerPropsByTile","content","id","x","y","z","_offset","Boolean","clone","Object","keys","some","every","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {CompositeLayer, _flatten as flatten} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nimport Tileset2D, {STRATEGY_DEFAULT} from './tileset-2d';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\nexport default class TileLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state.tileset?.finalize();\n }\n\n get isLoaded() {\n const {tileset} = this.state;\n return tileset.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new Tileset2D(this._getTilesetOptions(props));\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions(props));\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(props) {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset() {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad() {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile) {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileError(error, tile) {\n this.props.onTileError(error);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileUnload(tile) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url = getURLFromTemplate(data, tile);\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(props) {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile) {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers() {\n return this.state.tileset.tiles.map(tile => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.x}-${tile.y}-${tile.z}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = flatten(layers, Boolean).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers[0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n\nTileLayer.layerName = 'TileLayer';\nTileLayer.defaultProps = defaultProps;\n"],"file":"tile-layer.js"}
|
|
@@ -52,6 +52,16 @@ export default class MVTLayer extends TileLayer {
|
|
|
52
52
|
|
|
53
53
|
this._setWGS84PropertyForTiles();
|
|
54
54
|
}
|
|
55
|
+
|
|
56
|
+
const {
|
|
57
|
+
highlightColor
|
|
58
|
+
} = props;
|
|
59
|
+
|
|
60
|
+
if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {
|
|
61
|
+
this.setState({
|
|
62
|
+
highlightColor
|
|
63
|
+
});
|
|
64
|
+
}
|
|
55
65
|
}
|
|
56
66
|
|
|
57
67
|
async _updateTileData() {
|
|
@@ -210,8 +220,17 @@ export default class MVTLayer extends TileLayer {
|
|
|
210
220
|
newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);
|
|
211
221
|
}
|
|
212
222
|
|
|
223
|
+
let {
|
|
224
|
+
highlightColor
|
|
225
|
+
} = this.props;
|
|
226
|
+
|
|
227
|
+
if (typeof highlightColor === 'function') {
|
|
228
|
+
highlightColor = highlightColor(info);
|
|
229
|
+
}
|
|
230
|
+
|
|
213
231
|
if (hoveredFeatureId !== newHoveredFeatureId || hoveredFeatureLayerName !== newHoveredFeatureLayerName) {
|
|
214
232
|
this.setState({
|
|
233
|
+
highlightColor,
|
|
215
234
|
hoveredFeatureId: newHoveredFeatureId,
|
|
216
235
|
hoveredFeatureLayerName: newHoveredFeatureLayerName
|
|
217
236
|
});
|
|
@@ -238,6 +257,13 @@ export default class MVTLayer extends TileLayer {
|
|
|
238
257
|
return info;
|
|
239
258
|
}
|
|
240
259
|
|
|
260
|
+
getSubLayerPropsByTile(tile) {
|
|
261
|
+
return {
|
|
262
|
+
highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
|
|
263
|
+
highlightColor: this.state.highlightColor
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
241
267
|
getHighlightedObjectIndex(tile) {
|
|
242
268
|
const {
|
|
243
269
|
hoveredFeatureId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","setState","data","tileJSON","isLoaded","state","tileset","updateState","props","oldProps","context","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","renderSubLayers","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","Array","isArray","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from 'math.gl';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","setState","data","tileJSON","isLoaded","state","tileset","updateState","props","oldProps","context","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","renderSubLayers","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"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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 const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CompositeLayer, log } from '@deck.gl/core';
|
|
2
2
|
import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
|
|
3
|
-
import {
|
|
3
|
+
import { COORDINATE_SYSTEM } from '@deck.gl/core';
|
|
4
4
|
import { TerrainWorkerLoader } from '@loaders.gl/terrain';
|
|
5
5
|
import TileLayer from '../tile-layer/tile-layer';
|
|
6
6
|
import { urlType, getURLFromTemplate } from '../tile-layer/utils';
|
|
@@ -123,20 +123,17 @@ export default class TerrainLayer extends CompositeLayer {
|
|
|
123
123
|
elevationDecoder,
|
|
124
124
|
meshMaxError
|
|
125
125
|
} = this.props;
|
|
126
|
+
const {
|
|
127
|
+
viewport
|
|
128
|
+
} = this.context;
|
|
126
129
|
const dataUrl = getURLFromTemplate(elevationData, tile);
|
|
127
130
|
const textureUrl = getURLFromTemplate(texture, tile);
|
|
128
131
|
const {
|
|
129
132
|
bbox,
|
|
130
|
-
signal
|
|
131
|
-
z
|
|
133
|
+
signal
|
|
132
134
|
} = tile;
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
latitude: (bbox.north + bbox.south) / 2,
|
|
136
|
-
zoom: z
|
|
137
|
-
});
|
|
138
|
-
const bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);
|
|
139
|
-
const topRight = viewport.projectFlat([bbox.east, bbox.north]);
|
|
135
|
+
const bottomLeft = viewport.isGeospatial ? viewport.projectFlat([bbox.west, bbox.south]) : [bbox.left, bbox.bottom];
|
|
136
|
+
const topRight = viewport.isGeospatial ? viewport.projectFlat([bbox.east, bbox.north]) : [bbox.right, bbox.top];
|
|
140
137
|
const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];
|
|
141
138
|
const terrain = this.loadTerrain({
|
|
142
139
|
elevationData: dataUrl,
|
|
@@ -170,6 +167,7 @@ export default class TerrainLayer extends CompositeLayer {
|
|
|
170
167
|
data: DUMMY_DATA,
|
|
171
168
|
mesh,
|
|
172
169
|
texture,
|
|
170
|
+
_instanced: false,
|
|
173
171
|
coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
|
|
174
172
|
getPosition: d => [0, 0, 0],
|
|
175
173
|
getColor: color
|