@antv/l7-layers 2.6.6 → 2.6.7

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.
@@ -694,11 +694,15 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), _dec2 = lazyInje
694
694
  }, {
695
695
  key: "destroy",
696
696
  value: function destroy() {
697
+ var _this$layerModel;
698
+
697
699
  this.hooks.beforeDestroy.call();
698
700
  this.layerSource.off('update', this.sourceEvent);
699
701
  this.multiPassRenderer.destroy();
700
702
  this.styleAttributeService.clearAllAttributes();
701
703
  this.hooks.afterDestroy.call();
704
+ (_this$layerModel = this.layerModel) === null || _this$layerModel === void 0 ? void 0 : _this$layerModel.clearModels();
705
+ this.encodedData = null;
702
706
  this.emit('remove', {
703
707
  target: this,
704
708
  type: 'remove'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["SyncBailHook","SyncHook","SyncWaterfallHook","BlendType","lazyInject","TYPES","encodePickingColor","EventEmitter","normalizePasses","BlendTypes","handleStyleDataMapping","updateShape","layerIdCounter","BaseLayer","IGlobalConfigService","IShaderModuleService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","afterInit","beforeRender","beforeRenderData","afterRender","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","plugin","plugins","push","enableMultiPassRenderer","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","activeOption","enableHighlight","color","highlightColor","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","off","sourceEvent","destroy","clearAllAttributes","removeAllListeners","models","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","shaderModuleService","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","buildModels","draw","getUninforms","getShaderPickStat","time","console","warn","valuesOrCallback","defaultValues","undefined","callback"],"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 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 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 } from 'lodash';\nimport { normalizePasses } from '../plugins/MultiPassRendererPlugin';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport { updateShape } from '../utils/updateShape';\nimport baseLayerSchema from './schema';\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\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 // 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 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 // 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 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\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 this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\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.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 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 // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\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 } 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 });\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 });\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 } 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 });\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 });\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): void {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\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 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 * 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 this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n\n // 清除所有属性以及关联的 vao\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n // this.models.forEach((model) => model.destroy());\n\n this.hooks.afterDestroy.call();\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.removeAllListeners();\n\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\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\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 public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\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 renderModels() {\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 this.models.forEach((model) => {\n model.draw({\n uniforms: this.layerModel.getUninforms(),\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\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":["SyncBailHook","SyncHook","SyncWaterfallHook","BlendType","lazyInject","TYPES","encodePickingColor","EventEmitter","normalizePasses","BlendTypes","handleStyleDataMapping","updateShape","layerIdCounter","BaseLayer","IGlobalConfigService","IShaderModuleService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","afterInit","beforeRender","beforeRenderData","afterRender","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","plugin","plugins","push","enableMultiPassRenderer","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","activeOption","enableHighlight","color","highlightColor","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","off","sourceEvent","destroy","clearAllAttributes","layerModel","clearModels","encodedData","removeAllListeners","models","model","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","shaderModuleService","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","buildModels","draw","getUninforms","getShaderPickStat","time","console","warn","valuesOrCallback","defaultValues","undefined","callback"],"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 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 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 } from 'lodash';\nimport { normalizePasses } from '../plugins/MultiPassRendererPlugin';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport { updateShape } from '../utils/updateShape';\nimport baseLayerSchema from './schema';\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\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 // 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 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 // 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 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\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 this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\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.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 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 // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\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 } 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 });\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 });\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 } 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 });\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 });\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): void {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\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 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 * 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 this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n\n // 清除所有属性以及关联的 vao\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n // this.models.forEach((model) => model.destroy());\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n this.layerModel?.clearModels();\n // @ts-ignore\n this.encodedData = null;\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.removeAllListeners();\n\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\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\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 public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\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 renderModels() {\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 this.models.forEach((model) => {\n model.draw({\n uniforms: this.layerModel.getUninforms(),\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\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"}
@@ -672,11 +672,15 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
672
672
  }, {
673
673
  key: "destroy",
674
674
  value: function destroy() {
675
+ var _this$layerModel;
676
+
675
677
  this.hooks.beforeDestroy.call();
676
678
  this.layerSource.off('update', this.sourceEvent);
677
679
  this.multiPassRenderer.destroy();
678
680
  this.styleAttributeService.clearAllAttributes();
679
681
  this.hooks.afterDestroy.call();
682
+ (_this$layerModel = this.layerModel) === null || _this$layerModel === void 0 ? void 0 : _this$layerModel.clearModels();
683
+ this.encodedData = null;
680
684
  this.emit('remove', {
681
685
  target: this,
682
686
  type: 'remove'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","IShaderModuleService","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","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","plugin","plugins","push","enableMultiPassRenderer","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","activeOption","enableHighlight","color","highlightColor","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","off","sourceEvent","destroy","clearAllAttributes","removeAllListeners","models","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","shaderModuleService","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","buildModels","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 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 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 } from 'lodash';\nimport { normalizePasses } from '../plugins/MultiPassRendererPlugin';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport { updateShape } from '../utils/updateShape';\nimport baseLayerSchema from './schema';\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\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 // 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 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 // 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 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\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 this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\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.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 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 // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\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 } 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 });\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 });\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 } 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 });\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 });\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): void {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\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 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 * 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 this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n\n // 清除所有属性以及关联的 vao\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n // this.models.forEach((model) => model.destroy());\n\n this.hooks.afterDestroy.call();\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.removeAllListeners();\n\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\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\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 public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\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 renderModels() {\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 this.models.forEach((model) => {\n model.draw({\n uniforms: this.layerModel.getUninforms(),\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\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","IShaderModuleService","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","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","plugin","plugins","push","enableMultiPassRenderer","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","activeOption","enableHighlight","color","highlightColor","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","off","sourceEvent","destroy","clearAllAttributes","layerModel","clearModels","encodedData","removeAllListeners","models","model","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","shaderModuleService","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","buildModels","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 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 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 } from 'lodash';\nimport { normalizePasses } from '../plugins/MultiPassRendererPlugin';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport { updateShape } from '../utils/updateShape';\nimport baseLayerSchema from './schema';\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\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 // 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 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 // 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 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\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 this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\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.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 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 // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\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 } 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 });\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 });\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 } 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 });\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 });\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): void {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\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 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 * 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 this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n\n // 清除所有属性以及关联的 vao\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n // this.models.forEach((model) => model.destroy());\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n this.layerModel?.clearModels();\n // @ts-ignore\n this.encodedData = null;\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.removeAllListeners();\n\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\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\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 public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\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 renderModels() {\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 this.models.forEach((model) => {\n model.draw({\n uniforms: this.layerModel.getUninforms(),\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\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-layers",
3
- "version": "2.6.6",
3
+ "version": "2.6.7",
4
4
  "description": "L7's collection of built-in layers",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -24,9 +24,9 @@
24
24
  "license": "ISC",
25
25
  "dependencies": {
26
26
  "@antv/geo-coord": "^1.0.8",
27
- "@antv/l7-core": "^2.6.6",
28
- "@antv/l7-source": "^2.6.6",
29
- "@antv/l7-utils": "^2.6.6",
27
+ "@antv/l7-core": "^2.6.7",
28
+ "@antv/l7-source": "^2.6.7",
29
+ "@antv/l7-utils": "^2.6.7",
30
30
  "@babel/runtime": "^7.7.7",
31
31
  "@mapbox/martini": "^0.2.0",
32
32
  "@turf/meta": "^6.0.2",
@@ -52,7 +52,7 @@
52
52
  "@types/gl-matrix": "^2.4.5",
53
53
  "@types/lodash": "^4.14.138"
54
54
  },
55
- "gitHead": "e08d67a975b652b467fcf4d1e8af69590cd6b923",
55
+ "gitHead": "70a22219e71c4170e3f679dab22a7301af7e2d45",
56
56
  "publishConfig": {
57
57
  "access": "public"
58
58
  }