@antv/l7-layers 2.8.20 → 2.8.23
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/es/core/BaseLayer.js +10 -1
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/BaseModel.js +1 -2
- package/es/core/BaseModel.js.map +1 -1
- package/es/point/models/fill.js +1 -1
- package/es/point/models/fillmage.js +20 -2
- package/es/point/models/fillmage.js.map +1 -1
- package/es/utils/dataMappingStyle.js +6 -7
- package/es/utils/dataMappingStyle.js.map +1 -1
- package/es/utils/updateShape.js +6 -0
- package/es/utils/updateShape.js.map +1 -1
- package/lib/core/BaseLayer.js +11 -1
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/BaseModel.js +1 -3
- package/lib/core/BaseModel.js.map +1 -1
- package/lib/point/models/fill.js +1 -1
- package/lib/point/models/fillmage.js +20 -2
- package/lib/point/models/fillmage.js.map +1 -1
- package/lib/utils/dataMappingStyle.js +6 -8
- package/lib/utils/dataMappingStyle.js.map +1 -1
- package/lib/utils/updateShape.js +6 -0
- package/lib/utils/updateShape.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/point/models/fillmage.ts"],"names":["AttributeType","gl","getCullFace","getMask","BaseModel","PointFillTriangulation","Version","FillImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","mag","min","mipmap","layer","renderLayers","LINEAR","LINEAR_MIPMAP_LINEAR","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","rotation","getDirty","bind","rotateFlag","mapService","version","radian","Math","PI","getRotation","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_RotateMatrix","Float32Array","cos","sin","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","updateTexture","on","unit","L7MAP","GLOBEL","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","enable","getBlend","stencil","cull","face","pointFillFrag","pointFillVert","off","destroy","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","iconMap","getIconMap","shape","extrude","extrudeIndex","Array","isArray"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttribute,\n IElements,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/image/fillImage_frag.glsl';\nimport pointFillVert from '../shaders/image/fillImage_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class FillImageModel extends BaseModel {\n public meter2coord: number = 1;\n private texture: ITexture2D;\n private isMeter: boolean = false;\n private radian: number = 0; // 旋转的弧度\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n rotation,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian = rotation\n ? (rotateFlag * Math.PI * rotation) / 180\n : (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_isMeter: Number(this.isMeter),\n u_RotateMatrix: new Float32Array([\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n\n public clearModels() {\n this.iconService.off('imageUpdate', this.updateTexture);\n this.texture?.destroy();\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n mag: 'linear',\n min: 'linear mipmap nearest',\n mipmap: true,\n });\n // this.layer.render();\n // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n // min: gl.LINEAR,\n min: gl.LINEAR_MIPMAP_LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n mipmap: true,\n });\n };\n}\n"],"file":"fillmage.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/point/models/fillmage.ts"],"names":["AttributeType","gl","getCullFace","getMask","BaseModel","PointFillTriangulation","Version","FillImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","mag","min","mipmap","layer","renderLayers","LINEAR","LINEAR_MIPMAP_LINEAR","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","rotation","getDirty","bind","rotateFlag","mapService","version","radian","undefined","Math","PI","getRotation","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_RotateMatrix","Float32Array","cos","sin","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","updateTexture","on","unit","L7MAP","GLOBEL","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","enable","getBlend","stencil","cull","face","pointFillFrag","pointFillVert","off","destroy","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","rotate","Array","isArray","iconMap","getIconMap","shape","extrude","extrudeIndex"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttribute,\n IElements,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/image/fillImage_frag.glsl';\nimport pointFillVert from '../shaders/image/fillImage_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class FillImageModel extends BaseModel {\n public meter2coord: number = 1;\n private texture: ITexture2D;\n private isMeter: boolean = false;\n private radian: number = 0; // 旋转的弧度\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n rotation,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian =\n rotation !== undefined\n ? (rotateFlag * Math.PI * rotation) / 180\n : (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_isMeter: Number(this.isMeter),\n u_RotateMatrix: new Float32Array([\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n\n public clearModels() {\n this.iconService.off('imageUpdate', this.updateTexture);\n this.texture?.destroy();\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'rotate',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Rotate',\n buffer: {\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { rotate = 0 } = feature;\n return Array.isArray(rotate) ? [rotate[0]] : [rotate as number];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n mag: 'linear',\n min: 'linear mipmap nearest',\n mipmap: true,\n });\n // this.layer.render();\n // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n // min: gl.LINEAR,\n min: gl.LINEAR_MIPMAP_LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n mipmap: true,\n });\n };\n}\n"],"file":"fillmage.js"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _isString from "lodash/isString";
|
|
2
2
|
import _isNumber from "lodash/isNumber";
|
|
3
3
|
import _isFunction from "lodash/isFunction";
|
|
4
|
-
import _isArray from "lodash/isArray";
|
|
5
4
|
var WIDTH = 1024;
|
|
6
5
|
|
|
7
6
|
function registerStyleAttribute(fieldName, layer, field, values, updateOptions) {
|
|
@@ -45,10 +44,10 @@ function handleStyleFloat(fieldName, layer, styleFloat) {
|
|
|
45
44
|
});
|
|
46
45
|
} else if (_isNumber(styleFloat)) {
|
|
47
46
|
registerStyleAttribute(fieldName, layer, [styleFloat], undefined);
|
|
48
|
-
} else if (
|
|
47
|
+
} else if (Array.isArray(styleFloat) && styleFloat.length === 2) {
|
|
49
48
|
if (_isString(styleFloat[0]) && _isFunction(styleFloat[1])) {
|
|
50
49
|
registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);
|
|
51
|
-
} else if (_isString(styleFloat[0]) &&
|
|
50
|
+
} else if (_isString(styleFloat[0]) && Array.isArray(styleFloat[1]) && _isNumber(styleFloat[1][0]) && _isNumber(styleFloat[1][1])) {
|
|
52
51
|
registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);
|
|
53
52
|
} else {
|
|
54
53
|
registerStyleAttribute(fieldName, layer, [1.0], undefined);
|
|
@@ -63,9 +62,9 @@ function handleStyleOffsets(fieldName, layer, styleOffsets) {
|
|
|
63
62
|
registerStyleAttribute(fieldName, layer, styleOffsets, function (value) {
|
|
64
63
|
return value;
|
|
65
64
|
});
|
|
66
|
-
} else if (
|
|
65
|
+
} else if (Array.isArray(styleOffsets) && styleOffsets.length === 2 && _isString(styleOffsets[0]) && _isFunction(styleOffsets[1])) {
|
|
67
66
|
registerStyleAttribute(fieldName, layer, styleOffsets[0], styleOffsets[1]);
|
|
68
|
-
} else if (
|
|
67
|
+
} else if (Array.isArray(styleOffsets) && styleOffsets.length === 2 && _isNumber(styleOffsets[0]) && _isNumber(styleOffsets[1])) {
|
|
69
68
|
registerStyleAttribute(fieldName, layer, styleOffsets, undefined);
|
|
70
69
|
} else {
|
|
71
70
|
registerStyleAttribute(fieldName, layer, [0, 0], undefined);
|
|
@@ -75,10 +74,10 @@ function handleStyleOffsets(fieldName, layer, styleOffsets) {
|
|
|
75
74
|
function handleStyleColor(fieldName, layer, styleColor) {
|
|
76
75
|
if (_isString(styleColor)) {
|
|
77
76
|
registerStyleAttribute(fieldName, layer, styleColor, undefined);
|
|
78
|
-
} else if (
|
|
77
|
+
} else if (Array.isArray(styleColor) && styleColor.length === 2) {
|
|
79
78
|
if (_isString(styleColor[0]) && _isFunction(styleColor[1])) {
|
|
80
79
|
registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);
|
|
81
|
-
} else if (_isString(styleColor[0]) &&
|
|
80
|
+
} else if (_isString(styleColor[0]) && Array.isArray(styleColor[1]) && styleColor[1].length > 0) {
|
|
82
81
|
registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);
|
|
83
82
|
} else {
|
|
84
83
|
registerStyleAttribute(fieldName, layer, '#fff', undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/dataMappingStyle.ts"],"names":["WIDTH","registerStyleAttribute","fieldName","layer","field","values","updateOptions","updateStyleAttribute","handleStyleDataMapping","configToUpdate","opacity","handleStyleFloat","strokeWidth","strokeOpacity","stroke","handleStyleColor","offsets","handleStyleOffsets","textOffset","thetaOffset","styleFloat","value","undefined","length","styleOffsets","styleColor"],"mappings":"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","sourcesContent":["import {\n gl,\n ILayer,\n IStyleAttributeUpdateOptions,\n ITexture2D,\n StyleAttributeField,\n StyleAttributeOption,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isArray, isFunction, isNumber, isString } from 'lodash';\n/**\n * 该文件中的工具方法主要用于对 style 中的属性进行 数据映射\n */\n\ninterface IConfigToUpdate {\n thetaOffset?: any;\n opacity?: any;\n strokeOpacity?: any;\n stroke?: any;\n strokeWidth?: any;\n offsets?: any;\n textOffset?: any;\n}\n\n// 画布默认的宽度\nconst WIDTH = 1024;\n\n/**\n * 当 style 中使用的 opacity 不是常数的时候根据数据进行映射\n * @param field\n * @param values\n * @param updateOptions\n */\nfunction registerStyleAttribute(\n fieldName: string,\n layer: ILayer,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n) {\n layer.updateStyleAttribute(fieldName, field, values, updateOptions);\n}\n\n/**\n * 当样式发生变化时判断是否需要进行数据映射\n * @param configToUpdate\n * @param layer\n */\nfunction handleStyleDataMapping(configToUpdate: IConfigToUpdate, layer: any) {\n if (configToUpdate.opacity) {\n // 处理 style 中 opacity 属性的数据映射\n handleStyleFloat('opacity', layer, configToUpdate.opacity);\n }\n\n if (configToUpdate.strokeWidth) {\n // 处理 style 中 strokeWidth 属性的数据映射\n\n handleStyleFloat('strokeWidth', layer, configToUpdate.strokeWidth);\n }\n\n if (configToUpdate.strokeOpacity) {\n // 处理 style 中 strokeOpacity 属性的数据映射\n handleStyleFloat('strokeOpacity', layer, configToUpdate.strokeOpacity);\n }\n\n if (configToUpdate.stroke) {\n // 处理 style 中 stroke (strokeColor) 属性的数据映射\n handleStyleColor('stroke', layer, configToUpdate.stroke);\n }\n\n if (configToUpdate.offsets) {\n // 处理 style 中 offsets 属性的数据映射\n handleStyleOffsets('offsets', layer, configToUpdate.offsets);\n }\n\n if (configToUpdate.textOffset) {\n // 处理 style 中 textOffset 属性的数据映射\n handleStyleOffsets('textOffset', layer, configToUpdate.textOffset);\n }\n\n if (configToUpdate.thetaOffset) {\n // 处理 style 中 thetaOffset 属性的数据映射\n handleStyleFloat('thetaOffset', layer, configToUpdate.thetaOffset);\n }\n}\n\n/**\n * 根据传入参数 float 的类型和值做相应的操作\n */\nfunction handleStyleFloat(fieldName: string, layer: ILayer, styleFloat: any) {\n if (isString(styleFloat)) {\n // 如果传入的 styleFloat 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleFloat, (value: any) => {\n return value;\n });\n } else if (isNumber(styleFloat)) {\n // 传入 number、默认值处理\n registerStyleAttribute(fieldName, layer, [styleFloat], undefined);\n } else if (isArray(styleFloat) && styleFloat.length === 2) {\n // 传入的 styleFloat 是长度为 2 的数组\n if (isString(styleFloat[0]) && isFunction(styleFloat[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else if (\n isString(styleFloat[0]) &&\n isArray(styleFloat[1]) &&\n isNumber(styleFloat[1][0]) &&\n isNumber(styleFloat[1][1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n}\n/**\n * 根据传入参数 offsets 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleOffsets\n */\nfunction handleStyleOffsets(\n fieldName: string,\n layer: ILayer,\n styleOffsets: any,\n) {\n if (isString(styleOffsets)) {\n // 如果传入的 styleOffsets 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleOffsets, (value: any) => {\n return value;\n });\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isString(styleOffsets[0]) &&\n isFunction(styleOffsets[1])\n ) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleOffsets[0], styleOffsets[1]);\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isNumber(styleOffsets[0]) &&\n isNumber(styleOffsets[1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleOffsets, undefined);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [0, 0], undefined);\n }\n}\n\n/**\n * 根据传入参数 stroke / color 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleColor\n */\nfunction handleStyleColor(fieldName: string, layer: ILayer, styleColor: any) {\n if (isString(styleColor)) {\n // 如果传入的 styleColor 是 string 类型,那么就认为其是颜色值\n registerStyleAttribute(fieldName, layer, styleColor, undefined);\n } else if (isArray(styleColor) && styleColor.length === 2) {\n // 传入的 styleColor 是长度为 2 的数组\n if (isString(styleColor[0]) && isFunction(styleColor[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else if (\n isString(styleColor[0]) &&\n isArray(styleColor[1]) &&\n styleColor[1].length > 0\n ) {\n // 字段映射 [string, [start: string, end: string]]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n}\n\nexport { handleStyleDataMapping, handleStyleFloat, handleStyleColor };\n"],"file":"dataMappingStyle.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/dataMappingStyle.ts"],"names":["WIDTH","registerStyleAttribute","fieldName","layer","field","values","updateOptions","updateStyleAttribute","handleStyleDataMapping","configToUpdate","opacity","handleStyleFloat","strokeWidth","strokeOpacity","stroke","handleStyleColor","offsets","handleStyleOffsets","textOffset","thetaOffset","styleFloat","value","undefined","Array","isArray","length","styleOffsets","styleColor"],"mappings":"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","sourcesContent":["import {\n gl,\n ILayer,\n IStyleAttributeUpdateOptions,\n ITexture2D,\n StyleAttributeField,\n StyleAttributeOption,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isFunction, isNumber, isString } from 'lodash';\n/**\n * 该文件中的工具方法主要用于对 style 中的属性进行 数据映射\n */\n\ninterface IConfigToUpdate {\n thetaOffset?: any;\n opacity?: any;\n strokeOpacity?: any;\n stroke?: any;\n strokeWidth?: any;\n offsets?: any;\n textOffset?: any;\n}\n\n// 画布默认的宽度\nconst WIDTH = 1024;\n\n/**\n * 当 style 中使用的 opacity 不是常数的时候根据数据进行映射\n * @param field\n * @param values\n * @param updateOptions\n */\nfunction registerStyleAttribute(\n fieldName: string,\n layer: ILayer,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n) {\n layer.updateStyleAttribute(fieldName, field, values, updateOptions);\n}\n\n/**\n * 当样式发生变化时判断是否需要进行数据映射\n * @param configToUpdate\n * @param layer\n */\nfunction handleStyleDataMapping(configToUpdate: IConfigToUpdate, layer: any) {\n if (configToUpdate.opacity) {\n // 处理 style 中 opacity 属性的数据映射\n handleStyleFloat('opacity', layer, configToUpdate.opacity);\n }\n\n if (configToUpdate.strokeWidth) {\n // 处理 style 中 strokeWidth 属性的数据映射\n\n handleStyleFloat('strokeWidth', layer, configToUpdate.strokeWidth);\n }\n\n if (configToUpdate.strokeOpacity) {\n // 处理 style 中 strokeOpacity 属性的数据映射\n handleStyleFloat('strokeOpacity', layer, configToUpdate.strokeOpacity);\n }\n\n if (configToUpdate.stroke) {\n // 处理 style 中 stroke (strokeColor) 属性的数据映射\n handleStyleColor('stroke', layer, configToUpdate.stroke);\n }\n\n if (configToUpdate.offsets) {\n // 处理 style 中 offsets 属性的数据映射\n handleStyleOffsets('offsets', layer, configToUpdate.offsets);\n }\n\n if (configToUpdate.textOffset) {\n // 处理 style 中 textOffset 属性的数据映射\n handleStyleOffsets('textOffset', layer, configToUpdate.textOffset);\n }\n\n if (configToUpdate.thetaOffset) {\n // 处理 style 中 thetaOffset 属性的数据映射\n handleStyleFloat('thetaOffset', layer, configToUpdate.thetaOffset);\n }\n}\n\n/**\n * 根据传入参数 float 的类型和值做相应的操作\n */\nfunction handleStyleFloat(fieldName: string, layer: ILayer, styleFloat: any) {\n if (isString(styleFloat)) {\n // 如果传入的 styleFloat 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleFloat, (value: any) => {\n return value;\n });\n } else if (isNumber(styleFloat)) {\n // 传入 number、默认值处理\n registerStyleAttribute(fieldName, layer, [styleFloat], undefined);\n } else if (Array.isArray(styleFloat) && styleFloat.length === 2) {\n // 传入的 styleFloat 是长度为 2 的数组\n if (isString(styleFloat[0]) && isFunction(styleFloat[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else if (\n isString(styleFloat[0]) &&\n Array.isArray(styleFloat[1]) &&\n isNumber(styleFloat[1][0]) &&\n isNumber(styleFloat[1][1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n}\n/**\n * 根据传入参数 offsets 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleOffsets\n */\nfunction handleStyleOffsets(\n fieldName: string,\n layer: ILayer,\n styleOffsets: any,\n) {\n if (isString(styleOffsets)) {\n // 如果传入的 styleOffsets 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleOffsets, (value: any) => {\n return value;\n });\n } else if (\n Array.isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isString(styleOffsets[0]) &&\n isFunction(styleOffsets[1])\n ) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleOffsets[0], styleOffsets[1]);\n } else if (\n Array.isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isNumber(styleOffsets[0]) &&\n isNumber(styleOffsets[1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleOffsets, undefined);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [0, 0], undefined);\n }\n}\n\n/**\n * 根据传入参数 stroke / color 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleColor\n */\nfunction handleStyleColor(fieldName: string, layer: ILayer, styleColor: any) {\n if (isString(styleColor)) {\n // 如果传入的 styleColor 是 string 类型,那么就认为其是颜色值\n registerStyleAttribute(fieldName, layer, styleColor, undefined);\n } else if (Array.isArray(styleColor) && styleColor.length === 2) {\n // 传入的 styleColor 是长度为 2 的数组\n if (isString(styleColor[0]) && isFunction(styleColor[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else if (\n isString(styleColor[0]) &&\n Array.isArray(styleColor[1]) &&\n styleColor[1].length > 0\n ) {\n // 字段映射 [string, [start: string, end: string]]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n}\n\nexport { handleStyleDataMapping, handleStyleFloat, handleStyleColor };\n"],"file":"dataMappingStyle.js"}
|
package/es/utils/updateShape.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
var shapeUpdateList = [['circle', 'cylinder'], ['square', 'cylinder'], ['triangle', 'cylinder'], ['pentagon', 'cylinder'], ['hexagon', 'cylinder'], ['octogon', 'cylinder'], ['hexagram', 'cylinder'], ['rhombus', 'cylinder'], ['vesica', 'cylinder']];
|
|
2
2
|
export function updateShape(layer, lastShape, currentShape) {
|
|
3
3
|
if (typeof lastShape === 'string' && typeof currentShape === 'string' && lastShape !== currentShape) {
|
|
4
|
+
if (layer.type === 'PointLayer') {
|
|
5
|
+
layer.dataState.dataSourceNeedUpdate = true;
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
|
|
4
9
|
shapeUpdateList.map(function (shapes) {
|
|
5
10
|
if (shapes.includes(lastShape) && shapes.includes(currentShape)) {
|
|
6
11
|
layer.dataState.dataSourceNeedUpdate = true;
|
|
12
|
+
return;
|
|
7
13
|
}
|
|
8
14
|
});
|
|
9
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/updateShape.ts"],"names":["shapeUpdateList","updateShape","layer","lastShape","currentShape","
|
|
1
|
+
{"version":3,"sources":["../../src/utils/updateShape.ts"],"names":["shapeUpdateList","updateShape","layer","lastShape","currentShape","type","dataState","dataSourceNeedUpdate","map","shapes","includes"],"mappings":"AAGA,IAAMA,eAAe,GAAG,CAEtB,CAAC,QAAD,EAAW,UAAX,CAFsB,EAGtB,CAAC,QAAD,EAAW,UAAX,CAHsB,EAItB,CAAC,UAAD,EAAa,UAAb,CAJsB,EAKtB,CAAC,UAAD,EAAa,UAAb,CALsB,EAMtB,CAAC,SAAD,EAAY,UAAZ,CANsB,EAOtB,CAAC,SAAD,EAAY,UAAZ,CAPsB,EAQtB,CAAC,UAAD,EAAa,UAAb,CARsB,EAStB,CAAC,SAAD,EAAY,UAAZ,CATsB,EAUtB,CAAC,QAAD,EAAW,UAAX,CAVsB,CAAxB;AAYA,OAAO,SAASC,WAAT,CACLC,KADK,EAELC,SAFK,EAGLC,YAHK,EAIC;AACN,MACE,OAAOD,SAAP,KAAqB,QAArB,IACA,OAAOC,YAAP,KAAwB,QADxB,IAEAD,SAAS,KAAKC,YAHhB,EAIE;AACA,QAAIF,KAAK,CAACG,IAAN,KAAe,YAAnB,EAAiC;AAC/BH,MAAAA,KAAK,CAACI,SAAN,CAAgBC,oBAAhB,GAAuC,IAAvC;AACA;AACD;;AAEDP,IAAAA,eAAe,CAACQ,GAAhB,CAAoB,UAACC,MAAD,EAAY;AAC9B,UAAIA,MAAM,CAACC,QAAP,CAAgBP,SAAhB,KAA8BM,MAAM,CAACC,QAAP,CAAgBN,YAAhB,CAAlC,EAAiE;AAE/DF,QAAAA,KAAK,CAACI,SAAN,CAAgBC,oBAAhB,GAAuC,IAAvC;AACA;AACD;AACF,KAND;AAOD;AACF","sourcesContent":["import { ILayer, StyleAttributeField } from '@antv/l7-core';\n// TODO: shapeUpdateList 存储一系列的 shape 类型\n// 当这一系列的 shape 相互切换的时候需要重构 layer 的 model (顶点数据集)\nconst shapeUpdateList = [\n // PointLayer\n ['circle', 'cylinder'],\n ['square', 'cylinder'],\n ['triangle', 'cylinder'],\n ['pentagon', 'cylinder'],\n ['hexagon', 'cylinder'],\n ['octogon', 'cylinder'],\n ['hexagram', 'cylinder'],\n ['rhombus', 'cylinder'],\n ['vesica', 'cylinder'],\n];\nexport function updateShape(\n layer: ILayer,\n lastShape: StyleAttributeField | undefined,\n currentShape: StyleAttributeField | undefined,\n): void {\n if (\n typeof lastShape === 'string' &&\n typeof currentShape === 'string' &&\n lastShape !== currentShape\n ) {\n if (layer.type === 'PointLayer') {\n layer.dataState.dataSourceNeedUpdate = true;\n return;\n }\n\n shapeUpdateList.map((shapes) => {\n if (shapes.includes(lastShape) && shapes.includes(currentShape)) {\n // TODO: dataSourceNeedUpdate 借用数据更新时更新 layer model 的工作流\n layer.dataState.dataSourceNeedUpdate = true;\n return;\n }\n });\n }\n}\n"],"file":"updateShape.js"}
|
package/lib/core/BaseLayer.js
CHANGED
|
@@ -43,6 +43,8 @@ var _asyncHook = require("@antv/async-hook");
|
|
|
43
43
|
|
|
44
44
|
var _l7Core = require("@antv/l7-core");
|
|
45
45
|
|
|
46
|
+
var _l7Source = _interopRequireDefault(require("@antv/l7-source"));
|
|
47
|
+
|
|
46
48
|
var _l7Utils = require("@antv/l7-utils");
|
|
47
49
|
|
|
48
50
|
var _eventemitter = require("eventemitter3");
|
|
@@ -416,7 +418,15 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
|
|
|
416
418
|
this.layerSource.setData(data, options);
|
|
417
419
|
} else {
|
|
418
420
|
this.on('inited', function () {
|
|
419
|
-
_this3.
|
|
421
|
+
var currentSource = _this3.getSource();
|
|
422
|
+
|
|
423
|
+
if (!currentSource) {
|
|
424
|
+
_this3.source(new _l7Source.default(data, options));
|
|
425
|
+
|
|
426
|
+
_this3.sourceEvent();
|
|
427
|
+
} else {
|
|
428
|
+
_this3.layerSource.setData(data, options);
|
|
429
|
+
}
|
|
420
430
|
});
|
|
421
431
|
}
|
|
422
432
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","push","layerType","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","enableMultiPassRenderer","passes","length","on","renderLayers","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","emit","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","shapeOption","options","rawAnimate","data","setSource","sourceOption","clusterZoom","layerSource","setData","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","getEncodedData","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","enableMultiPass","currentPasses","setRenderFlag","getViewportSize","width","height","resize","source","getSource","extent","isValid","some","v","Math","abs","isDestroied","off","sourceEvent","destroy","clearAllAttributes","models","cleanRemove","removeAllListeners","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","invertExtent","items","range","map","item","value","ticks","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","isPicking","buildModels","renderUpdate","draw","getUninforms","getShaderPickStat","time","console","warn","valuesOrCallback","defaultValues","undefined","callback","EventEmitter"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n ILegendClassificaItem,\n ILegendSegmentItem,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n lazyInject,\n LegendItems,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isFunction, isObject, isUndefined } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport {\n createMultiPassRenderer,\n normalizePasses,\n} from '../utils/multiPassRender';\nimport { updateShape } from '../utils/updateShape';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n public layerType?: string | undefined;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n public shapeOption: {\n field: any;\n values: any;\n };\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n // @lazyInject(TYPES.IShaderModuleService)\n // protected readonly shaderModuleService: IShaderModuleService;\n\n protected shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n this.layerType = this.rawConfig.layerType;\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n const { enableMultiPassRenderer, passes } = this.getLayerConfig();\n if (enableMultiPassRenderer && passes?.length && passes.length > 0) {\n // Tip: 兼容 multiPassRender 在 amap1 时存在的图层不同步问题 zoom\n this.mapService.on('mapAfterFrameChange', () => {\n this.renderLayers();\n });\n }\n\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.shapeOption = {\n field,\n values,\n };\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): ILayer {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n return this;\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMultiPass(\n enableMultiPass: boolean,\n currentPasses?: Array<string | [string, { [key: string]: unknown }]>,\n ) {\n this.updateLayerConfig({\n enableMultiPassRenderer: enableMultiPass,\n });\n if (currentPasses) {\n this.updateLayerConfig({\n passes: currentPasses,\n });\n }\n\n if (enableMultiPass) {\n const { passes = [] } = this.getLayerConfig();\n this.multiPassRenderer = createMultiPassRenderer(\n this,\n passes,\n this.postProcessingPassFactory,\n this.normalPassFactory,\n );\n this.multiPassRenderer.setRenderFlag(true);\n const { width, height } = this.rendererService.getViewportSize();\n this.multiPassRenderer.resize(width, height);\n }\n\n return this;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n\n public setAutoFit(autoFit: boolean): ILayer {\n this.updateLayerConfig({\n autoFit,\n });\n return this;\n }\n\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n // debugger\n if (this.isDestroied) {\n return;\n }\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n // this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): LegendItems {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n\n // 函数自定义映射,没有 scale 返回为空数组\n if (!scale) {\n return [];\n }\n\n if (scale.invertExtent) {\n // 分段类型 Quantize、Quantile、Threshold\n const items: ILegendSegmentItem[] = scale.range().map((item: number) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n\n return items;\n } else if (scale.ticks) {\n // 连续类型 Continuous (Linear, Power, Log, Identity, Time)\n const items: ILegendClassificaItem[] = scale\n .ticks()\n .map((item: string) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n\n return items;\n } else if (scale?.domain) {\n // 枚举类型 Cat\n const items: ILegendClassificaItem[] = scale\n .domain()\n .filter((item: string | number | undefined) => !isUndefined(item))\n .map((item: string | number) => {\n return {\n value: item,\n [name]: scale(item) as string,\n };\n });\n\n return items;\n }\n\n return [];\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n\n if (this.layerModel.renderUpdate) {\n this.layerModel.renderUpdate();\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件 迁移到 DataMappingPlugin generateMapping,保证在重新重新映射后触发\n // this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","push","layerType","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","enableMultiPassRenderer","passes","length","on","renderLayers","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","emit","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","shapeOption","options","rawAnimate","data","setSource","sourceOption","clusterZoom","layerSource","setData","currentSource","getSource","source","Source","sourceEvent","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","getEncodedData","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","enableMultiPass","currentPasses","setRenderFlag","getViewportSize","width","height","resize","extent","isValid","some","v","Math","abs","isDestroied","off","destroy","clearAllAttributes","models","cleanRemove","removeAllListeners","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","invertExtent","items","range","map","item","value","ticks","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","isPicking","buildModels","renderUpdate","draw","getUninforms","getShaderPickStat","time","console","warn","valuesOrCallback","defaultValues","undefined","callback","EventEmitter"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n ILegendClassificaItem,\n ILegendSegmentItem,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n lazyInject,\n LegendItems,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isEqual, isFunction, isObject, isUndefined } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport {\n createMultiPassRenderer,\n normalizePasses,\n} from '../utils/multiPassRender';\nimport { updateShape } from '../utils/updateShape';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n public layerType?: string | undefined;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n public shapeOption: {\n field: any;\n values: any;\n };\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n // @lazyInject(TYPES.IShaderModuleService)\n // protected readonly shaderModuleService: IShaderModuleService;\n\n protected shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n this.layerType = this.rawConfig.layerType;\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n const { enableMultiPassRenderer, passes } = this.getLayerConfig();\n if (enableMultiPassRenderer && passes?.length && passes.length > 0) {\n // Tip: 兼容 multiPassRender 在 amap1 时存在的图层不同步问题 zoom\n this.mapService.on('mapAfterFrameChange', () => {\n this.renderLayers();\n });\n }\n\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.shapeOption = {\n field,\n values,\n };\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n const currentSource = this.getSource();\n if (!currentSource) {\n // 执行 setData 的时候 source 还不存在(还未执行 addLayer)\n this.source(new Source(data, options));\n this.sourceEvent();\n } else {\n this.layerSource.setData(data, options);\n }\n // this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): ILayer {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n return this;\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMultiPass(\n enableMultiPass: boolean,\n currentPasses?: Array<string | [string, { [key: string]: unknown }]>,\n ) {\n this.updateLayerConfig({\n enableMultiPassRenderer: enableMultiPass,\n });\n if (currentPasses) {\n this.updateLayerConfig({\n passes: currentPasses,\n });\n }\n\n if (enableMultiPass) {\n const { passes = [] } = this.getLayerConfig();\n this.multiPassRenderer = createMultiPassRenderer(\n this,\n passes,\n this.postProcessingPassFactory,\n this.normalPassFactory,\n );\n this.multiPassRenderer.setRenderFlag(true);\n const { width, height } = this.rendererService.getViewportSize();\n this.multiPassRenderer.resize(width, height);\n }\n\n return this;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n\n public setAutoFit(autoFit: boolean): ILayer {\n this.updateLayerConfig({\n autoFit,\n });\n return this;\n }\n\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n // debugger\n if (this.isDestroied) {\n return;\n }\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n // this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): LegendItems {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n\n // 函数自定义映射,没有 scale 返回为空数组\n if (!scale) {\n return [];\n }\n\n if (scale.invertExtent) {\n // 分段类型 Quantize、Quantile、Threshold\n const items: ILegendSegmentItem[] = scale.range().map((item: number) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n\n return items;\n } else if (scale.ticks) {\n // 连续类型 Continuous (Linear, Power, Log, Identity, Time)\n const items: ILegendClassificaItem[] = scale\n .ticks()\n .map((item: string) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n\n return items;\n } else if (scale?.domain) {\n // 枚举类型 Cat\n const items: ILegendClassificaItem[] = scale\n .domain()\n .filter((item: string | number | undefined) => !isUndefined(item))\n .map((item: string | number) => {\n return {\n value: item,\n [name]: scale(item) as string,\n };\n });\n\n return items;\n }\n\n return [];\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n\n if (this.layerModel.renderUpdate) {\n this.layerModel.renderUpdate();\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件 迁移到 DataMappingPlugin generateMapping,保证在重新重新映射后触发\n // this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
|
package/lib/core/BaseModel.js
CHANGED
|
@@ -27,8 +27,6 @@ var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
|
|
|
27
27
|
|
|
28
28
|
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
|
|
29
29
|
|
|
30
|
-
var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
|
|
31
|
-
|
|
32
30
|
var _l7Core = require("@antv/l7-core");
|
|
33
31
|
|
|
34
32
|
var _l7Utils = require("@antv/l7-utils");
|
|
@@ -268,7 +266,7 @@ var BaseModel = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
|
|
|
268
266
|
}, {
|
|
269
267
|
key: "isOffsetStatic",
|
|
270
268
|
value: function isOffsetStatic(offsets) {
|
|
271
|
-
if (
|
|
269
|
+
if (Array.isArray(offsets) && offsets.length === 2 && (0, _isNumber2.default)(offsets[0]) && (0, _isNumber2.default)(offsets[1])) {
|
|
272
270
|
return true;
|
|
273
271
|
} else {
|
|
274
272
|
return false;
|