@antv/l7-layers 2.8.35 → 2.8.38

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 (196) hide show
  1. package/es/Geometry/models/billboard.d.ts +0 -3
  2. package/es/Geometry/models/billboard.js +0 -9
  3. package/es/Geometry/models/billboard.js.map +1 -1
  4. package/es/Geometry/models/sprite.js +2 -2
  5. package/es/core/BaseLayer.d.ts +2 -2
  6. package/es/core/BaseLayer.js.map +1 -1
  7. package/es/core/LayerGroup.d.ts +2 -1
  8. package/es/core/LayerGroup.js +5 -0
  9. package/es/core/LayerGroup.js.map +1 -1
  10. package/es/core/interface.d.ts +25 -2
  11. package/es/core/interface.js.map +1 -1
  12. package/es/image/models/image.js.map +1 -1
  13. package/es/index.d.ts +2 -2
  14. package/es/index.js +2 -2
  15. package/es/index.js.map +1 -1
  16. package/es/line/models/arc.js +4 -4
  17. package/es/line/models/arc.js.map +1 -1
  18. package/es/line/models/arc_3d.js +4 -5
  19. package/es/line/models/arc_3d.js.map +1 -1
  20. package/es/line/models/arcmini.js +5 -5
  21. package/es/line/models/arcmini.js.map +1 -1
  22. package/es/line/models/great_circle.js +3 -3
  23. package/es/line/models/great_circle.js.map +1 -1
  24. package/es/line/models/line.js +3 -3
  25. package/es/line/models/line.js.map +1 -1
  26. package/es/line/models/linearline.js +3 -3
  27. package/es/line/models/linearline.js.map +1 -1
  28. package/es/line/models/simpleLine.js +8 -8
  29. package/es/line/models/simpleLine.js.map +1 -1
  30. package/es/line/models/wall.js +5 -5
  31. package/es/line/models/wall.js.map +1 -1
  32. package/es/mask/index.d.ts +1 -4
  33. package/es/mask/index.js.map +1 -1
  34. package/es/mask/models/fill.js.map +1 -1
  35. package/es/plugins/DataMappingPlugin.d.ts +1 -0
  36. package/es/plugins/DataMappingPlugin.js +17 -9
  37. package/es/plugins/DataMappingPlugin.js.map +1 -1
  38. package/es/plugins/FeatureScalePlugin.d.ts +1 -2
  39. package/es/plugins/FeatureScalePlugin.js +42 -33
  40. package/es/plugins/FeatureScalePlugin.js.map +1 -1
  41. package/es/plugins/ShaderUniformPlugin.d.ts +1 -0
  42. package/es/plugins/ShaderUniformPlugin.js +12 -0
  43. package/es/plugins/ShaderUniformPlugin.js.map +1 -1
  44. package/es/point/models/extrude.js +3 -4
  45. package/es/point/models/extrude.js.map +1 -1
  46. package/es/point/models/fill.js +3 -4
  47. package/es/point/models/fill.js.map +1 -1
  48. package/es/point/models/fillmage.d.ts +1 -1
  49. package/es/point/models/fillmage.js +6 -21
  50. package/es/point/models/fillmage.js.map +1 -1
  51. package/es/point/models/icon-font.js +1 -1
  52. package/es/point/models/image.js +4 -4
  53. package/es/point/models/image.js.map +1 -1
  54. package/es/point/models/normal.js +1 -2
  55. package/es/point/models/normal.js.map +1 -1
  56. package/es/point/models/radar.js +5 -18
  57. package/es/point/models/radar.js.map +1 -1
  58. package/es/point/models/simplePoint.js +5 -6
  59. package/es/point/models/simplePoint.js.map +1 -1
  60. package/es/point/models/text.js +4 -4
  61. package/es/point/models/text.js.map +1 -1
  62. package/es/polygon/models/extrude.js +3 -4
  63. package/es/polygon/models/extrude.js.map +1 -1
  64. package/es/polygon/models/fill.d.ts +1 -0
  65. package/es/polygon/models/fill.js +37 -12
  66. package/es/polygon/models/fill.js.map +1 -1
  67. package/es/polygon/models/ocean.js +3 -4
  68. package/es/polygon/models/ocean.js.map +1 -1
  69. package/es/polygon/models/water.js +3 -4
  70. package/es/polygon/models/water.js.map +1 -1
  71. package/es/raster/index.d.ts +3 -3
  72. package/es/raster/index.js +16 -6
  73. package/es/raster/index.js.map +1 -1
  74. package/es/raster/models/index.d.ts +1 -1
  75. package/es/raster/models/index.js +3 -1
  76. package/es/raster/models/index.js.map +1 -1
  77. package/es/raster/models/raste-tile.d.ts +23 -0
  78. package/es/raster/models/raste-tile.js +285 -0
  79. package/es/raster/models/raste-tile.js.map +1 -0
  80. package/es/raster/models/raster.js +2 -0
  81. package/es/raster/models/raster.js.map +1 -1
  82. package/es/wind/index.d.ts +1 -17
  83. package/es/wind/index.js.map +1 -1
  84. package/es/wind/models/utils.d.ts +12 -12
  85. package/es/wind/models/utils.js +6 -5
  86. package/es/wind/models/utils.js.map +1 -1
  87. package/es/wind/models/wind.js.map +1 -1
  88. package/es/wind/models/windRender.js.map +1 -1
  89. package/lib/Geometry/models/billboard.js +0 -6
  90. package/lib/Geometry/models/billboard.js.map +1 -1
  91. package/lib/Geometry/models/sprite.js +2 -2
  92. package/lib/core/BaseLayer.js.map +1 -1
  93. package/lib/core/LayerGroup.js +5 -0
  94. package/lib/core/LayerGroup.js.map +1 -1
  95. package/lib/core/interface.js.map +1 -1
  96. package/lib/image/models/image.js.map +1 -1
  97. package/lib/index.js +29 -8
  98. package/lib/index.js.map +1 -1
  99. package/lib/line/models/arc.js +4 -5
  100. package/lib/line/models/arc.js.map +1 -1
  101. package/lib/line/models/arc_3d.js +4 -6
  102. package/lib/line/models/arc_3d.js.map +1 -1
  103. package/lib/line/models/arcmini.js +5 -6
  104. package/lib/line/models/arcmini.js.map +1 -1
  105. package/lib/line/models/great_circle.js +3 -4
  106. package/lib/line/models/great_circle.js.map +1 -1
  107. package/lib/line/models/line.js +3 -4
  108. package/lib/line/models/line.js.map +1 -1
  109. package/lib/line/models/linearline.js +3 -4
  110. package/lib/line/models/linearline.js.map +1 -1
  111. package/lib/line/models/simpleLine.js +8 -9
  112. package/lib/line/models/simpleLine.js.map +1 -1
  113. package/lib/line/models/wall.js +5 -6
  114. package/lib/line/models/wall.js.map +1 -1
  115. package/lib/mask/index.js.map +1 -1
  116. package/lib/mask/models/fill.js.map +1 -1
  117. package/lib/plugins/DataMappingPlugin.js +17 -9
  118. package/lib/plugins/DataMappingPlugin.js.map +1 -1
  119. package/lib/plugins/FeatureScalePlugin.js +43 -33
  120. package/lib/plugins/FeatureScalePlugin.js.map +1 -1
  121. package/lib/plugins/ShaderUniformPlugin.js +12 -0
  122. package/lib/plugins/ShaderUniformPlugin.js.map +1 -1
  123. package/lib/point/models/extrude.js +3 -5
  124. package/lib/point/models/extrude.js.map +1 -1
  125. package/lib/point/models/fill.js +3 -5
  126. package/lib/point/models/fill.js.map +1 -1
  127. package/lib/point/models/fillmage.js +7 -23
  128. package/lib/point/models/fillmage.js.map +1 -1
  129. package/lib/point/models/icon-font.js +1 -1
  130. package/lib/point/models/image.js +4 -5
  131. package/lib/point/models/image.js.map +1 -1
  132. package/lib/point/models/normal.js +1 -3
  133. package/lib/point/models/normal.js.map +1 -1
  134. package/lib/point/models/radar.js +5 -19
  135. package/lib/point/models/radar.js.map +1 -1
  136. package/lib/point/models/simplePoint.js +5 -7
  137. package/lib/point/models/simplePoint.js.map +1 -1
  138. package/lib/point/models/text.js +4 -5
  139. package/lib/point/models/text.js.map +1 -1
  140. package/lib/polygon/models/extrude.js +3 -5
  141. package/lib/polygon/models/extrude.js.map +1 -1
  142. package/lib/polygon/models/fill.js +37 -13
  143. package/lib/polygon/models/fill.js.map +1 -1
  144. package/lib/polygon/models/ocean.js +3 -5
  145. package/lib/polygon/models/ocean.js.map +1 -1
  146. package/lib/polygon/models/water.js +3 -5
  147. package/lib/polygon/models/water.js.map +1 -1
  148. package/lib/raster/index.js +16 -6
  149. package/lib/raster/index.js.map +1 -1
  150. package/lib/raster/models/index.js +4 -1
  151. package/lib/raster/models/index.js.map +1 -1
  152. package/lib/raster/models/raste-tile.js +294 -0
  153. package/lib/raster/models/raste-tile.js.map +1 -0
  154. package/lib/raster/models/raster.js +2 -0
  155. package/lib/raster/models/raster.js.map +1 -1
  156. package/lib/wind/index.js.map +1 -1
  157. package/lib/wind/models/utils.js +6 -5
  158. package/lib/wind/models/utils.js.map +1 -1
  159. package/lib/wind/models/wind.js.map +1 -1
  160. package/lib/wind/models/windRender.js.map +1 -1
  161. package/package.json +7 -6
  162. package/es/imagetile/index.d.ts +0 -22
  163. package/es/imagetile/index.js +0 -82
  164. package/es/imagetile/index.js.map +0 -1
  165. package/es/imagetile/models/imagetile.d.ts +0 -12
  166. package/es/imagetile/models/imagetile.js +0 -133
  167. package/es/imagetile/models/imagetile.js.map +0 -1
  168. package/es/imagetile/models/index.d.ts +0 -5
  169. package/es/imagetile/models/index.js +0 -6
  170. package/es/imagetile/models/index.js.map +0 -1
  171. package/es/imagetile/utils/ImageTile.d.ts +0 -20
  172. package/es/imagetile/utils/ImageTile.js +0 -92
  173. package/es/imagetile/utils/ImageTile.js.map +0 -1
  174. package/es/imagetile/utils/Tile.d.ts +0 -27
  175. package/es/imagetile/utils/Tile.js +0 -313
  176. package/es/imagetile/utils/Tile.js.map +0 -1
  177. package/es/imagetile/utils/lruCache.d.ts +0 -20
  178. package/es/imagetile/utils/lruCache.js +0 -105
  179. package/es/imagetile/utils/lruCache.js.map +0 -1
  180. package/es/imagetile/utils/tileCache.d.ts +0 -8
  181. package/es/imagetile/utils/tileCache.js +0 -50
  182. package/es/imagetile/utils/tileCache.js.map +0 -1
  183. package/lib/imagetile/index.js +0 -95
  184. package/lib/imagetile/index.js.map +0 -1
  185. package/lib/imagetile/models/imagetile.js +0 -146
  186. package/lib/imagetile/models/imagetile.js.map +0 -1
  187. package/lib/imagetile/models/index.js +0 -17
  188. package/lib/imagetile/models/index.js.map +0 -1
  189. package/lib/imagetile/utils/ImageTile.js +0 -101
  190. package/lib/imagetile/utils/ImageTile.js.map +0 -1
  191. package/lib/imagetile/utils/Tile.js +0 -316
  192. package/lib/imagetile/utils/Tile.js.map +0 -1
  193. package/lib/imagetile/utils/lruCache.js +0 -109
  194. package/lib/imagetile/utils/lruCache.js.map +0 -1
  195. package/lib/imagetile/utils/tileCache.js +0 -58
  196. package/lib/imagetile/utils/tileCache.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","maskLayer","masks","push","layerIndex","indexOf","splice","destroy","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","layerType","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","enableMultiPassRenderer","passes","length","on","renderLayers","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","emit","target","type","data","attributes","elements","models","map","m","updateAttributesAndElements","console","warn","option","layerModel","createModelData","calEncodeData","calculateEncodeData","triangulation","createAttributesAndIndices","undefined","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","shapeOption","options","rawAnimate","setSource","sourceOption","clusterZoom","layerSource","setData","currentSource","getSource","source","Source","sourceEvent","lastConfig","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","mask","clearModels","buildModels","cfg","scaleOptions","rendering","getEncodedData","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","clearCanvas","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","enableMultiPass","currentPasses","setRenderFlag","getViewportSize","width","height","resize","extent","isValid","some","v","Math","abs","isDestroied","layerChildren","child","off","clearAllAttributes","cleanRemove","removeAllListeners","model","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","invertExtent","items","range","item","value","ticks","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","BlendTypes","BlendType","normal","createAttributes","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","isVisible","Error","isPicking","renderUpdate","draw","getUninforms","getShaderPickStat","time","valuesOrCallback","defaultValues","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 IAttrubuteAndElements,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n ILegendClassificaItem,\n ILegendSegmentItem,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n lazyInject,\n LegendItems,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n Triangulation,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isEqual, isFunction, isObject, isUndefined } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport { calculateData } from '../utils/layerData';\nimport {\n createMultiPassRenderer,\n normalizePasses,\n} from '../utils/multiPassRender';\nimport { updateShape } from '../utils/updateShape';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n public layerType?: string | undefined;\n public isLayerGroup: boolean = false;\n public triangulation?: Triangulation | undefined;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n public shapeOption: {\n field: any;\n values: any;\n };\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n public masks: 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 addMaskLayer(maskLayer: ILayer) {\n this.masks.push(maskLayer);\n }\n\n public removeMaskLayer(maskLayer: ILayer) {\n const layerIndex = this.masks.indexOf(maskLayer);\n if (layerIndex > -1) {\n this.masks.splice(layerIndex, 1);\n }\n maskLayer.destroy();\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n this.layerType = this.rawConfig.layerType;\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n const { enableMultiPassRenderer, passes } = this.getLayerConfig();\n if (enableMultiPassRenderer && passes?.length && passes.length > 0) {\n // Tip: 兼容 multiPassRender 在 amap1 时存在的图层不同步问题 zoom\n this.mapService.on('mapAfterFrameChange', () => {\n this.renderLayers();\n });\n }\n\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n\n return this;\n }\n\n public updateModelData(data: IAttrubuteAndElements) {\n if (data.attributes && data.elements) {\n this.models.map((m) => {\n m.updateAttributesAndElements(data.attributes, data.elements);\n });\n } else {\n console.warn('data error');\n }\n }\n\n public createModelData(data: any, option?: ISourceCFG) {\n if (this.layerModel.createModelData) {\n // 在某些特殊图层中单独构建 attribute & elements\n return this.layerModel.createModelData(option);\n }\n const calEncodeData = this.calculateEncodeData(data, option);\n const triangulation = this.triangulation;\n\n if (calEncodeData && triangulation) {\n return this.styleAttributeService.createAttributesAndIndices(\n calEncodeData,\n triangulation,\n );\n } else {\n return {\n attributes: undefined,\n elements: undefined,\n };\n }\n }\n\n public calculateEncodeData(data: any, option?: ISourceCFG) {\n if (this.inited) {\n return calculateData(\n this,\n this.fontService,\n this.mapService,\n this.styleAttributeService,\n data,\n option,\n );\n } else {\n console.warn('layer not inited!');\n return null;\n }\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.shapeOption = {\n field,\n values,\n };\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n const currentSource = this.getSource();\n if (!currentSource) {\n // 执行 setData 的时候 source 还不存在(还未执行 addLayer)\n this.source(new Source(data, options));\n this.sourceEvent();\n } else {\n this.layerSource.setData(data, options);\n }\n // this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const lastConfig = this.getLayerConfig();\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\n // @ts-ignore\n if (lastConfig && lastConfig.mask === true && options.mask === false) {\n this.clearModels();\n this.models = this.layerModel.buildModels();\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): ILayer {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n return this;\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n if (this.type === 'CanvasLayer' && this.layerModel.clearCanvas) {\n // 对 canvasLayer 的 hide 操作做特殊处理\n this.layerModel.clearCanvas();\n }\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMultiPass(\n enableMultiPass: boolean,\n currentPasses?: Array<string | [string, { [key: string]: unknown }]>,\n ) {\n this.updateLayerConfig({\n enableMultiPassRenderer: enableMultiPass,\n });\n if (currentPasses) {\n this.updateLayerConfig({\n passes: currentPasses,\n });\n }\n\n if (enableMultiPass) {\n const { passes = [] } = this.getLayerConfig();\n this.multiPassRenderer = createMultiPassRenderer(\n this,\n passes,\n this.postProcessingPassFactory,\n this.normalPassFactory,\n );\n this.multiPassRenderer.setRenderFlag(true);\n const { width, height } = this.rendererService.getViewportSize();\n this.multiPassRenderer.resize(width, height);\n }\n\n return this;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n\n public setAutoFit(autoFit: boolean): ILayer {\n this.updateLayerConfig({\n autoFit,\n });\n return this;\n }\n\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n if (this.isDestroied) {\n return;\n }\n\n // remove child layer\n this.layerChildren.map((child: ILayer) => child.destroy());\n this.layerChildren = [];\n\n // remove mask list\n this.masks.map((mask: ILayer) => mask.destroy());\n this.masks = [];\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 this.models = [];\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): LegendItems {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n\n // 函数自定义映射,没有 scale 返回为空数组\n if (!scale) {\n return [];\n }\n\n if (scale.invertExtent) {\n // 分段类型 Quantize、Quantile、Threshold\n const items: ILegendSegmentItem[] = scale.range().map((item: number) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n\n return items;\n } else if (scale.ticks) {\n // 连续类型 Continuous (Linear, Power, Log, Identity, Time)\n const items: ILegendClassificaItem[] = scale\n .ticks()\n .map((item: string) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n\n return items;\n } else if (scale?.domain) {\n // 枚举类型 Cat\n const items: ILegendClassificaItem[] = scale\n .domain()\n .filter((item: string | number | undefined) => !isUndefined(item))\n .map((item: string | number) => {\n return {\n value: item,\n [name]: scale(item) as string,\n };\n });\n\n return items;\n }\n\n return [];\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public createAttrubutes(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ) {\n const { triangulation } = options;\n // @ts-ignore\n const { attributes } = this.styleAttributeService.createAttributes(\n this.encodedData,\n triangulation,\n );\n return attributes;\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n if (this.layerModel.renderUpdate) {\n this.layerModel.renderUpdate();\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件 迁移到 DataMappingPlugin generateMapping,保证在重新重新映射后触发\n // this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
1
+ {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","maskLayer","masks","push","layerIndex","indexOf","splice","destroy","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","color","bottomColor","plugin","plugins","layerType","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","enableMultiPassRenderer","passes","length","on","renderLayers","cameraService","ICameraService","coordinateService","ICoordinateSystemService","shaderModuleService","IShaderModuleService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","emit","target","type","data","attributes","elements","models","map","m","updateAttributesAndElements","console","warn","option","layerModel","createModelData","calEncodeData","calculateEncodeData","triangulation","createAttributesAndIndices","undefined","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","getLayerStyleAttribute","currentShape","shapeOption","options","rawAnimate","setSource","sourceOption","clusterZoom","layerSource","setData","currentSource","getSource","source","Source","sourceEvent","lastConfig","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","mask","clearModels","buildModels","cfg","scaleOptions","rendering","getEncodedData","renderModels","getRenderFlag","render","activeOption","enableHighlight","highlightColor","mix","activeMix","x","y","pick","pickedFeatureID","then","setTimeout","enableSelect","selectColor","selectMix","blend","layerModelNeedUpdate","visible","clearCanvas","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","enableMultiPass","currentPasses","setRenderFlag","getViewportSize","width","height","resize","extent","isValid","some","v","Math","abs","isDestroied","layerChildren","child","off","clearAllAttributes","cleanRemove","removeAllListeners","model","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","invertExtent","items","range","item","value","ticks","domain","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","segmentNumber","registerModule","vs","fs","getModule","uniforms","createModel","BlendTypes","BlendType","normal","createAttributes","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","isVisible","Error","isPicking","renderUpdate","draw","getUninforms","getShaderPickStat","time","valuesOrCallback","defaultValues","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 IAttrubuteAndElements,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n ILegendClassificaItem,\n ILegendSegmentItem,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n LayerEventType,\n lazyInject,\n LegendItems,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n Triangulation,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isFunction, isObject, isUndefined } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport { calculateData } from '../utils/layerData';\nimport {\n createMultiPassRenderer,\n normalizePasses,\n} from '../utils/multiPassRender';\nimport { updateShape } from '../utils/updateShape';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}>\n extends EventEmitter<LayerEventType>\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n public clusterZoom: number = 0; // 聚合等级标记\n public layerType?: string | undefined;\n public isLayerGroup: boolean = false;\n public triangulation?: Triangulation | undefined;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n public shapeOption: {\n field: any;\n values: any;\n };\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n public masks: 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 addMaskLayer(maskLayer: ILayer) {\n this.masks.push(maskLayer);\n }\n\n public removeMaskLayer(maskLayer: ILayer) {\n const layerIndex = this.masks.indexOf(maskLayer);\n if (layerIndex > -1) {\n this.masks.splice(layerIndex, 1);\n }\n maskLayer.destroy();\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public setBottomColor(color: string) {\n this.bottomColor = color;\n }\n\n public getBottomColor() {\n return this.bottomColor;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n // const { enableMultiPassRenderer = false } = this.rawConfig;\n // this.configService.setLayerConfig(sceneId, this.id, {\n // enableMultiPassRenderer,\n // });\n this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);\n this.layerType = this.rawConfig.layerType;\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n const { enableMultiPassRenderer, passes } = this.getLayerConfig();\n if (enableMultiPassRenderer && passes?.length && passes.length > 0) {\n // Tip: 兼容 multiPassRender 在 amap1 时存在的图层不同步问题 zoom\n this.mapService.on('mapAfterFrameChange', () => {\n this.renderLayers();\n });\n }\n\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.shaderModuleService = this.container.get<IShaderModuleService>(\n TYPES.IShaderModuleService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n\n return this;\n }\n\n public updateModelData(data: IAttrubuteAndElements) {\n if (data.attributes && data.elements) {\n this.models.map((m) => {\n m.updateAttributesAndElements(data.attributes, data.elements);\n });\n } else {\n console.warn('data error');\n }\n }\n\n public createModelData(data: any, option?: ISourceCFG) {\n if (this.layerModel.createModelData) {\n // 在某些特殊图层中单独构建 attribute & elements\n return this.layerModel.createModelData(option);\n }\n const calEncodeData = this.calculateEncodeData(data, option);\n const triangulation = this.triangulation;\n\n if (calEncodeData && triangulation) {\n return this.styleAttributeService.createAttributesAndIndices(\n calEncodeData,\n triangulation,\n );\n } else {\n return {\n attributes: undefined,\n elements: undefined,\n };\n }\n }\n\n public calculateEncodeData(data: any, option?: ISourceCFG) {\n if (this.inited) {\n return calculateData(\n this,\n this.fontService,\n this.mapService,\n this.styleAttributeService,\n data,\n option,\n );\n } else {\n console.warn('layer not inited!');\n return null;\n }\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n const lastShape = this.styleAttributeService?.getLayerStyleAttribute(\n 'shape',\n )?.scale?.field;\n const currentShape = field;\n this.shapeOption = {\n field,\n values,\n };\n this.updateStyleAttribute('shape', field, values, updateOptions);\n // TODO: 根据 shape 判断是否需要更新 model\n updateShape(this, lastShape, currentShape);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n this.clusterZoom = 0;\n return this;\n }\n\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n const currentSource = this.getSource();\n if (!currentSource) {\n // 执行 setData 的时候 source 还不存在(还未执行 addLayer)\n this.source(new Source(data, options));\n this.sourceEvent();\n } else {\n this.layerSource.setData(data, options);\n }\n // this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const lastConfig = this.getLayerConfig();\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\n // @ts-ignore\n if (lastConfig && lastConfig.mask === true && options.mask === false) {\n this.clearModels();\n this.models = this.layerModel.buildModels();\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n return this;\n }\n\n /**\n * renderMultiPass 专门用于渲染支持 multipass 的 layer\n */\n public async renderMultiPass() {\n if (this.getEncodedData().length !== 0) {\n if (this.multiPassRenderer && this.multiPassRenderer.getRenderFlag()) {\n // multi render 开始执行 multiPassRender 的渲染流程\n await this.multiPassRenderer.render();\n } else if (this.multiPassRenderer) {\n // renderPass 触发的渲染\n this.renderModels();\n } else {\n this.renderModels();\n }\n }\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n if (options.mix) {\n activeOption.activeMix = options.mix;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n activeMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().activeMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n if (option.mix) {\n activeOption.selectMix = option.mix;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n selectMix: isObject(options)\n ? options.mix\n : this.getLayerConfig().selectMix,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): ILayer {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n return this;\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n if (this.type === 'CanvasLayer' && this.layerModel.clearCanvas) {\n // 对 canvasLayer 的 hide 操作做特殊处理\n this.layerModel.clearCanvas();\n }\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMultiPass(\n enableMultiPass: boolean,\n currentPasses?: Array<string | [string, { [key: string]: unknown }]>,\n ) {\n this.updateLayerConfig({\n enableMultiPassRenderer: enableMultiPass,\n });\n if (currentPasses) {\n this.updateLayerConfig({\n passes: currentPasses,\n });\n }\n\n if (enableMultiPass) {\n const { passes = [] } = this.getLayerConfig();\n this.multiPassRenderer = createMultiPassRenderer(\n this,\n passes,\n this.postProcessingPassFactory,\n this.normalPassFactory,\n );\n this.multiPassRenderer.setRenderFlag(true);\n const { width, height } = this.rendererService.getViewportSize();\n this.multiPassRenderer.resize(width, height);\n }\n\n return this;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n\n public setAutoFit(autoFit: boolean): ILayer {\n this.updateLayerConfig({\n autoFit,\n });\n return this;\n }\n\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n if (this.isDestroied) {\n return;\n }\n\n // remove child layer\n this.layerChildren.map((child: ILayer) => child.destroy());\n this.layerChildren = [];\n\n // remove mask list\n this.masks.map((mask: ILayer) => mask.destroy());\n this.masks = [];\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 this.models = [];\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n this.clusterZoom = 0;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n\n public getScale(name: string): any {\n return this.styleAttributeService.getLayerAttributeScale(name);\n }\n\n public getLegendItems(name: string): LegendItems {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n\n // 函数自定义映射,没有 scale 返回为空数组\n if (!scale) {\n return [];\n }\n\n if (scale.invertExtent) {\n // 分段类型 Quantize、Quantile、Threshold\n const items: ILegendSegmentItem[] = scale.range().map((item: number) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n\n return items;\n } else if (scale.ticks) {\n // 连续类型 Continuous (Linear, Power, Log, Identity, Time)\n const items: ILegendClassificaItem[] = scale\n .ticks()\n .map((item: string) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n\n return items;\n } else if (scale?.domain) {\n // 枚举类型 Cat\n const items: ILegendClassificaItem[] = scale\n .domain()\n .filter((item: string | number | undefined) => !isUndefined(item))\n .map((item: string | number) => {\n return {\n value: item,\n [name]: scale(item) as string,\n };\n });\n\n return items;\n }\n\n return [];\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public createAttrubutes(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ) {\n const { triangulation } = options;\n // @ts-ignore\n const { attributes } = this.styleAttributeService.createAttributes(\n this.encodedData,\n triangulation,\n );\n return attributes;\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public async renderMulPass(multiPassRenderer: IMultiPassRenderer) {\n await multiPassRenderer.render();\n }\n\n public renderModels(isPicking?: boolean) {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n if (this.layerModel.renderUpdate) {\n this.layerModel.renderUpdate();\n }\n this.models.forEach((model) => {\n model.draw(\n {\n uniforms: this.layerModel.getUninforms(),\n },\n isPicking,\n );\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n public getShaderPickStat() {\n return this.layerService.getShaderPickStat();\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n // 对外暴露事件 迁移到 DataMappingPlugin generateMapping,保证在重新重新映射后触发\n // this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
@@ -70,6 +70,11 @@ var LayerGroup = function (_BaseLayer) {
70
70
  });
71
71
  this.layerChildren = [];
72
72
  }
73
+ }, {
74
+ key: "hasChild",
75
+ value: function hasChild(layer) {
76
+ return this.layerChildren.includes(layer);
77
+ }
73
78
  }]);
74
79
  return LayerGroup;
75
80
  }(_BaseLayer2.default);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/LayerGroup.ts"],"names":["LayerGroup","layer","layerChildren","push","layerIndex","indexOf","splice","destroy","forEach","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;;;;;IAIqBA,U;;;;;;;;;;;;;;;+FAEY,I;;;;;;WAE/B,kBAAgBC,KAAhB,EAA+B;AAC7B,WAAKC,aAAL,CAAmBC,IAAnB,CAAwBF,KAAxB;AACD;;;WAED,qBAAmBA,KAAnB,EAAkC;AAChC,UAAMG,UAAU,GAAG,KAAKF,aAAL,CAAmBG,OAAnB,CAA2BJ,KAA3B,CAAnB;;AACA,UAAIG,UAAU,GAAG,CAAC,CAAlB,EAAqB;AACnB,aAAKF,aAAL,CAAmBI,MAAnB,CAA0BF,UAA1B,EAAsC,CAAtC;AACD;;AACDH,MAAAA,KAAK,CAACM,OAAN;AACD;;;WAED,sBAAoB;AAClB,WAAKL,aAAL,CAAmBM,OAAnB,CAA2B,UAACP,KAAD,EAAgB;AACzCA,QAAAA,KAAK,CAACM,OAAN;AACD,OAFD;AAIA,WAAKL,aAAL,GAAqB,EAArB;AACD;;;EAtBkEO,mB","sourcesContent":["import { ILayer, ILayerGroup } from '@antv/l7-core';\nimport BaseLayer from './BaseLayer';\n\n// 定义 LayerGroup 继承 Baselayer\n\nexport default class LayerGroup<ChildLayerStyleOptions = {}> extends BaseLayer\n implements ILayerGroup {\n public isLayerGroup: boolean = true;\n\n public addChild(layer: ILayer) {\n this.layerChildren.push(layer);\n }\n\n public removeChild(layer: ILayer) {\n const layerIndex = this.layerChildren.indexOf(layer);\n if (layerIndex > -1) {\n this.layerChildren.splice(layerIndex, 1);\n }\n layer.destroy();\n }\n\n public clearChild() {\n this.layerChildren.forEach((layer: any) => {\n layer.destroy();\n });\n\n this.layerChildren = [];\n }\n}\n"],"file":"LayerGroup.js"}
1
+ {"version":3,"sources":["../../src/core/LayerGroup.ts"],"names":["LayerGroup","layer","layerChildren","push","layerIndex","indexOf","splice","destroy","forEach","includes","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;;;;;IAIqBA,U;;;;;;;;;;;;;;;+FAGY,I;;;;;;WAE/B,kBAAgBC,KAAhB,EAA+B;AAC7B,WAAKC,aAAL,CAAmBC,IAAnB,CAAwBF,KAAxB;AACD;;;WAED,qBAAmBA,KAAnB,EAAkC;AAChC,UAAMG,UAAU,GAAG,KAAKF,aAAL,CAAmBG,OAAnB,CAA2BJ,KAA3B,CAAnB;;AACA,UAAIG,UAAU,GAAG,CAAC,CAAlB,EAAqB;AACnB,aAAKF,aAAL,CAAmBI,MAAnB,CAA0BF,UAA1B,EAAsC,CAAtC;AACD;;AACDH,MAAAA,KAAK,CAACM,OAAN;AACD;;;WAED,sBAAoB;AAClB,WAAKL,aAAL,CAAmBM,OAAnB,CAA2B,UAACP,KAAD,EAAgB;AACzCA,QAAAA,KAAK,CAACM,OAAN;AACD,OAFD;AAIA,WAAKL,aAAL,GAAqB,EAArB;AACD;;;WAED,kBAAgBD,KAAhB,EAA+B;AAC7B,aAAO,KAAKC,aAAL,CAAmBO,QAAnB,CAA4BR,KAA5B,CAAP;AACD;;;EA1BOS,mB","sourcesContent":["import { ILayer, ILayerGroup } from '@antv/l7-core';\nimport BaseLayer from './BaseLayer';\n\n// 定义 LayerGroup 继承 Baselayer\n\nexport default class LayerGroup<ChildLayerStyleOptions = {}>\n extends BaseLayer<ChildLayerStyleOptions>\n implements ILayerGroup {\n public isLayerGroup: boolean = true;\n\n public addChild(layer: ILayer) {\n this.layerChildren.push(layer);\n }\n\n public removeChild(layer: ILayer) {\n const layerIndex = this.layerChildren.indexOf(layer);\n if (layerIndex > -1) {\n this.layerChildren.splice(layerIndex, 1);\n }\n layer.destroy();\n }\n\n public clearChild() {\n this.layerChildren.forEach((layer: any) => {\n layer.destroy();\n });\n\n this.layerChildren = [];\n }\n\n public hasChild(layer: ILayer) {\n return this.layerChildren.includes(layer);\n }\n}\n"],"file":"LayerGroup.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType","CanvasUpdateType"],"mappings":";;;;;;IAIYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a;;IAgKAC,gB;;;WAAAA,gB;AAAAA,EAAAA,gB;AAAAA,EAAAA,gB;GAAAA,gB,gCAAAA,gB","sourcesContent":["import { IAnimateOption, IMapService } from '@antv/l7-core';\nimport { IColorRamp } from '@antv/l7-utils';\nimport { styleOffset, styleSingle } from '../core/BaseModel';\nimport { anchorType } from '../utils/symbol-layout';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\ninterface ILineArrow {\n enable: boolean;\n arrowWidth: number;\n arrowHeight: number;\n tailWidth: number;\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 depth?: boolean;\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 raisingHeight?: number; // 线图层抬升高度\n\n mask?: boolean; // 可选参数 时候允许蒙层\n maskInside?: boolean; // 可选参数 控制图层是否显示在蒙层的内部\n\n arrow?: ILineArrow;\n\n rampColors?: IColorRamp;\n}\n\nexport interface IPointLayerStyleOptions {\n opacity: number;\n strokeOpacity: number;\n strokeWidth: number;\n stroke: string;\n\n blur?: number;\n\n // text\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 raisingHeight?: number; // 线图层抬升高度\n\n // cylinder\n pickLight?: boolean;\n depth?: boolean;\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n lightEnable: boolean;\n heightfixed?: boolean; // 圆柱体高度是否固定(不随 zoom 发生变化)\n\n offsets?: styleOffset;\n blend?: string;\n unit?: string;\n mask?: boolean;\n maskInside?: boolean;\n\n rotation?: number; // angle\n speed?: number;\n}\n\nexport interface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n\n opacityLinear: {\n enable: boolean;\n dir: string;\n };\n\n topsurface?: boolean;\n sidesurface?: boolean;\n\n mapTexture?: string; // 挤出几何体顶面贴图\n raisingHeight?: number; // 挤出几何体抬升高度\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n heightfixed?: boolean; // 挤出几何体高度是否固定(不随 zoom 发生变化)\n\n pickLight: boolean;\n mask?: boolean;\n maskInside?: boolean;\n\n // water\n waterTexture?: string;\n speed?: number;\n // ocean\n watercolor?: string;\n watercolor2?: string;\n}\n\nexport interface IImageLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IGeometryLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n\n mapTexture?: string;\n terrainTexture?: string;\n\n // planeGeometry\n center?: [number, number];\n width?: number;\n height?: number;\n\n widthSegments?: number;\n heightSegments?: number;\n\n terrainClipHeight?: number;\n rgb2height?: (r: number, g: number, b: number) => number;\n\n // billboard\n raisingHeight?: number; // 抬升高度\n canvasWidth?: number;\n canvasHeight?: number;\n drawCanvas?: (canvas: HTMLCanvasElement) => void;\n\n // sprite\n spriteAnimate?: string;\n spriteRadius?: number;\n spriteCount?: number;\n spriteSpeed?: number;\n spriteTop?: number;\n spriteUpdate?: number;\n spriteScale?: number;\n\n animateOption?: IAnimateOption;\n}\n\nexport enum CanvasUpdateType {\n 'ALWAYS' = 'always',\n 'DRAGEND' = 'dragend',\n}\n\nexport interface IDrawingOnCanvas {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n mapService: IMapService;\n size: [number, number];\n}\nexport interface ICanvasLayerStyleOptions {\n zIndex: number;\n update: CanvasUpdateType | string;\n drawingOnCanvas: (option: IDrawingOnCanvas) => void;\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
+ {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType","CanvasUpdateType"],"mappings":";;;;;;IAIYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a;;IA2LAC,gB;;;WAAAA,gB;AAAAA,EAAAA,gB;AAAAA,EAAAA,gB;GAAAA,gB,gCAAAA,gB","sourcesContent":["import { IAnimateOption, IMapService } from '@antv/l7-core';\nimport { IColorRamp } from '@antv/l7-utils';\nimport { styleOffset, styleSingle } from '../core/BaseModel';\nimport { anchorType } from '../utils/symbol-layout';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\ninterface ILineArrow {\n enable: boolean;\n arrowWidth: number;\n arrowHeight: number;\n tailWidth: number;\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 depth?: boolean;\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 raisingHeight?: number; // 线图层抬升高度\n\n mask?: boolean; // 可选参数 时候允许蒙层\n maskInside?: boolean; // 可选参数 控制图层是否显示在蒙层的内部\n\n arrow?: ILineArrow;\n\n rampColors?: IColorRamp;\n}\n\nexport interface IPointLayerStyleOptions {\n opacity: number;\n strokeOpacity: number;\n strokeWidth: number;\n stroke: string;\n\n blur?: number;\n\n // text\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 raisingHeight?: number; // 线图层抬升高度\n\n // cylinder\n pickLight?: boolean;\n depth?: boolean;\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n lightEnable: boolean;\n heightfixed?: boolean; // 圆柱体高度是否固定(不随 zoom 发生变化)\n\n offsets?: styleOffset;\n blend?: string;\n unit?: string;\n mask?: boolean;\n maskInside?: boolean;\n\n rotation?: number; // angle\n speed?: number;\n}\n\nexport interface IPolygonLayerStyleOptions {\n opacity?: number;\n\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n\n topsurface?: boolean;\n sidesurface?: boolean;\n\n mapTexture?: string; // 挤出几何体顶面贴图\n raisingHeight?: number; // 挤出几何体抬升高度\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n heightfixed?: boolean; // 挤出几何体高度是否固定(不随 zoom 发生变化)\n\n pickLight: boolean;\n mask?: boolean;\n maskInside?: boolean;\n\n // water\n waterTexture?: string;\n speed?: number;\n // ocean\n watercolor?: string;\n watercolor2?: string;\n}\n\n// 栅格瓦片图层\nexport interface IRasterTileLayerStyleOptions {\n // TODO: define\n zIndex?: number;\n opacity?: number;\n}\nexport interface IMaskLayerStyleOptions {\n opacity: styleSingle;\n}\n\nexport interface IWindLayerStyleOptions {\n uMin?: number;\n uMax?: number;\n vMin?: number;\n vMax?: number;\n fadeOpacity?: number;\n speedFactor?: number;\n dropRate?: number;\n dropRateBump?: number;\n opacity?: number;\n numParticles?: number;\n rampColors?: {\n [key: number]: string;\n };\n sizeScale?: number;\n}\n\nexport interface IImageLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IGeometryLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n\n mapTexture?: string;\n terrainTexture?: string;\n\n // planeGeometry\n center?: [number, number];\n width?: number;\n height?: number;\n\n widthSegments?: number;\n heightSegments?: number;\n\n terrainClipHeight?: number;\n rgb2height?: (r: number, g: number, b: number) => number;\n\n // billboard\n raisingHeight?: number; // 抬升高度\n canvasWidth?: number;\n canvasHeight?: number;\n drawCanvas?: (canvas: HTMLCanvasElement) => void;\n\n // sprite\n spriteAnimate?: string;\n spriteRadius?: number;\n spriteCount?: number;\n spriteSpeed?: number;\n spriteTop?: number;\n spriteUpdate?: number;\n spriteScale?: number;\n\n animateOption?: IAnimateOption;\n}\n\nexport enum CanvasUpdateType {\n 'ALWAYS' = 'always',\n 'DRAGEND' = 'dragend',\n}\n\nexport interface IDrawingOnCanvas {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n mapService: IMapService;\n size: [number, number];\n}\nexport interface ICanvasLayerStyleOptions {\n zIndex: number;\n update: CanvasUpdateType | string;\n drawingOnCanvas: (option: IDrawingOnCanvas) => void;\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/image/models/image.ts"],"names":["ImageModel","layer","getLayerConfig","opacity","u_opacity","u_texture","texture","mask","maskInside","source","getSource","createTexture2D","rendererService","height","width","isMini","canvas","layerService","sceneService","getSceneConfig","img","createImage","crossOrigin","src","data","originData","onload","updateLayerRenderList","renderLayers","images","then","imageData","buildLayerModel","moduleName","vertexShader","ImageVert","fragmentShader","ImageFrag","triangulation","RasterImageTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","initModels","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, isMini } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IImageLayerStyleOptions } from '../../core/interface';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport ImageFrag from '../shaders/image_frag.glsl';\nimport ImageVert from '../shaders/image_vert.glsl';\n\nexport default class ImageModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const { opacity } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n return {\n u_opacity: opacity || 1,\n u_texture: this.texture,\n };\n }\n public initModels() {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n\n const source = this.layer.getSource();\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n if (isMini) {\n // @ts-ignore\n const canvas = this.layerService.sceneService.getSceneConfig().canvas;\n const img = canvas.createImage();\n // let img = new Image()\n img.crossOrigin = 'anonymous';\n img.src = source.data.originData;\n\n img.onload = () => {\n this.texture = createTexture2D({\n data: img,\n width: img.width,\n height: img.height,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n } else {\n source.data.images.then((imageData: HTMLImageElement[]) => {\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n }\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'RasterImage',\n vertexShader: ImageVert,\n fragmentShader: ImageFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n public buildModels() {\n return this.initModels();\n }\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 registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"image.js"}
1
+ {"version":3,"sources":["../../../src/image/models/image.ts"],"names":["ImageModel","layer","getLayerConfig","opacity","u_opacity","u_texture","texture","mask","maskInside","source","getSource","createTexture2D","rendererService","height","width","isMini","canvas","layerService","sceneService","getSceneConfig","img","createImage","crossOrigin","src","data","originData","onload","updateLayerRenderList","renderLayers","images","then","imageData","buildLayerModel","moduleName","vertexShader","ImageVert","fragmentShader","ImageFrag","triangulation","RasterImageTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","initModels","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, isMini } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IImageLayerStyleOptions } from '../../core/interface';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport ImageFrag from '../shaders/image_frag.glsl';\nimport ImageVert from '../shaders/image_vert.glsl';\n\nexport default class ImageModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const { opacity } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n return {\n u_opacity: opacity || 1,\n u_texture: this.texture,\n };\n }\n public initModels() {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n\n const source = this.layer.getSource();\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n if (isMini) {\n // @ts-ignore\n const canvas = this.layerService.sceneService.getSceneConfig().canvas;\n const img = canvas.createImage();\n img.crossOrigin = 'anonymous';\n img.src = source.data.originData;\n\n img.onload = () => {\n this.texture = createTexture2D({\n data: img,\n width: img.width,\n height: img.height,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n } else {\n source.data.images.then((imageData: HTMLImageElement[]) => {\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n }\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'RasterImage',\n vertexShader: ImageVert,\n fragmentShader: ImageFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n public buildModels() {\n return this.initModels();\n }\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 registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"image.js"}
package/lib/index.js CHANGED
@@ -5,6 +5,21 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ var _exportNames = {
9
+ CanvasLayer: true,
10
+ CityBuildingLayer: true,
11
+ BaseLayer: true,
12
+ GeometryLayer: true,
13
+ HeatmapLayer: true,
14
+ ImageLayer: true,
15
+ LineLayer: true,
16
+ PointLayer: true,
17
+ PolygonLayer: true,
18
+ RasterLayer: true,
19
+ EarthLayer: true,
20
+ MaskLayer: true,
21
+ WindLayer: true
22
+ };
8
23
  Object.defineProperty(exports, "BaseLayer", {
9
24
  enumerable: true,
10
25
  get: function get() {
@@ -47,12 +62,6 @@ Object.defineProperty(exports, "ImageLayer", {
47
62
  return _image.default;
48
63
  }
49
64
  });
50
- Object.defineProperty(exports, "ImageTileLayer", {
51
- enumerable: true,
52
- get: function get() {
53
- return _imagetile.default;
54
- }
55
- });
56
65
  Object.defineProperty(exports, "LineLayer", {
57
66
  enumerable: true,
58
67
  get: function get() {
@@ -106,8 +115,6 @@ var _heatmap = _interopRequireDefault(require("./heatmap"));
106
115
 
107
116
  var _image = _interopRequireDefault(require("./image"));
108
117
 
109
- var _imagetile = _interopRequireDefault(require("./imagetile"));
110
-
111
118
  var _index = _interopRequireDefault(require("./line/index"));
112
119
 
113
120
  var _point = _interopRequireDefault(require("./point"));
@@ -148,6 +155,20 @@ var _UpdateModelPlugin = _interopRequireDefault(require("./plugins/UpdateModelPl
148
155
 
149
156
  var _UpdateStyleAttributePlugin = _interopRequireDefault(require("./plugins/UpdateStyleAttributePlugin"));
150
157
 
158
+ var _interface = require("./core/interface");
159
+
160
+ Object.keys(_interface).forEach(function (key) {
161
+ if (key === "default" || key === "__esModule") return;
162
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
163
+ if (key in exports && exports[key] === _interface[key]) return;
164
+ Object.defineProperty(exports, key, {
165
+ enumerable: true,
166
+ get: function get() {
167
+ return _interface[key];
168
+ }
169
+ });
170
+ });
171
+
151
172
  _l7Core.container.bind(_l7Core.TYPES.ILayerPlugin).to(_DataSourcePlugin.default).inRequestScope();
152
173
 
153
174
  _l7Core.container.bind(_l7Core.TYPES.ILayerPlugin).to(_RegisterStyleAttributePlugin.default).inRequestScope();
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["container","bind","TYPES","ILayerPlugin","to","DataSourcePlugin","inRequestScope","RegisterStyleAttributePlugin","FeatureScalePlugin","DataMappingPlugin","LayerStylePlugin","UpdateStyleAttributePlugin","UpdateModelPlugin","MultiPassRendererPlugin","ShaderUniformPlugin","LayerAnimateStylePlugin","LightingPlugin","PixelPickingPlugin","LayerModelPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAaAA,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMC,yBAFN,EAGGC,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMG,qCAFN,EAGGD,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMI,2BAFN,EAGGF,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMK,0BAFN,EAGGH,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMM,yBAFN,EAGGJ,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMO,mCAFN,EAGGL,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMQ,0BAFN,EAGGN,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMS,gCAFN,EAGGP,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMU,4BAFN,EAGGR,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMW,gCAFN,EAGGT,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMY,uBAFN,EAGGV,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMa,2BAFN,EAGGX,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMc,yBAFN,EAGGZ,cAHH","sourcesContent":["import { container, ILayerPlugin, TYPES } from '@antv/l7-core';\nimport CanvasLayer from './canvas';\nimport CityBuildingLayer from './citybuliding/building';\nimport BaseLayer from './core/BaseLayer';\nimport GeometryLayer from './Geometry'; // 逐步替换为 Geometry\nimport './glsl.d';\nimport HeatmapLayer from './heatmap';\nimport ImageLayer from './image';\nimport ImageTileLayer from './imagetile';\nimport LineLayer from './line/index';\nimport PointLayer from './point';\nimport PolygonLayer from './polygon';\nimport RasterLayer from './raster';\n\nimport EarthLayer from './earth';\n\nimport MaskLayer from './mask';\nimport WindLayer from './wind';\n\n// import ConfigSchemaValidationPlugin from './plugins/ConfigSchemaValidationPlugin';\nimport DataMappingPlugin from './plugins/DataMappingPlugin';\nimport DataSourcePlugin from './plugins/DataSourcePlugin';\nimport FeatureScalePlugin from './plugins/FeatureScalePlugin';\nimport LayerAnimateStylePlugin from './plugins/LayerAnimateStylePlugin';\nimport LayerModelPlugin from './plugins/LayerModelPlugin';\nimport LayerStylePlugin from './plugins/LayerStylePlugin';\nimport LightingPlugin from './plugins/LightingPlugin';\nimport MultiPassRendererPlugin from './plugins/MultiPassRendererPlugin';\nimport PixelPickingPlugin from './plugins/PixelPickingPlugin';\nimport RegisterStyleAttributePlugin from './plugins/RegisterStyleAttributePlugin';\nimport ShaderUniformPlugin from './plugins/ShaderUniformPlugin';\nimport UpdateModelPlugin from './plugins/UpdateModelPlugin';\nimport UpdateStyleAttributePlugin from './plugins/UpdateStyleAttributePlugin';\n\n/**\n * 校验传入参数配置项的正确性\n * @see /dev-docs/ConfigSchemaValidation.md\n */\n// container\n// .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n// .to(ConfigSchemaValidationPlugin)\n// .inRequestScope();\n/**\n * 获取 Source\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataSourcePlugin)\n .inRequestScope();\n/**\n * 根据 StyleAttribute 创建 VertexAttribute\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(RegisterStyleAttributePlugin)\n .inRequestScope();\n/**\n * 根据 Source 创建 Scale\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(FeatureScalePlugin)\n .inRequestScope();\n/**\n * 使用 Scale 进行数据映射\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataMappingPlugin)\n .inRequestScope();\n\n/**\n * 更新地图样式配置项 如active, show, hide\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerStylePlugin)\n .inRequestScope();\n\n/**\n * 负责属性更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateStyleAttributePlugin)\n .inRequestScope();\n\n/**\n * 负责Model更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateModelPlugin)\n .inRequestScope();\n\n/**\n * Multi Pass 自定义渲染管线\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(MultiPassRendererPlugin)\n .inRequestScope();\n/**\n * 传入相机坐标系参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(ShaderUniformPlugin)\n .inRequestScope();\n\n/**\n * 传入动画参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerAnimateStylePlugin)\n .inRequestScope();\n/**\n * 传入光照相关参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LightingPlugin)\n .inRequestScope();\n/**\n * 负责拾取过程中 Encode 以及 Highlight 阶段及结束后恢复\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(PixelPickingPlugin)\n .inRequestScope();\n/**\n * 初始化Model\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerModelPlugin)\n .inRequestScope();\n\nexport {\n BaseLayer,\n PointLayer,\n PolygonLayer,\n LineLayer,\n CityBuildingLayer,\n GeometryLayer,\n CanvasLayer,\n ImageLayer,\n ImageTileLayer,\n RasterLayer,\n HeatmapLayer,\n EarthLayer,\n WindLayer,\n MaskLayer,\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["container","bind","TYPES","ILayerPlugin","to","DataSourcePlugin","inRequestScope","RegisterStyleAttributePlugin","FeatureScalePlugin","DataMappingPlugin","LayerStylePlugin","UpdateStyleAttributePlugin","UpdateModelPlugin","MultiPassRendererPlugin","ShaderUniformPlugin","LayerAnimateStylePlugin","LightingPlugin","PixelPickingPlugin","LayerModelPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AA2HA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AA9GAA,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMC,yBAFN,EAGGC,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMG,qCAFN,EAGGD,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMI,2BAFN,EAGGF,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMK,0BAFN,EAGGH,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMM,yBAFN,EAGGJ,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMO,mCAFN,EAGGL,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMQ,0BAFN,EAGGN,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMS,gCAFN,EAGGP,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMU,4BAFN,EAGGR,cAHH;;AAQAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMW,gCAFN,EAGGT,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMY,uBAFN,EAGGV,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMa,2BAFN,EAGGX,cAHH;;AAOAN,kBACGC,IADH,CACsBC,cAAMC,YAD5B,EAEGC,EAFH,CAEMc,yBAFN,EAGGZ,cAHH","sourcesContent":["import { container, ILayerPlugin, TYPES } from '@antv/l7-core';\nimport CanvasLayer from './canvas';\nimport CityBuildingLayer from './citybuliding/building';\nimport BaseLayer from './core/BaseLayer';\nimport GeometryLayer from './Geometry'; // 逐步替换为 Geometry\nimport './glsl.d';\nimport HeatmapLayer from './heatmap';\nimport ImageLayer from './image';\nimport LineLayer from './line/index';\nimport PointLayer from './point';\nimport PolygonLayer from './polygon';\nimport RasterLayer from './raster';\n\nimport EarthLayer from './earth';\n\nimport MaskLayer from './mask';\nimport WindLayer from './wind';\n\n// import ConfigSchemaValidationPlugin from './plugins/ConfigSchemaValidationPlugin';\nimport DataMappingPlugin from './plugins/DataMappingPlugin';\nimport DataSourcePlugin from './plugins/DataSourcePlugin';\nimport FeatureScalePlugin from './plugins/FeatureScalePlugin';\nimport LayerAnimateStylePlugin from './plugins/LayerAnimateStylePlugin';\nimport LayerModelPlugin from './plugins/LayerModelPlugin';\nimport LayerStylePlugin from './plugins/LayerStylePlugin';\nimport LightingPlugin from './plugins/LightingPlugin';\nimport MultiPassRendererPlugin from './plugins/MultiPassRendererPlugin';\nimport PixelPickingPlugin from './plugins/PixelPickingPlugin';\nimport RegisterStyleAttributePlugin from './plugins/RegisterStyleAttributePlugin';\nimport ShaderUniformPlugin from './plugins/ShaderUniformPlugin';\nimport UpdateModelPlugin from './plugins/UpdateModelPlugin';\nimport UpdateStyleAttributePlugin from './plugins/UpdateStyleAttributePlugin';\n\n/**\n * 校验传入参数配置项的正确性\n * @see /dev-docs/ConfigSchemaValidation.md\n */\n// container\n// .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n// .to(ConfigSchemaValidationPlugin)\n// .inRequestScope();\n/**\n * 获取 Source\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataSourcePlugin)\n .inRequestScope();\n/**\n * 根据 StyleAttribute 创建 VertexAttribute\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(RegisterStyleAttributePlugin)\n .inRequestScope();\n/**\n * 根据 Source 创建 Scale\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(FeatureScalePlugin)\n .inRequestScope();\n/**\n * 使用 Scale 进行数据映射\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataMappingPlugin)\n .inRequestScope();\n\n/**\n * 更新地图样式配置项 如active, show, hide\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerStylePlugin)\n .inRequestScope();\n\n/**\n * 负责属性更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateStyleAttributePlugin)\n .inRequestScope();\n\n/**\n * 负责Model更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateModelPlugin)\n .inRequestScope();\n\n/**\n * Multi Pass 自定义渲染管线\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(MultiPassRendererPlugin)\n .inRequestScope();\n/**\n * 传入相机坐标系参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(ShaderUniformPlugin)\n .inRequestScope();\n\n/**\n * 传入动画参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerAnimateStylePlugin)\n .inRequestScope();\n/**\n * 传入光照相关参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LightingPlugin)\n .inRequestScope();\n/**\n * 负责拾取过程中 Encode 以及 Highlight 阶段及结束后恢复\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(PixelPickingPlugin)\n .inRequestScope();\n/**\n * 初始化Model\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerModelPlugin)\n .inRequestScope();\n\nexport {\n BaseLayer,\n PointLayer,\n PolygonLayer,\n LineLayer,\n CityBuildingLayer,\n GeometryLayer,\n CanvasLayer,\n ImageLayer,\n RasterLayer,\n HeatmapLayer,\n EarthLayer,\n WindLayer,\n MaskLayer,\n};\n\nexport * from './core/interface';\n"],"file":"index.js"}
@@ -21,8 +21,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
21
21
 
22
22
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
23
 
24
- var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
25
-
26
24
  var _l7Core = require("@antv/l7-core");
27
25
 
28
26
  var _l7Utils = require("@antv/l7-utils");
@@ -91,7 +89,8 @@ var ArcModel = function (_BaseModel) {
91
89
  key: "getUninforms",
92
90
  value: function getUninforms() {
93
91
  var _ref = this.layer.getLayerConfig(),
94
- opacity = _ref.opacity,
92
+ _ref$opacity = _ref.opacity,
93
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
95
94
  sourceColor = _ref.sourceColor,
96
95
  targetColor = _ref.targetColor,
97
96
  _ref$textureBlend = _ref.textureBlend,
@@ -165,8 +164,8 @@ var ArcModel = function (_BaseModel) {
165
164
  return {
166
165
  u_dataTexture: this.dataTexture,
167
166
  u_cellTypeLayout: this.getCellTypeLayout(),
168
- u_thetaOffset: (0, _isNumber2.default)(thetaOffset) ? thetaOffset : 0.0,
169
- u_opacity: (0, _isNumber2.default)(opacity) ? opacity : 1.0,
167
+ u_thetaOffset: Number(thetaOffset),
168
+ u_opacity: Number(opacity),
170
169
  u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,
171
170
  segmentNumber: segmentNumber,
172
171
  u_line_type: lineStyleObj[lineType || 'solid'],