@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.
@@ -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
- z = tile.z;
176
- var viewport = new _core.WebMercatorViewport({
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: "getHighlightedObjectIndex",
276
- value: function getHighlightedObjectIndex() {
277
- return -1;
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 highlightedObjectIndex = _this.getHighlightedObjectIndex(tile);
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
- highlightedObjectIndex: highlightedObjectIndex
314
- });
311
+ return layer.clone(_objectSpread({
312
+ tile: tile
313
+ }, subLayerProps));
315
314
  });
316
- } else if (tile.layers[0] && tile.layers[0].props.highlightedObjectIndex !== highlightedObjectIndex) {
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 { WebMercatorViewport, COORDINATE_SYSTEM } from '@deck.gl/core';
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 viewport = new WebMercatorViewport({
134
- longitude: (bbox.west + bbox.east) / 2,
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