@antv/l7-layers 2.6.35 → 2.7.2

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.
Files changed (135) hide show
  1. package/es/core/BaseLayer.d.ts +1 -0
  2. package/es/core/BaseLayer.js +4 -0
  3. package/es/core/BaseLayer.js.map +1 -1
  4. package/es/core/interface.d.ts +60 -1
  5. package/es/core/interface.js.map +1 -1
  6. package/es/heatmap/index.d.ts +1 -4
  7. package/es/heatmap/index.js.map +1 -1
  8. package/es/heatmap/models/grid.js +9 -1
  9. package/es/heatmap/models/grid.js.map +1 -1
  10. package/es/heatmap/models/grid3d.js +9 -1
  11. package/es/heatmap/models/grid3d.js.map +1 -1
  12. package/es/heatmap/models/heatmap.js +29 -15
  13. package/es/heatmap/models/heatmap.js.map +1 -1
  14. package/es/heatmap/models/hexagon.js +9 -1
  15. package/es/heatmap/models/hexagon.js.map +1 -1
  16. package/es/image/index.d.ts +1 -4
  17. package/es/image/index.js.map +1 -1
  18. package/es/image/models/image.d.ts +3 -3
  19. package/es/image/models/image.js +9 -2
  20. package/es/image/models/image.js.map +1 -1
  21. package/es/index.d.ts +2 -1
  22. package/es/index.js +2 -1
  23. package/es/index.js.map +1 -1
  24. package/es/line/index.js +1 -1
  25. package/es/line/index.js.map +1 -1
  26. package/es/line/models/arc.js +8 -3
  27. package/es/line/models/arc.js.map +1 -1
  28. package/es/line/models/arc_3d.js +8 -3
  29. package/es/line/models/arc_3d.js.map +1 -1
  30. package/es/line/models/great_circle.js +13 -6
  31. package/es/line/models/great_circle.js.map +1 -1
  32. package/es/line/models/index.d.ts +1 -1
  33. package/es/line/models/index.js +1 -1
  34. package/es/line/models/index.js.map +1 -1
  35. package/es/line/models/line.js +12 -5
  36. package/es/line/models/line.js.map +1 -1
  37. package/es/line/models/simpleLine.js +10 -3
  38. package/es/line/models/simpleLine.js.map +1 -1
  39. package/es/mask/index.d.ts +21 -0
  40. package/es/mask/index.js +73 -0
  41. package/es/mask/index.js.map +1 -0
  42. package/es/mask/models/fill.d.ts +11 -0
  43. package/es/mask/models/fill.js +92 -0
  44. package/es/mask/models/fill.js.map +1 -0
  45. package/es/mask/models/index.d.ts +5 -0
  46. package/es/mask/models/index.js +6 -0
  47. package/es/mask/models/index.js.map +1 -0
  48. package/es/plugins/DataSourcePlugin.js +6 -2
  49. package/es/plugins/DataSourcePlugin.js.map +1 -1
  50. package/es/point/index.d.ts +1 -6
  51. package/es/point/index.js.map +1 -1
  52. package/es/point/models/fill.js +9 -1
  53. package/es/point/models/fill.js.map +1 -1
  54. package/es/point/models/image.js +12 -4
  55. package/es/point/models/image.js.map +1 -1
  56. package/es/point/models/index.js.map +1 -1
  57. package/es/point/models/normal.d.ts +2 -6
  58. package/es/point/models/normal.js +9 -1
  59. package/es/point/models/normal.js.map +1 -1
  60. package/es/point/models/simplePoint.d.ts +2 -10
  61. package/es/point/models/simplePoint.js +9 -1
  62. package/es/point/models/simplePoint.js.map +1 -1
  63. package/es/point/models/text.js +60 -46
  64. package/es/point/models/text.js.map +1 -1
  65. package/es/polygon/index.d.ts +1 -4
  66. package/es/polygon/index.js.map +1 -1
  67. package/es/polygon/models/extrude.js +8 -2
  68. package/es/polygon/models/extrude.js.map +1 -1
  69. package/es/polygon/models/fill.js +8 -2
  70. package/es/polygon/models/fill.js.map +1 -1
  71. package/es/raster/index.d.ts +1 -10
  72. package/es/raster/index.js.map +1 -1
  73. package/es/raster/models/raster.d.ts +3 -3
  74. package/es/raster/models/raster.js +13 -6
  75. package/es/raster/models/raster.js.map +1 -1
  76. package/lib/core/BaseLayer.js +3 -0
  77. package/lib/core/BaseLayer.js.map +1 -1
  78. package/lib/core/interface.js.map +1 -1
  79. package/lib/heatmap/index.js.map +1 -1
  80. package/lib/heatmap/models/grid.js +10 -1
  81. package/lib/heatmap/models/grid.js.map +1 -1
  82. package/lib/heatmap/models/grid3d.js +10 -1
  83. package/lib/heatmap/models/grid3d.js.map +1 -1
  84. package/lib/heatmap/models/heatmap.js +28 -14
  85. package/lib/heatmap/models/heatmap.js.map +1 -1
  86. package/lib/heatmap/models/hexagon.js +10 -1
  87. package/lib/heatmap/models/hexagon.js.map +1 -1
  88. package/lib/image/index.js.map +1 -1
  89. package/lib/image/models/image.js +8 -1
  90. package/lib/image/models/image.js.map +1 -1
  91. package/lib/index.js +8 -0
  92. package/lib/index.js.map +1 -1
  93. package/lib/line/index.js +1 -1
  94. package/lib/line/index.js.map +1 -1
  95. package/lib/line/models/arc.js +7 -2
  96. package/lib/line/models/arc.js.map +1 -1
  97. package/lib/line/models/arc_3d.js +7 -2
  98. package/lib/line/models/arc_3d.js.map +1 -1
  99. package/lib/line/models/great_circle.js +12 -5
  100. package/lib/line/models/great_circle.js.map +1 -1
  101. package/lib/line/models/index.js +1 -1
  102. package/lib/line/models/index.js.map +1 -1
  103. package/lib/line/models/line.js +11 -4
  104. package/lib/line/models/line.js.map +1 -1
  105. package/lib/line/models/simpleLine.js +9 -2
  106. package/lib/line/models/simpleLine.js.map +1 -1
  107. package/lib/mask/index.js +86 -0
  108. package/lib/mask/index.js.map +1 -0
  109. package/lib/mask/models/fill.js +107 -0
  110. package/lib/mask/models/fill.js.map +1 -0
  111. package/lib/mask/models/index.js +17 -0
  112. package/lib/mask/models/index.js.map +1 -0
  113. package/lib/plugins/DataSourcePlugin.js +6 -2
  114. package/lib/plugins/DataSourcePlugin.js.map +1 -1
  115. package/lib/point/index.js.map +1 -1
  116. package/lib/point/models/fill.js +10 -1
  117. package/lib/point/models/fill.js.map +1 -1
  118. package/lib/point/models/image.js +13 -4
  119. package/lib/point/models/image.js.map +1 -1
  120. package/lib/point/models/index.js.map +1 -1
  121. package/lib/point/models/normal.js +10 -1
  122. package/lib/point/models/normal.js.map +1 -1
  123. package/lib/point/models/simplePoint.js +10 -1
  124. package/lib/point/models/simplePoint.js.map +1 -1
  125. package/lib/point/models/text.js +59 -45
  126. package/lib/point/models/text.js.map +1 -1
  127. package/lib/polygon/index.js.map +1 -1
  128. package/lib/polygon/models/extrude.js +9 -2
  129. package/lib/polygon/models/extrude.js.map +1 -1
  130. package/lib/polygon/models/fill.js +9 -2
  131. package/lib/polygon/models/fill.js.map +1 -1
  132. package/lib/raster/index.js.map +1 -1
  133. package/lib/raster/models/raster.js +12 -5
  134. package/lib/raster/models/raster.js.map +1 -1
  135. package/package.json +5 -5
@@ -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","enableMultiPassRenderer","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","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","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","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';\nimport baseLayerSchema from './schema';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n // @lazyInject(TYPES.IShaderModuleService)\n // protected readonly shaderModuleService: IShaderModuleService;\n\n protected 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\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 return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n 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\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public renderModels(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","enableMultiPassRenderer","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","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","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';\nimport baseLayerSchema from './schema';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n 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\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 // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n 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 const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public renderModels(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 +1 @@
1
- {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType"],"mappings":";;;;;;IACYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a","sourcesContent":["import { styleSingle } from '../core/BaseModel';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n iconStepCount?: number; // 可选参数、纹理贴图间隔\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n\n heightfixed?: boolean; // 可选参数 高度是否固定\n}\n"],"file":"interface.js"}
1
+ {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType"],"mappings":";;;;;;IAQYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a","sourcesContent":["import { generateColorRamp, getMask, IColorRamp } from '@antv/l7-utils';\nimport { styleColor, styleOffset, styleSingle } from '../core/BaseModel';\nimport {\n anchorType,\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../utils/symbol-layout';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n iconStepCount?: number; // 可选参数、纹理贴图间隔\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n\n heightfixed?: boolean; // 可选参数 高度是否固定\n\n mask?: boolean; // 可选参数 时候允许蒙层\n maskInside?: boolean; // 可选参数 控制图层是否显示在蒙层的内部\n}\n\nexport interface IPointLayerStyleOptions {\n opacity: number;\n strokeOpacity: number;\n strokeWidth: number;\n stroke: string;\n\n textOffset?: [number, number];\n textAnchor?: anchorType;\n spacing?: number;\n padding?: [number, number];\n halo?: number;\n gamma?: number;\n fontWeight?: string;\n fontFamily?: string;\n textAllowOverlap?: boolean;\n\n offsets?: styleOffset;\n blend?: string;\n unit?: string;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n\n opacityLinear: {\n enable: boolean;\n dir: string;\n };\n\n pickLight: boolean;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IImageLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IHeatMapLayerStyleOptions {\n opacity: number;\n intensity: number;\n radius: number;\n angle: number;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n\n coverage?: number;\n}\n\nexport interface IRasterLayerStyleOptions {\n opacity: number;\n domain: [number, number];\n noDataValue: number;\n clampLow: boolean;\n clampHigh: boolean;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n}\n"],"file":"interface.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/heatmap/index.ts"],"names":["HeatMapLayer","shape","getModelType","layerModel","HeatMapModels","models","initModels","buildModels","render","layerModelNeedUpdate","forEach","model","draw","uniforms","getUninforms","properties","opacity","type","minimum","maximum","shapeAttribute","styleAttributeService","getLayerStyleAttribute","getLayerConfig","shape3d","source","getSource","sourceType","data","scale","field","indexOf","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;IAIqBA,Y;;;;;;;;;;;;;;;uFACG,c;;;;;;WAEtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAcH,KAAd,CAAJ,CAAyB,IAAzB,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WACD,wBAAsB;AAAA;;AACpB,UAAMN,KAAK,GAAG,KAAKC,YAAL,EAAd;;AACA,UAAID,KAAK,KAAK,SAAd,EAAyB;AACvB,YAAI,KAAKE,UAAT,EAAqB;AACnB,eAAKA,UAAL,CAAgBK,MAAhB;AACD;;AAED,eAAO,IAAP;AACD;;AACD,UAAI,KAAKC,oBAAT,EAA+B;AAC7B,aAAKJ,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACA,aAAKE,oBAAL,GAA4B,KAA5B;AACD;;AACD,WAAKJ,MAAL,CAAYK,OAAZ,CAAoB,UAACC,KAAD;AAAA,eAClBA,KAAK,CAACC,IAAN,CAAW;AACTC,UAAAA,QAAQ,EAAE,MAAI,CAACV,UAAL,CAAgBW,YAAhB;AADD,SAAX,CADkB;AAAA,OAApB;AAKA,aAAO,IAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,wBAA2C;AAAA;;AACzC,UAAMC,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;;AAGA,iCAAoB,KAAKC,cAAL,EAApB;AAAA,UAAQC,OAAR,wBAAQA,OAAR;;AACA,UAAMC,MAAM,GAAG,KAAKC,SAAL,EAAf;AACA,UAAMC,UAAU,GAAGF,MAAM,CAACG,IAAP,CAAYX,IAA/B;AACA,UAAMhB,KAAK,GACT,CAACmB,cAAD,aAACA,cAAD,gDAACA,cAAc,CAAES,KAAjB,0DAAC,sBAAuBC,KAAxB,KAAsD,SADxD;;AAEA,UAAI7B,KAAK,KAAK,SAAV,IAAuBA,KAAK,KAAK,WAArC,EAAkD;AAChD,eAAO,SAAP;AACD;;AACD,UAAI0B,UAAU,KAAK,SAAnB,EAA8B;AAC5B,eAAO,CAAAH,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEO,OAAT,CAAiB9B,KAAjB,OAA4B,CAAC,CAA7B,GAAiC,SAAjC,GAA6C,QAApD;AACD;;AACD,UAAI0B,UAAU,KAAK,MAAnB,EAA2B;AACzB,eAAO,CAAAH,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEO,OAAT,CAAiB9B,KAAjB,OAA4B,CAAC,CAA7B,GAAiC,MAAjC,GAA0C,QAAjD;AACD;;AACD,aAAO,SAAP;AACD;;;EA9DuC+B,mB","sourcesContent":["import { AttributeType, gl, IEncodeFeature, ILayer } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport HeatMapModels, { HeatMapModelType } from './models';\ninterface IHeatMapLayerStyleOptions {\n opacity: number;\n}\nexport default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {\n public type: string = 'HeatMapLayer';\n\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new HeatMapModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n public renderModels() {\n const shape = this.getModelType();\n if (shape === 'heatmap') {\n if (this.layerModel) {\n this.layerModel.render(); // 独立的渲染流程\n }\n\n return this;\n }\n if (this.layerModelNeedUpdate) {\n this.models = this.layerModel.buildModels();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) =>\n model.draw({\n uniforms: this.layerModel.getUninforms(),\n }),\n );\n return this;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getModelType(): HeatMapModelType {\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const { shape3d } = this.getLayerConfig();\n const source = this.getSource();\n const sourceType = source.data.type;\n const shape =\n (shapeAttribute?.scale?.field as HeatMapModelType) || 'heatmap';\n if (shape === 'heatmap' || shape === 'heatmap3d') {\n return 'heatmap';\n }\n if (sourceType === 'hexagon') {\n return shape3d?.indexOf(shape) === -1 ? 'hexagon' : 'grid3d';\n }\n if (sourceType === 'grid') {\n return shape3d?.indexOf(shape) === -1 ? 'grid' : 'grid3d';\n }\n return 'heatmap';\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/heatmap/index.ts"],"names":["HeatMapLayer","shape","getModelType","layerModel","HeatMapModels","models","initModels","buildModels","render","layerModelNeedUpdate","forEach","model","draw","uniforms","getUninforms","properties","opacity","type","minimum","maximum","shapeAttribute","styleAttributeService","getLayerStyleAttribute","getLayerConfig","shape3d","source","getSource","sourceType","data","scale","field","indexOf","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IACqBA,Y;;;;;;;;;;;;;;;uFACG,c;;;;;;WAEtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAcH,KAAd,CAAJ,CAAyB,IAAzB,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WACD,wBAAsB;AAAA;;AACpB,UAAMN,KAAK,GAAG,KAAKC,YAAL,EAAd;;AACA,UAAID,KAAK,KAAK,SAAd,EAAyB;AACvB,YAAI,KAAKE,UAAT,EAAqB;AACnB,eAAKA,UAAL,CAAgBK,MAAhB;AACD;;AAED,eAAO,IAAP;AACD;;AACD,UAAI,KAAKC,oBAAT,EAA+B;AAC7B,aAAKJ,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACA,aAAKE,oBAAL,GAA4B,KAA5B;AACD;;AACD,WAAKJ,MAAL,CAAYK,OAAZ,CAAoB,UAACC,KAAD;AAAA,eAClBA,KAAK,CAACC,IAAN,CAAW;AACTC,UAAAA,QAAQ,EAAE,MAAI,CAACV,UAAL,CAAgBW,YAAhB;AADD,SAAX,CADkB;AAAA,OAApB;AAKA,aAAO,IAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,wBAA2C;AAAA;;AACzC,UAAMC,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;;AAGA,iCAAoB,KAAKC,cAAL,EAApB;AAAA,UAAQC,OAAR,wBAAQA,OAAR;;AACA,UAAMC,MAAM,GAAG,KAAKC,SAAL,EAAf;AACA,UAAMC,UAAU,GAAGF,MAAM,CAACG,IAAP,CAAYX,IAA/B;AACA,UAAMhB,KAAK,GACT,CAACmB,cAAD,aAACA,cAAD,gDAACA,cAAc,CAAES,KAAjB,0DAAC,sBAAuBC,KAAxB,KAAsD,SADxD;;AAEA,UAAI7B,KAAK,KAAK,SAAV,IAAuBA,KAAK,KAAK,WAArC,EAAkD;AAChD,eAAO,SAAP;AACD;;AACD,UAAI0B,UAAU,KAAK,SAAnB,EAA8B;AAC5B,eAAO,CAAAH,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEO,OAAT,CAAiB9B,KAAjB,OAA4B,CAAC,CAA7B,GAAiC,SAAjC,GAA6C,QAApD;AACD;;AACD,UAAI0B,UAAU,KAAK,MAAnB,EAA2B;AACzB,eAAO,CAAAH,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEO,OAAT,CAAiB9B,KAAjB,OAA4B,CAAC,CAA7B,GAAiC,MAAjC,GAA0C,QAAjD;AACD;;AACD,aAAO,SAAP;AACD;;;EA9DuC+B,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { IHeatMapLayerStyleOptions } from '../core/interface';\nimport HeatMapModels, { HeatMapModelType } from './models';\nexport default class HeatMapLayer extends BaseLayer<IHeatMapLayerStyleOptions> {\n public type: string = 'HeatMapLayer';\n\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new HeatMapModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n public renderModels() {\n const shape = this.getModelType();\n if (shape === 'heatmap') {\n if (this.layerModel) {\n this.layerModel.render(); // 独立的渲染流程\n }\n\n return this;\n }\n if (this.layerModelNeedUpdate) {\n this.models = this.layerModel.buildModels();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) =>\n model.draw({\n uniforms: this.layerModel.getUninforms(),\n }),\n );\n return this;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getModelType(): HeatMapModelType {\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const { shape3d } = this.getLayerConfig();\n const source = this.getSource();\n const sourceType = source.data.type;\n const shape =\n (shapeAttribute?.scale?.field as HeatMapModelType) || 'heatmap';\n if (shape === 'heatmap' || shape === 'heatmap3d') {\n return 'heatmap';\n }\n if (sourceType === 'hexagon') {\n return shape3d?.indexOf(shape) === -1 ? 'hexagon' : 'grid3d';\n }\n if (sourceType === 'grid') {\n return shape3d?.indexOf(shape) === -1 ? 'grid' : 'grid3d';\n }\n return 'heatmap';\n }\n}\n"],"file":"index.js"}
@@ -19,6 +19,8 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
19
19
 
20
20
  var _l7Core = require("@antv/l7-core");
21
21
 
22
+ var _l7Utils = require("@antv/l7-utils");
23
+
22
24
  var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
23
25
 
24
26
  var _triangulation = require("../../core/triangulation");
@@ -63,6 +65,12 @@ var GridModel = function (_BaseModel) {
63
65
  }, {
64
66
  key: "buildModels",
65
67
  value: function buildModels() {
68
+ var _ref2 = this.layer.getLayerConfig(),
69
+ _ref2$mask = _ref2.mask,
70
+ mask = _ref2$mask === void 0 ? false : _ref2$mask,
71
+ _ref2$maskInside = _ref2.maskInside,
72
+ maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
73
+
66
74
  return [this.layer.buildLayerModel({
67
75
  moduleName: 'gridheatmap',
68
76
  vertexShader: heatmapGridVert,
@@ -72,7 +80,8 @@ var GridModel = function (_BaseModel) {
72
80
  enable: false
73
81
  },
74
82
  primitive: _l7Core.gl.TRIANGLES,
75
- blend: this.getBlend()
83
+ blend: this.getBlend(),
84
+ stencil: (0, _l7Utils.getMask)(mask, maskInside)
76
85
  })];
77
86
  }
78
87
  }, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/heatmap/models/grid.ts"],"names":["GridModel","layer","getLayerConfig","opacity","coverage","angle","u_opacity","u_coverage","u_angle","u_radius","getSource","data","xOffset","yOffset","buildModels","buildLayerModel","moduleName","vertexShader","heatmapGridVert","fragmentShader","heatmapGridFrag","triangulation","HeatmapGridTriangulation","depth","enable","primitive","gl","TRIANGLES","blend","getBlend","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","coordinates","version","originCoordinates","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAOA;;AACA;;;;;;;;;IAQqBA,S;;;;;;;;;;;;WACnB,wBAAqC;AACnC,iBAII,KAAKC,KAAL,CAAWC,cAAX,EAJJ;AAAA,UACEC,OADF,QACEA,OADF;AAAA,UAEEC,QAFF,QAEEA,QAFF;AAAA,UAGEC,KAHF,QAGEA,KAHF;;AAKA,aAAO;AACLC,QAAAA,SAAS,EAAEH,OAAO,IAAI,GADjB;AAELI,QAAAA,UAAU,EAAEH,QAAQ,IAAI,GAFnB;AAGLI,QAAAA,OAAO,EAAEH,KAAK,IAAI,CAHb;AAILI,QAAAA,QAAQ,EAAE,CACR,KAAKR,KAAL,CAAWS,SAAX,GAAuBC,IAAvB,CAA4BC,OADpB,EAER,KAAKX,KAAL,CAAWS,SAAX,GAAuBC,IAAvB,CAA4BE,OAFpB;AAJL,OAAP;AASD;;;WAED,sBAA8B;AAC5B,aAAO,KAAKC,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,aAAO,CACL,KAAKb,KAAL,CAAWc,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,aADa;AAEzBC,QAAAA,YAAY,EAAEC,eAFW;AAGzBC,QAAAA,cAAc,EAAEC,eAHS;AAIzBC,QAAAA,aAAa,EAAEC,uCAJU;AAKzBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SALkB;AAMzBC,QAAAA,SAAS,EAAEC,WAAGC,SANW;AAOzBC,QAAAA,KAAK,EAAE,KAAKC,QAAL;AAPkB,OAA3B,CADK,CAAP;AAWD;;;WACD,qCAAsC;AACpC,WAAKC,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,KAD0C;AAEhDC,QAAAA,IAAI,EAAEC,sBAAcC,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVJ,UAAAA,IAAI,EAAE,OADI;AAEVK,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAEZ,WAAGa,YAFJ;AAGN5B,YAAAA,IAAI,EAAE,EAHA;AAINsB,YAAAA,IAAI,EAAEP,WAAGc;AAJH,WAFE;AAQVC,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBAACC,OAAD,EAA0BC,UAA1B,EAAiD;AAEvD,gBAAMC,WAAW,GAAIF,OAAO,CAACG,OAAR,KAAoB,UAApB,GACjBH,OAAO,CAACI,iBADS,GAEjBJ,OAAO,CAACE,WAFZ;AAGA,mBAAO,CAACA,WAAW,CAAC,CAAD,CAAZ,EAAiBA,WAAW,CAAC,CAAD,CAA5B,EAAiC,CAAjC,CAAP;AACD;AAfS;AAHoC,OAAlD;AAqBD;;;EAzDoCG,mB","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport BaseModel from '../../core/BaseModel';\nimport { HeatmapGridTriangulation } from '../../core/triangulation';\nimport heatmapGridVert from '../shaders/grid_vert.glsl';\nimport heatmapGridFrag from '../shaders/hexagon_frag.glsl';\ninterface IHeatMapLayerStyleOptions {\n opacity: number;\n coverage: number;\n angle: number;\n}\nexport default class GridModel extends BaseModel {\n public getUninforms(): IModelUniform {\n const {\n opacity,\n coverage,\n angle,\n } = this.layer.getLayerConfig() as IHeatMapLayerStyleOptions;\n return {\n u_opacity: opacity || 1.0,\n u_coverage: coverage || 0.9,\n u_angle: angle || 0,\n u_radius: [\n this.layer.getSource().data.xOffset,\n this.layer.getSource().data.yOffset,\n ],\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'gridheatmap',\n vertexShader: heatmapGridVert,\n fragmentShader: heatmapGridFrag,\n triangulation: HeatmapGridTriangulation,\n depth: { enable: false },\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos', // 顶点经纬度位置\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // const coordinates = feature.coordinates as number[];\n const coordinates = (feature.version === 'GAODE2.x'\n ? feature.originCoordinates\n : feature.coordinates) as number[];\n return [coordinates[0], coordinates[1], 0];\n },\n },\n });\n }\n}\n"],"file":"grid.js"}
1
+ {"version":3,"sources":["../../../src/heatmap/models/grid.ts"],"names":["GridModel","layer","getLayerConfig","opacity","coverage","angle","u_opacity","u_coverage","u_angle","u_radius","getSource","data","xOffset","yOffset","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","heatmapGridVert","fragmentShader","heatmapGridFrag","triangulation","HeatmapGridTriangulation","depth","enable","primitive","gl","TRIANGLES","blend","getBlend","stencil","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","coordinates","version","originCoordinates","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAOA;;AACA;;AAEA;;;;;;;;;IAGqBA,S;;;;;;;;;;;;WACnB,wBAAqC;AACnC,iBAII,KAAKC,KAAL,CAAWC,cAAX,EAJJ;AAAA,UACEC,OADF,QACEA,OADF;AAAA,UAEEC,QAFF,QAEEA,QAFF;AAAA,UAGEC,KAHF,QAGEA,KAHF;;AAKA,aAAO;AACLC,QAAAA,SAAS,EAAEH,OAAO,IAAI,GADjB;AAELI,QAAAA,UAAU,EAAEH,QAAQ,IAAI,GAFnB;AAGLI,QAAAA,OAAO,EAAEH,KAAK,IAAI,CAHb;AAILI,QAAAA,QAAQ,EAAE,CACR,KAAKR,KAAL,CAAWS,SAAX,GAAuBC,IAAvB,CAA4BC,OADpB,EAER,KAAKX,KAAL,CAAWS,SAAX,GAAuBC,IAAvB,CAA4BE,OAFpB;AAJL,OAAP;AASD;;;WAED,sBAA8B;AAC5B,aAAO,KAAKC,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,kBAGI,KAAKb,KAAL,CAAWC,cAAX,EAHJ;AAAA,6BACEa,IADF;AAAA,UACEA,IADF,2BACS,KADT;AAAA,mCAEEC,UAFF;AAAA,UAEEA,UAFF,iCAEe,IAFf;;AAIA,aAAO,CACL,KAAKf,KAAL,CAAWgB,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,aADa;AAEzBC,QAAAA,YAAY,EAAEC,eAFW;AAGzBC,QAAAA,cAAc,EAAEC,eAHS;AAIzBC,QAAAA,aAAa,EAAEC,uCAJU;AAKzBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SALkB;AAMzBC,QAAAA,SAAS,EAAEC,WAAGC,SANW;AAOzBC,QAAAA,KAAK,EAAE,KAAKC,QAAL,EAPkB;AAQzBC,QAAAA,OAAO,EAAE,sBAAQjB,IAAR,EAAcC,UAAd;AARgB,OAA3B,CADK,CAAP;AAYD;;;WACD,qCAAsC;AACpC,WAAKiB,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,KAD0C;AAEhDC,QAAAA,IAAI,EAAEC,sBAAcC,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVJ,UAAAA,IAAI,EAAE,OADI;AAEVK,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAEb,WAAGc,YAFJ;AAGN/B,YAAAA,IAAI,EAAE,EAHA;AAINyB,YAAAA,IAAI,EAAER,WAAGe;AAJH,WAFE;AAQVC,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBAACC,OAAD,EAA0BC,UAA1B,EAAiD;AAEvD,gBAAMC,WAAW,GAAIF,OAAO,CAACG,OAAR,KAAoB,UAApB,GACjBH,OAAO,CAACI,iBADS,GAEjBJ,OAAO,CAACE,WAFZ;AAGA,mBAAO,CAACA,WAAW,CAAC,CAAD,CAAZ,EAAiBA,WAAW,CAAC,CAAD,CAA5B,EAAiC,CAAjC,CAAP;AACD;AAfS;AAHoC,OAAlD;AAqBD;;;EA9DoCG,mB","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IHeatMapLayerStyleOptions } from '../../core/interface';\nimport { HeatmapGridTriangulation } from '../../core/triangulation';\nimport heatmapGridVert from '../shaders/grid_vert.glsl';\nimport heatmapGridFrag from '../shaders/hexagon_frag.glsl';\nexport default class GridModel extends BaseModel {\n public getUninforms(): IModelUniform {\n const {\n opacity,\n coverage,\n angle,\n } = this.layer.getLayerConfig() as IHeatMapLayerStyleOptions;\n return {\n u_opacity: opacity || 1.0,\n u_coverage: coverage || 0.9,\n u_angle: angle || 0,\n u_radius: [\n this.layer.getSource().data.xOffset,\n this.layer.getSource().data.yOffset,\n ],\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IHeatMapLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'gridheatmap',\n vertexShader: heatmapGridVert,\n fragmentShader: heatmapGridFrag,\n triangulation: HeatmapGridTriangulation,\n depth: { enable: false },\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos', // 顶点经纬度位置\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // const coordinates = feature.coordinates as number[];\n const coordinates = (feature.version === 'GAODE2.x'\n ? feature.originCoordinates\n : feature.coordinates) as number[];\n return [coordinates[0], coordinates[1], 0];\n },\n },\n });\n }\n}\n"],"file":"grid.js"}
@@ -19,6 +19,8 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
19
19
 
20
20
  var _l7Core = require("@antv/l7-core");
21
21
 
22
+ var _l7Utils = require("@antv/l7-utils");
23
+
22
24
  var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
23
25
 
24
26
  var _triangulation = require("../../core/triangulation");
@@ -63,6 +65,12 @@ var Grid3DModel = function (_BaseModel) {
63
65
  }, {
64
66
  key: "buildModels",
65
67
  value: function buildModels() {
68
+ var _ref2 = this.layer.getLayerConfig(),
69
+ _ref2$mask = _ref2.mask,
70
+ mask = _ref2$mask === void 0 ? false : _ref2$mask,
71
+ _ref2$maskInside = _ref2.maskInside,
72
+ maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
73
+
66
74
  return [this.layer.buildLayerModel({
67
75
  moduleName: 'grid3dheatmap',
68
76
  vertexShader: heatmapGrid3dVert,
@@ -71,7 +79,8 @@ var Grid3DModel = function (_BaseModel) {
71
79
  depth: {
72
80
  enable: true
73
81
  },
74
- blend: this.getBlend()
82
+ blend: this.getBlend(),
83
+ stencil: (0, _l7Utils.getMask)(mask, maskInside)
75
84
  })];
76
85
  }
77
86
  }, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/heatmap/models/grid3d.ts"],"names":["Grid3DModel","layer","getLayerConfig","opacity","coverage","angle","u_opacity","u_coverage","u_angle","u_radius","getSource","data","xOffset","yOffset","buildModels","buildLayerModel","moduleName","vertexShader","heatmapGrid3dVert","fragmentShader","heatmapGridFrag","triangulation","PointExtrudeTriangulation","depth","enable","blend","getBlend","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","gl","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","normal","coordinates","version","originCoordinates","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { aProjectFlat, Satistics, unProjectFlat } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport heatmapGrid3dVert from '../shaders/hexagon_3d_vert.glsl';\nimport heatmapGridFrag from '../shaders/hexagon_frag.glsl';\ninterface IHeatMapLayerStyleOptions {\n opacity: number;\n coverage: number;\n angle: number;\n}\nexport default class Grid3DModel extends BaseModel {\n public getUninforms(): IModelUniform {\n const {\n opacity,\n coverage,\n angle,\n } = this.layer.getLayerConfig() as IHeatMapLayerStyleOptions;\n return {\n u_opacity: opacity || 1.0,\n u_coverage: coverage || 1.0,\n u_angle: angle || 0,\n u_radius: [\n this.layer.getSource().data.xOffset,\n this.layer.getSource().data.yOffset,\n ],\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'grid3dheatmap',\n vertexShader: heatmapGrid3dVert,\n fragmentShader: heatmapGridFrag,\n triangulation: PointExtrudeTriangulation,\n depth: { enable: true },\n blend: this.getBlend(),\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos', // 顶点经纬度位置\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = (feature.version === 'GAODE2.x'\n ? feature.originCoordinates\n : feature.coordinates) as number[];\n // const coordinates = feature.coordinates as number[];\n // const coordinates = feature.originCoordinates as number[];\n return [coordinates[0], coordinates[1], 0];\n },\n },\n });\n }\n}\n"],"file":"grid3d.js"}
1
+ {"version":3,"sources":["../../../src/heatmap/models/grid3d.ts"],"names":["Grid3DModel","layer","getLayerConfig","opacity","coverage","angle","u_opacity","u_coverage","u_angle","u_radius","getSource","data","xOffset","yOffset","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","heatmapGrid3dVert","fragmentShader","heatmapGridFrag","triangulation","PointExtrudeTriangulation","depth","enable","blend","getBlend","stencil","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","gl","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","normal","coordinates","version","originCoordinates","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IHeatMapLayerStyleOptions } from '../../core/interface';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport heatmapGrid3dVert from '../shaders/hexagon_3d_vert.glsl';\nimport heatmapGridFrag from '../shaders/hexagon_frag.glsl';\nexport default class Grid3DModel extends BaseModel {\n public getUninforms(): IModelUniform {\n const {\n opacity,\n coverage,\n angle,\n } = this.layer.getLayerConfig() as IHeatMapLayerStyleOptions;\n return {\n u_opacity: opacity || 1.0,\n u_coverage: coverage || 1.0,\n u_angle: angle || 0,\n u_radius: [\n this.layer.getSource().data.xOffset,\n this.layer.getSource().data.yOffset,\n ],\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IHeatMapLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'grid3dheatmap',\n vertexShader: heatmapGrid3dVert,\n fragmentShader: heatmapGridFrag,\n triangulation: PointExtrudeTriangulation,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos', // 顶点经纬度位置\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = (feature.version === 'GAODE2.x'\n ? feature.originCoordinates\n : feature.coordinates) as number[];\n // const coordinates = feature.coordinates as number[];\n // const coordinates = feature.originCoordinates as number[];\n return [coordinates[0], coordinates[1], 0];\n },\n },\n });\n }\n}\n"],"file":"grid3d.js"}
@@ -212,6 +212,12 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = function
212
212
  }, {
213
213
  key: "buildHeatmapColor",
214
214
  value: function buildHeatmapColor() {
215
+ var _ref = this.layer.getLayerConfig(),
216
+ _ref$mask = _ref.mask,
217
+ mask = _ref$mask === void 0 ? false : _ref$mask,
218
+ _ref$maskInside = _ref.maskInside,
219
+ maskInside = _ref$maskInside === void 0 ? true : _ref$maskInside;
220
+
215
221
  this.shaderModuleService.registerModule('heatmapColor', {
216
222
  vs: heatmapColorVert,
217
223
  fs: heatmapColorFrag
@@ -256,18 +262,19 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = function
256
262
  data: [0, 2, 1, 2, 3, 1],
257
263
  type: _l7Core.gl.UNSIGNED_INT,
258
264
  count: 6
259
- })
265
+ }),
266
+ stencil: (0, _l7Utils.getMask)(mask, maskInside)
260
267
  });
261
268
  }
262
269
  }, {
263
270
  key: "drawIntensityMode",
264
271
  value: function drawIntensityMode() {
265
- var _ref = this.layer.getLayerConfig(),
266
- opacity = _ref.opacity,
267
- _ref$intensity = _ref.intensity,
268
- intensity = _ref$intensity === void 0 ? 10 : _ref$intensity,
269
- _ref$radius = _ref.radius,
270
- radius = _ref$radius === void 0 ? 5 : _ref$radius;
272
+ var _ref2 = this.layer.getLayerConfig(),
273
+ opacity = _ref2.opacity,
274
+ _ref2$intensity = _ref2.intensity,
275
+ intensity = _ref2$intensity === void 0 ? 10 : _ref2$intensity,
276
+ _ref2$radius = _ref2.radius,
277
+ radius = _ref2$radius === void 0 ? 5 : _ref2$radius;
271
278
 
272
279
  this.intensityModel.draw({
273
280
  uniforms: {
@@ -280,8 +287,8 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = function
280
287
  }, {
281
288
  key: "drawColorMode",
282
289
  value: function drawColorMode() {
283
- var _ref2 = this.layer.getLayerConfig(),
284
- opacity = _ref2.opacity;
290
+ var _ref3 = this.layer.getLayerConfig(),
291
+ opacity = _ref3.opacity;
285
292
 
286
293
  this.colorModel.draw({
287
294
  uniforms: {
@@ -294,8 +301,8 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = function
294
301
  }, {
295
302
  key: "draw3DHeatMap",
296
303
  value: function draw3DHeatMap() {
297
- var _ref3 = this.layer.getLayerConfig(),
298
- opacity = _ref3.opacity;
304
+ var _ref4 = this.layer.getLayerConfig(),
305
+ opacity = _ref4.opacity;
299
306
 
300
307
  var invert = _glMatrix.mat4.create();
301
308
 
@@ -314,6 +321,12 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = function
314
321
  }, {
315
322
  key: "build3dHeatMap",
316
323
  value: function build3dHeatMap() {
324
+ var _ref5 = this.layer.getLayerConfig(),
325
+ _ref5$mask = _ref5.mask,
326
+ mask = _ref5$mask === void 0 ? false : _ref5$mask,
327
+ _ref5$maskInside = _ref5.maskInside,
328
+ maskInside = _ref5$maskInside === void 0 ? true : _ref5$maskInside;
329
+
317
330
  var getViewportSize = this.rendererService.getViewportSize;
318
331
 
319
332
  var _getViewportSize2 = getViewportSize(),
@@ -373,7 +386,8 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = function
373
386
  data: triangulation.indices,
374
387
  type: _l7Core.gl.UNSIGNED_INT,
375
388
  count: triangulation.indices.length
376
- })
389
+ }),
390
+ stencil: (0, _l7Utils.getMask)(mask, maskInside)
377
391
  });
378
392
  }
379
393
  }, {
@@ -390,8 +404,8 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = function
390
404
  this.texture.destroy();
391
405
  }
392
406
 
393
- var _ref4 = this.layer.getLayerConfig(),
394
- rampColors = _ref4.rampColors;
407
+ var _ref6 = this.layer.getLayerConfig(),
408
+ rampColors = _ref6.rampColors;
395
409
 
396
410
  var imageData = (0, _l7Utils.generateColorRamp)(rampColors);
397
411
  this.colorTexture = createTexture2D({