@antv/l7-layers 2.7.13 → 2.7.19

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.
@@ -155,6 +155,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
155
155
  getScaleOptions(): IScaleOptions;
156
156
  setEncodedData(encodedData: IEncodeFeature[]): void;
157
157
  getEncodedData(): IEncodeFeature[];
158
+ getScale(name: string): any;
158
159
  getLegendItems(name: string): any;
159
160
  pick({ x, y }: {
160
161
  x: number;
@@ -848,6 +848,11 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
848
848
  value: function getEncodedData() {
849
849
  return this.encodedData;
850
850
  }
851
+ }, {
852
+ key: "getScale",
853
+ value: function getScale(name) {
854
+ return this.styleAttributeService.getLayerAttributeScale(name);
855
+ }
851
856
  }, {
852
857
  key: "getLegendItems",
853
858
  value: function getLegendItems(name) {
@@ -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","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","color","bottomColor","plugin","plugins","push","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","clusterZoom","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","isDestroied","off","sourceEvent","destroy","clearAllAttributes","models","cleanRemove","removeAllListeners","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","isPicking","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';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n\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 shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n\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.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): 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 // debugger\n if (this.isDestroied) {\n return;\n }\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n // this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n // 连续分段类型\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 // 连续类型\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n } else if (scale?.domain) {\n // 枚举类型\n const items = scale.domain().map((item: string | number) => {\n return {\n // @ts-ignore\n value: item || '无',\n color: scale(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 async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件\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","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","color","bottomColor","plugin","plugins","push","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","clusterZoom","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","isDestroied","off","sourceEvent","destroy","clearAllAttributes","models","cleanRemove","removeAllListeners","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","isPicking","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';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n\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 shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n\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.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): 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 // debugger\n if (this.isDestroied) {\n return;\n }\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n // this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n // 连续分段类型\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 // 连续类型\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n } else if (scale?.domain) {\n // 枚举类型\n const items = scale.domain().map((item: string | number) => {\n return {\n // @ts-ignore\n value: item || '无',\n color: scale(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 async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件\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"}
@@ -69,19 +69,12 @@ var PixelPickingPlugin = (_dec = injectable(), _dec(_class = function () {
69
69
  var _layer$getLayerConfig3 = layer.getLayerConfig(),
70
70
  highlightColor = _layer$getLayerConfig3.highlightColor,
71
71
  _layer$getLayerConfig4 = _layer$getLayerConfig3.activeMix,
72
- activeMix = _layer$getLayerConfig4 === void 0 ? 0 : _layer$getLayerConfig4,
73
- enableSelect = _layer$getLayerConfig3.enableSelect;
72
+ activeMix = _layer$getLayerConfig4 === void 0 ? 0 : _layer$getLayerConfig4;
74
73
 
75
74
  var highlightColorInArray = typeof highlightColor === 'string' ? rgb2arr(highlightColor) : highlightColor || [1, 0, 0, 1];
76
-
77
- var _layer$getLayerConfig5 = layer.getLayerConfig(),
78
- selectColor = _layer$getLayerConfig5.selectColor;
79
-
80
- var selectColorInArray = typeof selectColor === 'string' ? rgb2arr(selectColor) : selectColor || [1, 0, 0, 1];
81
75
  layer.updateLayerConfig({
82
76
  pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor))
83
77
  });
84
- var currentSelectedId = layer.getCurrentSelectedId();
85
78
  layer.models.forEach(function (model) {
86
79
  return model.addUniforms({
87
80
  u_PickingStage: PickingStage.HIGHLIGHT,
@@ -89,20 +82,15 @@ var PixelPickingPlugin = (_dec = injectable(), _dec(_class = function () {
89
82
  u_HighlightColor: highlightColorInArray.map(function (c) {
90
83
  return c * 255;
91
84
  }),
92
- u_activeMix: activeMix,
93
- u_CurrentSelectedId: currentSelectedId ? encodePickingColor(layer.getCurrentSelectedId()) : [0, 0, 0],
94
- u_SelectColor: selectColorInArray.map(function (c) {
95
- return c * 255;
96
- }),
97
- u_EnableSelect: +(enableSelect || false)
85
+ u_activeMix: activeMix
98
86
  });
99
87
  });
100
88
  });
101
89
  layer.hooks.beforeSelect.tap('PixelPickingPlugin', function (pickedColor) {
102
- var _layer$getLayerConfig6 = layer.getLayerConfig(),
103
- selectColor = _layer$getLayerConfig6.selectColor,
104
- _layer$getLayerConfig7 = _layer$getLayerConfig6.selectMix,
105
- selectMix = _layer$getLayerConfig7 === void 0 ? 0 : _layer$getLayerConfig7;
90
+ var _layer$getLayerConfig5 = layer.getLayerConfig(),
91
+ selectColor = _layer$getLayerConfig5.selectColor,
92
+ _layer$getLayerConfig6 = _layer$getLayerConfig5.selectMix,
93
+ selectMix = _layer$getLayerConfig6 === void 0 ? 0 : _layer$getLayerConfig6;
106
94
 
107
95
  var highlightColorInArray = typeof selectColor === 'string' ? rgb2arr(selectColor) : selectColor || [1, 0, 0, 1];
108
96
  layer.updateLayerConfig({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PixelPickingPlugin.ts"],"names":["AttributeType","gl","decodePickingColor","encodePickingColor","rgb2arr","injectable","PickingStage","NONE","ENCODE","HIGHLIGHT","PixelPickingPlugin","layer","rendererService","styleAttributeService","hooks","init","tap","enablePicking","registerStyleAttribute","name","type","Attribute","descriptor","buffer","data","FLOAT","size","update","feature","featureIdx","id","beforePickingEncode","getLayerConfig","isVisible","models","forEach","model","addUniforms","u_PickingStage","afterPickingEncode","beforeHighlight","pickedColor","highlightColor","activeMix","enableSelect","highlightColorInArray","selectColor","selectColorInArray","updateLayerConfig","pickedFeatureID","Uint8Array","currentSelectedId","getCurrentSelectedId","u_PickingColor","u_HighlightColor","map","c","u_activeMix","u_CurrentSelectedId","u_SelectColor","u_EnableSelect","beforeSelect","selectMix"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerPlugin,\n IRendererService,\n IStyleAttributeService,\n} from '@antv/l7-core';\nimport {\n decodePickingColor,\n encodePickingColor,\n rgb2arr,\n} from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0,\n};\n\n@injectable()\nexport default class PixelPickingPlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n rendererService,\n styleAttributeService,\n }: {\n rendererService: IRendererService;\n styleAttributeService: IStyleAttributeService;\n },\n ) {\n // TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor\n layer.hooks.init.tap('PixelPickingPlugin', () => {\n // const { enablePicking, enableMultiPassRenderer } = layer.getLayerConfig();\n const enablePicking = true;\n styleAttributeService.registerStyleAttribute({\n name: 'pickingColor',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_PickingColor',\n buffer: {\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // TODO: 固定 feature range 范围内的 pickingColor 都是固定的,可以生成 cache\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // 只有开启拾取才需要 encode\n const { id } = feature;\n return enablePicking ? encodePickingColor(id as number) : [0, 0, 0];\n },\n },\n });\n });\n // 必须要与 PixelPickingPass 结合使用,因此必须开启 multiPassRenderer\n // if (layer.multiPassRenderer) {\n layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.ENCODE,\n }),\n );\n }\n });\n\n layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n // 区分选中高亮 和滑过高亮\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n }),\n );\n }\n });\n\n layer.hooks.beforeHighlight.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const {\n highlightColor,\n activeMix = 0,\n enableSelect,\n } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof highlightColor === 'string'\n ? rgb2arr(highlightColor)\n : highlightColor || [1, 0, 0, 1];\n\n const { selectColor } = layer.getLayerConfig();\n const selectColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n const currentSelectedId = layer.getCurrentSelectedId();\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: activeMix,\n u_CurrentSelectedId: currentSelectedId\n ? encodePickingColor(layer.getCurrentSelectedId()!)\n : [0, 0, 0],\n u_SelectColor: selectColorInArray.map((c) => c * 255),\n u_EnableSelect: +(enableSelect || false),\n }),\n );\n },\n );\n\n layer.hooks.beforeSelect.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { selectColor, selectMix = 0 } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: selectMix,\n u_CurrentSelectedId: pickedColor,\n u_SelectColor: highlightColorInArray.map((c) => c * 255),\n u_EnableSelect: 1,\n }),\n );\n },\n );\n // }\n }\n}\n"],"file":"PixelPickingPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PixelPickingPlugin.ts"],"names":["AttributeType","gl","decodePickingColor","encodePickingColor","rgb2arr","injectable","PickingStage","NONE","ENCODE","HIGHLIGHT","PixelPickingPlugin","layer","rendererService","styleAttributeService","hooks","init","tap","enablePicking","registerStyleAttribute","name","type","Attribute","descriptor","buffer","data","FLOAT","size","update","feature","featureIdx","id","beforePickingEncode","getLayerConfig","isVisible","models","forEach","model","addUniforms","u_PickingStage","afterPickingEncode","beforeHighlight","pickedColor","highlightColor","activeMix","highlightColorInArray","updateLayerConfig","pickedFeatureID","Uint8Array","u_PickingColor","u_HighlightColor","map","c","u_activeMix","beforeSelect","selectColor","selectMix","u_CurrentSelectedId","u_SelectColor","u_EnableSelect"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerPlugin,\n IRendererService,\n IStyleAttributeService,\n} from '@antv/l7-core';\nimport {\n decodePickingColor,\n encodePickingColor,\n rgb2arr,\n} from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0,\n};\n\n@injectable()\nexport default class PixelPickingPlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n rendererService,\n styleAttributeService,\n }: {\n rendererService: IRendererService;\n styleAttributeService: IStyleAttributeService;\n },\n ) {\n // TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor\n layer.hooks.init.tap('PixelPickingPlugin', () => {\n // const { enablePicking, enableMultiPassRenderer } = layer.getLayerConfig();\n const enablePicking = true;\n styleAttributeService.registerStyleAttribute({\n name: 'pickingColor',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_PickingColor',\n buffer: {\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // TODO: 固定 feature range 范围内的 pickingColor 都是固定的,可以生成 cache\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // 只有开启拾取才需要 encode\n const { id } = feature;\n return enablePicking ? encodePickingColor(id as number) : [0, 0, 0];\n },\n },\n });\n });\n // 必须要与 PixelPickingPass 结合使用,因此必须开启 multiPassRenderer\n // if (layer.multiPassRenderer) {\n layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.ENCODE,\n }),\n );\n }\n });\n\n layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n // 区分选中高亮 和滑过高亮\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n }),\n );\n }\n });\n\n layer.hooks.beforeHighlight.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { highlightColor, activeMix = 0 } = layer.getLayerConfig();\n // const {\n // highlightColor,\n // activeMix = 0,\n // enableSelect,\n // } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof highlightColor === 'string'\n ? rgb2arr(highlightColor)\n : highlightColor || [1, 0, 0, 1];\n\n // const { selectColor } = layer.getLayerConfig();\n // const selectColorInArray =\n // typeof selectColor === 'string'\n // ? rgb2arr(selectColor)\n // : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n // const currentSelectedId = layer.getCurrentSelectedId();\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: activeMix,\n // u_CurrentSelectedId: currentSelectedId\n // ? encodePickingColor(layer.getCurrentSelectedId()!)\n // : [0, 0, 0],\n // u_SelectColor: selectColorInArray.map((c) => c * 255),\n // u_EnableSelect: +(enableSelect || false),\n }),\n );\n },\n );\n\n layer.hooks.beforeSelect.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { selectColor, selectMix = 0 } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: selectMix,\n u_CurrentSelectedId: pickedColor,\n u_SelectColor: highlightColorInArray.map((c) => c * 255),\n u_EnableSelect: 1,\n }),\n );\n },\n );\n // }\n }\n}\n"],"file":"PixelPickingPlugin.js"}
@@ -824,6 +824,11 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
824
824
  value: function getEncodedData() {
825
825
  return this.encodedData;
826
826
  }
827
+ }, {
828
+ key: "getScale",
829
+ value: function getScale(name) {
830
+ return this.styleAttributeService.getLayerAttributeScale(name);
831
+ }
827
832
  }, {
828
833
  key: "getLegendItems",
829
834
  value: function getLegendItems(name) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","push","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","clusterZoom","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","isDestroied","off","sourceEvent","destroy","clearAllAttributes","models","cleanRemove","removeAllListeners","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","isPicking","buildModels","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';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n\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 shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n\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.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): 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 // debugger\n if (this.isDestroied) {\n return;\n }\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n // this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n // 连续分段类型\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 // 连续类型\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n } else if (scale?.domain) {\n // 枚举类型\n const items = scale.domain().map((item: string | number) => {\n return {\n // @ts-ignore\n value: item || '无',\n color: scale(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 async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件\n this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
1
+ {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","push","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","options","rawAnimate","data","setSource","sourceOption","clusterZoom","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","isDestroied","off","sourceEvent","destroy","clearAllAttributes","models","cleanRemove","removeAllListeners","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","isPicking","buildModels","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';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n\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 shaderModuleService: IShaderModuleService;\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // TODO: layer 保底颜色\n private bottomColor = 'rgba(0, 0, 0, 0)';\n\n private isDestroied: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n\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.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): 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 // debugger\n if (this.isDestroied) {\n return;\n }\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n // console.log(this.styleAttributeService.getAttributes())\n // 清除所有属性以及关联的 vao == 销毁所有 => model this.models.forEach((model) => model.destroy());\n this.styleAttributeService.clearAllAttributes();\n\n // 执行每个图层单独的 clearModels 方法 (清除一些额外的 texture、program、buffer 等)\n\n this.hooks.afterDestroy.call();\n\n // TODO: 清除各个图层自定义的 models 资源\n // this.layerModel?.clearModels();\n\n this.models = [];\n\n this.layerService.cleanRemove(this);\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.emit('destroy', {\n target: this,\n type: 'destroy',\n });\n\n this.removeAllListeners();\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n\n this.isDestroied = true;\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n // 连续分段类型\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 // 连续类型\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n } else if (scale?.domain) {\n // 枚举类型\n const items = scale.domain().map((item: string | number) => {\n return {\n // @ts-ignore\n value: item || '无',\n color: scale(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 async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件\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"}
@@ -83,19 +83,12 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = fun
83
83
  var _layer$getLayerConfig3 = layer.getLayerConfig(),
84
84
  highlightColor = _layer$getLayerConfig3.highlightColor,
85
85
  _layer$getLayerConfig4 = _layer$getLayerConfig3.activeMix,
86
- activeMix = _layer$getLayerConfig4 === void 0 ? 0 : _layer$getLayerConfig4,
87
- enableSelect = _layer$getLayerConfig3.enableSelect;
86
+ activeMix = _layer$getLayerConfig4 === void 0 ? 0 : _layer$getLayerConfig4;
88
87
 
89
88
  var highlightColorInArray = typeof highlightColor === 'string' ? (0, _l7Utils.rgb2arr)(highlightColor) : highlightColor || [1, 0, 0, 1];
90
-
91
- var _layer$getLayerConfig5 = layer.getLayerConfig(),
92
- selectColor = _layer$getLayerConfig5.selectColor;
93
-
94
- var selectColorInArray = typeof selectColor === 'string' ? (0, _l7Utils.rgb2arr)(selectColor) : selectColor || [1, 0, 0, 1];
95
89
  layer.updateLayerConfig({
96
90
  pickedFeatureID: (0, _l7Utils.decodePickingColor)(new Uint8Array(pickedColor))
97
91
  });
98
- var currentSelectedId = layer.getCurrentSelectedId();
99
92
  layer.models.forEach(function (model) {
100
93
  return model.addUniforms({
101
94
  u_PickingStage: PickingStage.HIGHLIGHT,
@@ -103,20 +96,15 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = fun
103
96
  u_HighlightColor: highlightColorInArray.map(function (c) {
104
97
  return c * 255;
105
98
  }),
106
- u_activeMix: activeMix,
107
- u_CurrentSelectedId: currentSelectedId ? (0, _l7Utils.encodePickingColor)(layer.getCurrentSelectedId()) : [0, 0, 0],
108
- u_SelectColor: selectColorInArray.map(function (c) {
109
- return c * 255;
110
- }),
111
- u_EnableSelect: +(enableSelect || false)
99
+ u_activeMix: activeMix
112
100
  });
113
101
  });
114
102
  });
115
103
  layer.hooks.beforeSelect.tap('PixelPickingPlugin', function (pickedColor) {
116
- var _layer$getLayerConfig6 = layer.getLayerConfig(),
117
- selectColor = _layer$getLayerConfig6.selectColor,
118
- _layer$getLayerConfig7 = _layer$getLayerConfig6.selectMix,
119
- selectMix = _layer$getLayerConfig7 === void 0 ? 0 : _layer$getLayerConfig7;
104
+ var _layer$getLayerConfig5 = layer.getLayerConfig(),
105
+ selectColor = _layer$getLayerConfig5.selectColor,
106
+ _layer$getLayerConfig6 = _layer$getLayerConfig5.selectMix,
107
+ selectMix = _layer$getLayerConfig6 === void 0 ? 0 : _layer$getLayerConfig6;
120
108
 
121
109
  var highlightColorInArray = typeof selectColor === 'string' ? (0, _l7Utils.rgb2arr)(selectColor) : selectColor || [1, 0, 0, 1];
122
110
  layer.updateLayerConfig({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PixelPickingPlugin.ts"],"names":["PickingStage","NONE","ENCODE","HIGHLIGHT","PixelPickingPlugin","layer","rendererService","styleAttributeService","hooks","init","tap","enablePicking","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","data","gl","FLOAT","size","update","feature","featureIdx","id","beforePickingEncode","getLayerConfig","isVisible","models","forEach","model","addUniforms","u_PickingStage","afterPickingEncode","beforeHighlight","pickedColor","highlightColor","activeMix","enableSelect","highlightColorInArray","selectColor","selectColorInArray","updateLayerConfig","pickedFeatureID","Uint8Array","currentSelectedId","getCurrentSelectedId","u_PickingColor","u_HighlightColor","map","c","u_activeMix","u_CurrentSelectedId","u_SelectColor","u_EnableSelect","beforeSelect","selectMix"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerPlugin,\n IRendererService,\n IStyleAttributeService,\n} from '@antv/l7-core';\nimport {\n decodePickingColor,\n encodePickingColor,\n rgb2arr,\n} from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0,\n};\n\n@injectable()\nexport default class PixelPickingPlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n rendererService,\n styleAttributeService,\n }: {\n rendererService: IRendererService;\n styleAttributeService: IStyleAttributeService;\n },\n ) {\n // TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor\n layer.hooks.init.tap('PixelPickingPlugin', () => {\n // const { enablePicking, enableMultiPassRenderer } = layer.getLayerConfig();\n const enablePicking = true;\n styleAttributeService.registerStyleAttribute({\n name: 'pickingColor',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_PickingColor',\n buffer: {\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // TODO: 固定 feature range 范围内的 pickingColor 都是固定的,可以生成 cache\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // 只有开启拾取才需要 encode\n const { id } = feature;\n return enablePicking ? encodePickingColor(id as number) : [0, 0, 0];\n },\n },\n });\n });\n // 必须要与 PixelPickingPass 结合使用,因此必须开启 multiPassRenderer\n // if (layer.multiPassRenderer) {\n layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.ENCODE,\n }),\n );\n }\n });\n\n layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n // 区分选中高亮 和滑过高亮\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n }),\n );\n }\n });\n\n layer.hooks.beforeHighlight.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const {\n highlightColor,\n activeMix = 0,\n enableSelect,\n } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof highlightColor === 'string'\n ? rgb2arr(highlightColor)\n : highlightColor || [1, 0, 0, 1];\n\n const { selectColor } = layer.getLayerConfig();\n const selectColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n const currentSelectedId = layer.getCurrentSelectedId();\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: activeMix,\n u_CurrentSelectedId: currentSelectedId\n ? encodePickingColor(layer.getCurrentSelectedId()!)\n : [0, 0, 0],\n u_SelectColor: selectColorInArray.map((c) => c * 255),\n u_EnableSelect: +(enableSelect || false),\n }),\n );\n },\n );\n\n layer.hooks.beforeSelect.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { selectColor, selectMix = 0 } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: selectMix,\n u_CurrentSelectedId: pickedColor,\n u_SelectColor: highlightColorInArray.map((c) => c * 255),\n u_EnableSelect: 1,\n }),\n );\n },\n );\n // }\n }\n}\n"],"file":"PixelPickingPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PixelPickingPlugin.ts"],"names":["PickingStage","NONE","ENCODE","HIGHLIGHT","PixelPickingPlugin","layer","rendererService","styleAttributeService","hooks","init","tap","enablePicking","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","data","gl","FLOAT","size","update","feature","featureIdx","id","beforePickingEncode","getLayerConfig","isVisible","models","forEach","model","addUniforms","u_PickingStage","afterPickingEncode","beforeHighlight","pickedColor","highlightColor","activeMix","highlightColorInArray","updateLayerConfig","pickedFeatureID","Uint8Array","u_PickingColor","u_HighlightColor","map","c","u_activeMix","beforeSelect","selectColor","selectMix","u_CurrentSelectedId","u_SelectColor","u_EnableSelect"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerPlugin,\n IRendererService,\n IStyleAttributeService,\n} from '@antv/l7-core';\nimport {\n decodePickingColor,\n encodePickingColor,\n rgb2arr,\n} from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0,\n};\n\n@injectable()\nexport default class PixelPickingPlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n rendererService,\n styleAttributeService,\n }: {\n rendererService: IRendererService;\n styleAttributeService: IStyleAttributeService;\n },\n ) {\n // TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor\n layer.hooks.init.tap('PixelPickingPlugin', () => {\n // const { enablePicking, enableMultiPassRenderer } = layer.getLayerConfig();\n const enablePicking = true;\n styleAttributeService.registerStyleAttribute({\n name: 'pickingColor',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_PickingColor',\n buffer: {\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // TODO: 固定 feature range 范围内的 pickingColor 都是固定的,可以生成 cache\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // 只有开启拾取才需要 encode\n const { id } = feature;\n return enablePicking ? encodePickingColor(id as number) : [0, 0, 0];\n },\n },\n });\n });\n // 必须要与 PixelPickingPass 结合使用,因此必须开启 multiPassRenderer\n // if (layer.multiPassRenderer) {\n layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.ENCODE,\n }),\n );\n }\n });\n\n layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n // 区分选中高亮 和滑过高亮\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n }),\n );\n }\n });\n\n layer.hooks.beforeHighlight.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { highlightColor, activeMix = 0 } = layer.getLayerConfig();\n // const {\n // highlightColor,\n // activeMix = 0,\n // enableSelect,\n // } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof highlightColor === 'string'\n ? rgb2arr(highlightColor)\n : highlightColor || [1, 0, 0, 1];\n\n // const { selectColor } = layer.getLayerConfig();\n // const selectColorInArray =\n // typeof selectColor === 'string'\n // ? rgb2arr(selectColor)\n // : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n // const currentSelectedId = layer.getCurrentSelectedId();\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: activeMix,\n // u_CurrentSelectedId: currentSelectedId\n // ? encodePickingColor(layer.getCurrentSelectedId()!)\n // : [0, 0, 0],\n // u_SelectColor: selectColorInArray.map((c) => c * 255),\n // u_EnableSelect: +(enableSelect || false),\n }),\n );\n },\n );\n\n layer.hooks.beforeSelect.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { selectColor, selectMix = 0 } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: selectMix,\n u_CurrentSelectedId: pickedColor,\n u_SelectColor: highlightColorInArray.map((c) => c * 255),\n u_EnableSelect: 1,\n }),\n );\n },\n );\n // }\n }\n}\n"],"file":"PixelPickingPlugin.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-layers",
3
- "version": "2.7.13",
3
+ "version": "2.7.19",
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.7.13",
28
- "@antv/l7-source": "^2.7.13",
29
- "@antv/l7-utils": "^2.7.13",
27
+ "@antv/l7-core": "^2.7.19",
28
+ "@antv/l7-source": "^2.7.19",
29
+ "@antv/l7-utils": "^2.7.19",
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": "33300e0c8a5cfd5806ee881d3b41473579d3685e",
55
+ "gitHead": "3e2ac1692f97ac18b7600f7b9e4edf47b1dff948",
56
56
  "publishConfig": {
57
57
  "access": "public"
58
58
  }