@antv/l7-layers 2.9.13 → 2.9.16

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 (50) hide show
  1. package/es/core/BaseLayer.d.ts +0 -1
  2. package/es/core/BaseLayer.js +24 -29
  3. package/es/core/BaseLayer.js.map +1 -1
  4. package/es/line/index.d.ts +1 -1
  5. package/es/line/index.js +6 -1
  6. package/es/line/index.js.map +1 -1
  7. package/es/line/models/earthArc_3d.d.ts +17 -0
  8. package/es/line/models/earthArc_3d.js +311 -0
  9. package/es/line/models/earthArc_3d.js.map +1 -0
  10. package/es/line/models/index.d.ts +1 -1
  11. package/es/line/models/index.js +3 -1
  12. package/es/line/models/index.js.map +1 -1
  13. package/es/point/index.d.ts +1 -1
  14. package/es/point/index.js +4 -2
  15. package/es/point/index.js.map +1 -1
  16. package/es/point/models/earthExtrude.d.ts +24 -0
  17. package/es/point/models/earthExtrude.js +259 -0
  18. package/es/point/models/earthExtrude.js.map +1 -0
  19. package/es/point/models/earthFill.d.ts +20 -0
  20. package/es/point/models/earthFill.js +255 -0
  21. package/es/point/models/earthFill.js.map +1 -0
  22. package/es/point/models/extrude.d.ts +0 -1
  23. package/es/point/models/extrude.js +2 -10
  24. package/es/point/models/extrude.js.map +1 -1
  25. package/es/point/models/fill.js +7 -43
  26. package/es/point/models/fill.js.map +1 -1
  27. package/es/point/models/index.d.ts +1 -1
  28. package/es/point/models/index.js +5 -1
  29. package/es/point/models/index.js.map +1 -1
  30. package/lib/core/BaseLayer.js +24 -29
  31. package/lib/core/BaseLayer.js.map +1 -1
  32. package/lib/line/index.js +6 -1
  33. package/lib/line/index.js.map +1 -1
  34. package/lib/line/models/earthArc_3d.js +328 -0
  35. package/lib/line/models/earthArc_3d.js.map +1 -0
  36. package/lib/line/models/index.js +4 -1
  37. package/lib/line/models/index.js.map +1 -1
  38. package/lib/point/index.js +4 -2
  39. package/lib/point/index.js.map +1 -1
  40. package/lib/point/models/earthExtrude.js +277 -0
  41. package/lib/point/models/earthExtrude.js.map +1 -0
  42. package/lib/point/models/earthFill.js +291 -0
  43. package/lib/point/models/earthFill.js.map +1 -0
  44. package/lib/point/models/extrude.js +2 -11
  45. package/lib/point/models/extrude.js.map +1 -1
  46. package/lib/point/models/fill.js +6 -62
  47. package/lib/point/models/fill.js.map +1 -1
  48. package/lib/point/models/index.js +7 -1
  49. package/lib/point/models/index.js.map +1 -1
  50. package/package.json +6 -6
@@ -202,7 +202,6 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
202
202
  protected getConfigSchema(): void;
203
203
  protected getModelType(): unknown;
204
204
  protected getDefaultConfig(): {};
205
- private updateRawConfig;
206
205
  private sourceEvent;
207
206
  private reRender;
208
207
  private splitValuesAndCallbackInAttribute;
@@ -244,7 +244,13 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
244
244
  }, {
245
245
  key: "updateLayerConfig",
246
246
  value: function updateLayerConfig(configToUpdate) {
247
- this.updateRawConfig(configToUpdate);
247
+ var _this2 = this;
248
+
249
+ Object.keys(configToUpdate).map(function (key) {
250
+ if (key in _this2.rawConfig) {
251
+ _this2.rawConfig[key] = configToUpdate[key];
252
+ }
253
+ });
248
254
 
249
255
  if (!this.inited) {
250
256
  this.needUpdateConfig = _objectSpread(_objectSpread({}, this.needUpdateConfig), configToUpdate);
@@ -285,7 +291,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
285
291
  }, {
286
292
  key: "init",
287
293
  value: function init() {
288
- var _this2 = this;
294
+ var _this3 = this;
289
295
 
290
296
  var sceneId = this.container.get(TYPES.SceneID);
291
297
  this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);
@@ -304,7 +310,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
304
310
 
305
311
  if (enableMultiPassRenderer && passes !== null && passes !== void 0 && passes.length && passes.length > 0) {
306
312
  this.mapService.on('mapAfterFrameChange', function () {
307
- _this2.renderLayers();
313
+ _this3.renderLayers();
308
314
  });
309
315
  }
310
316
 
@@ -322,10 +328,10 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
322
328
  attributeValues = _ref.attributeValues,
323
329
  updateOptions = _ref.updateOptions;
324
330
 
325
- _this2.styleAttributeService.updateStyleAttribute(attributeName, {
331
+ _this3.styleAttributeService.updateStyleAttribute(attributeName, {
326
332
  scale: _objectSpread({
327
333
  field: attributeField
328
- }, _this2.splitValuesAndCallbackInAttribute(attributeValues, _this2.getLayerConfig()[attributeName]))
334
+ }, _this3.splitValuesAndCallbackInAttribute(attributeValues, _this3.getLayerConfig()[attributeName]))
329
335
  }, updateOptions);
330
336
  });
331
337
  this.pendingStyleAttributes = [];
@@ -512,20 +518,20 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
512
518
  }, {
513
519
  key: "setData",
514
520
  value: function setData(data, options) {
515
- var _this3 = this;
521
+ var _this4 = this;
516
522
 
517
523
  if (this.inited) {
518
524
  this.layerSource.setData(data, options);
519
525
  } else {
520
526
  this.on('inited', function () {
521
- var currentSource = _this3.getSource();
527
+ var currentSource = _this4.getSource();
522
528
 
523
529
  if (!currentSource) {
524
- _this3.source(new Source(data, options));
530
+ _this4.source(new Source(data, options));
525
531
 
526
- _this3.sourceEvent();
532
+ _this4.sourceEvent();
527
533
  } else {
528
- _this3.layerSource.setData(data, options);
534
+ _this4.layerSource.setData(data, options);
529
535
  }
530
536
  });
531
537
  }
@@ -535,7 +541,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
535
541
  }, {
536
542
  key: "style",
537
543
  value: function style(options) {
538
- var _this4 = this;
544
+ var _this5 = this;
539
545
 
540
546
  var lastConfig = this.getLayerConfig();
541
547
 
@@ -544,7 +550,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
544
550
 
545
551
  if (passes) {
546
552
  normalizePasses(passes).forEach(function (pass) {
547
- var postProcessingPass = _this4.multiPassRenderer.getPostProcessor().getPostProcessingPassByName(pass[0]);
553
+ var postProcessingPass = _this5.multiPassRenderer.getPostProcessor().getPostProcessingPassByName(pass[0]);
548
554
 
549
555
  if (postProcessingPass) {
550
556
  postProcessingPass.updateOptions(pass[1]);
@@ -670,7 +676,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
670
676
  }, {
671
677
  key: "setActive",
672
678
  value: function setActive(id, options) {
673
- var _this5 = this;
679
+ var _this6 = this;
674
680
 
675
681
  if (_isObject(id)) {
676
682
  var _id$x = id.x,
@@ -693,7 +699,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
693
699
  });
694
700
  this.hooks.beforeSelect.call(encodePickingColor(id)).then(function () {
695
701
  setTimeout(function () {
696
- _this5.reRender();
702
+ _this6.reRender();
697
703
  }, 1);
698
704
  });
699
705
  }
@@ -724,7 +730,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
724
730
  }, {
725
731
  key: "setSelect",
726
732
  value: function setSelect(id, options) {
727
- var _this6 = this;
733
+ var _this7 = this;
728
734
 
729
735
  if (_isObject(id)) {
730
736
  var _id$x2 = id.x,
@@ -747,7 +753,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
747
753
  });
748
754
  this.hooks.beforeSelect.call(encodePickingColor(id)).then(function () {
749
755
  setTimeout(function () {
750
- _this6.reRender();
756
+ _this7.reRender();
751
757
  }, 1);
752
758
  });
753
759
  }
@@ -1211,7 +1217,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
1211
1217
  }, {
1212
1218
  key: "renderModels",
1213
1219
  value: function renderModels(isPicking) {
1214
- var _this7 = this;
1220
+ var _this8 = this;
1215
1221
 
1216
1222
  if (this.getEncodedData().length > 0) {
1217
1223
  if (this.layerModelNeedUpdate && this.layerModel) {
@@ -1226,7 +1232,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
1226
1232
 
1227
1233
  this.models.forEach(function (model) {
1228
1234
  model.draw({
1229
- uniforms: _this7.layerModel.getUninforms()
1235
+ uniforms: _this8.layerModel.getUninforms()
1230
1236
  }, isPicking);
1231
1237
  });
1232
1238
  }
@@ -1276,17 +1282,6 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
1276
1282
  value: function getDefaultConfig() {
1277
1283
  return {};
1278
1284
  }
1279
- }, {
1280
- key: "updateRawConfig",
1281
- value: function updateRawConfig(configToUpdate) {
1282
- var _this8 = this;
1283
-
1284
- Object.keys(configToUpdate).map(function (key) {
1285
- if (_this8.rawConfig[key] && _this8.rawConfig[key] !== configToUpdate[key]) {
1286
- _this8.rawConfig[key] = configToUpdate[key];
1287
- }
1288
- });
1289
- }
1290
1285
  }, {
1291
1286
  key: "reRender",
1292
1287
  value: function reRender() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["SyncBailHook","SyncHook","SyncWaterfallHook","BlendType","lazyInject","TYPES","Source","encodePickingColor","EventEmitter","BlendTypes","handleStyleDataMapping","calculateData","createMultiPassRenderer","normalizePasses","updateShape","layerIdCounter","BaseLayer","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","afterInit","beforeRender","beforeRenderData","afterRender","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","maskLayer","masks","push","layerIndex","indexOf","splice","destroy","styleAttributeService","getLayerStyleAttribute","configService","configToUpdate","updateRawConfig","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","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","currentShape","shapeOption","tileLayer","options","rawAnimate","setSource","sourceOption","clusterZoom","layerSource","setData","currentSource","getSource","source","sourceEvent","lastConfig","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","mask","clearModels","buildModels","cfg","scaleOptions","rendering","render","getEncodedData","renderModels","getRenderFlag","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","refresh","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","normal","createAttributes","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","isVisible","Error","isPicking","renderUpdate","draw","getUninforms","getShaderPickStat","time","Object","keys","key","valuesOrCallback","defaultValues","callback"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n 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 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 public tileLayer: any | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n public masks: ILayer[] = [];\n // Tip: 用于标识矢量图层\n public isVector: boolean = false;\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 getAttribute(name: string) {\n return this.styleAttributeService.getLayerStyleAttribute(name);\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 // 同步 options 记录\n this.updateRawConfig(configToUpdate);\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 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 if (!this.tileLayer) {\n updateShape(this, lastShape, currentShape);\n }\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 if (this.tileLayer !== undefined) {\n // 瓦片图层执行单独的 render 渲染队列\n this.tileLayer.render();\n return this;\n }\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(refresh = true) {\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, refresh);\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 updateRawConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n Object.keys(configToUpdate).map((key) => {\n // @ts-ignore\n if (this.rawConfig[key] && this.rawConfig[key] !== configToUpdate[key]) {\n // @ts-ignore\n this.rawConfig[key] = configToUpdate[key];\n }\n });\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":["SyncBailHook","SyncHook","SyncWaterfallHook","BlendType","lazyInject","TYPES","Source","encodePickingColor","EventEmitter","BlendTypes","handleStyleDataMapping","calculateData","createMultiPassRenderer","normalizePasses","updateShape","layerIdCounter","BaseLayer","IGlobalConfigService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","afterInit","beforeRender","beforeRenderData","afterRender","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","reRender","name","id","zIndex","rawConfig","maskLayer","masks","push","layerIndex","indexOf","splice","destroy","styleAttributeService","getLayerStyleAttribute","configService","configToUpdate","Object","keys","map","key","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","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","m","updateAttributesAndElements","console","warn","option","layerModel","createModelData","calEncodeData","calculateEncodeData","triangulation","createAttributesAndIndices","undefined","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","lastShape","currentShape","shapeOption","tileLayer","options","rawAnimate","setSource","sourceOption","clusterZoom","layerSource","setData","currentSource","getSource","source","sourceEvent","lastConfig","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","mask","clearModels","buildModels","cfg","scaleOptions","rendering","render","getEncodedData","renderModels","getRenderFlag","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","refresh","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","normal","createAttributes","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","isVisible","Error","isPicking","renderUpdate","draw","getUninforms","getShaderPickStat","time","valuesOrCallback","defaultValues","callback"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n 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 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 public tileLayer: any | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n public masks: ILayer[] = [];\n // Tip: 用于标识矢量图层\n public isVector: boolean = false;\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 getAttribute(name: string) {\n return this.styleAttributeService.getLayerStyleAttribute(name);\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 // 同步 rawConfig\n Object.keys(configToUpdate).map((key) => {\n if (key in this.rawConfig) {\n // @ts-ignore\n this.rawConfig[key] = configToUpdate[key];\n }\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 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 if (!this.tileLayer) {\n updateShape(this, lastShape, currentShape);\n }\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 if (this.tileLayer !== undefined) {\n // 瓦片图层执行单独的 render 渲染队列\n this.tileLayer.render();\n return this;\n }\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(refresh = true) {\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, refresh);\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"}
@@ -22,6 +22,6 @@ export default class LineLayer extends BaseLayer<ILineLayerStyleOptions> {
22
22
  blend: string;
23
23
  } | {
24
24
  blend: string;
25
- } | {} | {} | {};
25
+ } | {} | {} | {} | {};
26
26
  protected getModelType(): LineModelType;
27
27
  }
package/es/line/index.js CHANGED
@@ -82,7 +82,8 @@ var LineLayer = function (_BaseLayer) {
82
82
  },
83
83
  vectorline: {},
84
84
  tileLine: {},
85
- halfLine: {}
85
+ halfLine: {},
86
+ earthArc3d: {}
86
87
  };
87
88
  return defaultConfig[type];
88
89
  }
@@ -91,6 +92,10 @@ var LineLayer = function (_BaseLayer) {
91
92
  value: function getModelType() {
92
93
  var _shapeAttribute$scale;
93
94
 
95
+ if (this.layerType) {
96
+ return this.layerType;
97
+ }
98
+
94
99
  if (this.layerSource.parser.type === 'mvt') {
95
100
  return 'vectorline';
96
101
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/line/index.ts"],"names":["BaseLayer","LineModels","LineLayer","shape","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","line","linearline","simple","wall","arc3d","blend","arc","arcmini","greatcircle","vectorline","tileLine","halfLine","layerSource","parser","shapeAttribute","styleAttributeService","getLayerStyleAttribute","scale","field"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AAEA,OAAOC,UAAP,MAA0C,UAA1C;;IAEqBC,S;;;;;;;;;;;;;;;;2DACG,W;;;;;;;WAEtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIJ,UAAU,CAACE,KAAD,CAAd,CAAsB,IAAtB,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE,EADc;AAEpBC,QAAAA,UAAU,EAAE,EAFQ;AAGpBC,QAAAA,MAAM,EAAE,EAHY;AAIpBC,QAAAA,IAAI,EAAE,EAJc;AAKpBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,KAAK,EAAE;AAAT,SALa;AAMpBC,QAAAA,GAAG,EAAE;AAAED,UAAAA,KAAK,EAAE;AAAT,SANe;AAOpBE,QAAAA,OAAO,EAAE;AAAEF,UAAAA,KAAK,EAAE;AAAT,SAPW;AAQpBG,QAAAA,WAAW,EAAE;AAAEH,UAAAA,KAAK,EAAE;AAAT,SARO;AASpBI,QAAAA,UAAU,EAAE,EATQ;AAUpBC,QAAAA,QAAQ,EAAE,EAVU;AAWpBC,QAAAA,QAAQ,EAAE;AAXU,OAAtB;AAaA,aAAOZ,aAAa,CAACH,IAAD,CAApB;AACD;;;WACD,wBAAwC;AAAA;;AACtC,UAAI,KAAKgB,WAAL,CAAiBC,MAAjB,CAAwBjB,IAAxB,KAAiC,KAArC,EAA4C;AAC1C,eAAO,YAAP;AACD;;AACD,UAAMkB,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;AAGA,UAAM5B,KAAK,GAAG0B,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEG,KAAnB,0DAAG,sBAAuBC,KAArC;AACA,aAAO9B,KAAK,IAAI,MAAhB;AACD;;;;EAjDoCH,S;;SAAlBE,S","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { ILineLayerStyleOptions } from '../core/interface';\nimport LineModels, { LineModelType } from './models';\n\nexport default class LineLayer extends BaseLayer<ILineLayerStyleOptions> {\n public type: string = 'LineLayer';\n\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new LineModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\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 protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n line: {},\n linearline: {},\n simple: {},\n wall: {},\n arc3d: { blend: 'additive' },\n arc: { blend: 'additive' },\n arcmini: { blend: 'additive' },\n greatcircle: { blend: 'additive' },\n vectorline: {},\n tileLine: {},\n halfLine: {},\n };\n return defaultConfig[type];\n }\n protected getModelType(): LineModelType {\n if (this.layerSource.parser.type === 'mvt') {\n return 'vectorline';\n }\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const shape = shapeAttribute?.scale?.field as LineModelType;\n return shape || 'line';\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/line/index.ts"],"names":["BaseLayer","LineModels","LineLayer","shape","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","line","linearline","simple","wall","arc3d","blend","arc","arcmini","greatcircle","vectorline","tileLine","halfLine","earthArc3d","layerType","layerSource","parser","shapeAttribute","styleAttributeService","getLayerStyleAttribute","scale","field"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AAEA,OAAOC,UAAP,MAA0C,UAA1C;;IAEqBC,S;;;;;;;;;;;;;;;;2DACG,W;;;;;;;WAEtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIJ,UAAU,CAACE,KAAD,CAAd,CAAsB,IAAtB,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE,EADc;AAEpBC,QAAAA,UAAU,EAAE,EAFQ;AAGpBC,QAAAA,MAAM,EAAE,EAHY;AAIpBC,QAAAA,IAAI,EAAE,EAJc;AAKpBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,KAAK,EAAE;AAAT,SALa;AAMpBC,QAAAA,GAAG,EAAE;AAAED,UAAAA,KAAK,EAAE;AAAT,SANe;AAOpBE,QAAAA,OAAO,EAAE;AAAEF,UAAAA,KAAK,EAAE;AAAT,SAPW;AAQpBG,QAAAA,WAAW,EAAE;AAAEH,UAAAA,KAAK,EAAE;AAAT,SARO;AASpBI,QAAAA,UAAU,EAAE,EATQ;AAUpBC,QAAAA,QAAQ,EAAE,EAVU;AAWpBC,QAAAA,QAAQ,EAAE,EAXU;AAYpBC,QAAAA,UAAU,EAAE;AAZQ,OAAtB;AAcA,aAAOb,aAAa,CAACH,IAAD,CAApB;AACD;;;WACD,wBAAwC;AAAA;;AACtC,UAAI,KAAKiB,SAAT,EAAoB;AAClB,eAAO,KAAKA,SAAZ;AACD;;AACD,UAAI,KAAKC,WAAL,CAAiBC,MAAjB,CAAwBnB,IAAxB,KAAiC,KAArC,EAA4C;AAC1C,eAAO,YAAP;AACD;;AACD,UAAMoB,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;AAGA,UAAM9B,KAAK,GAAG4B,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEG,KAAnB,0DAAG,sBAAuBC,KAArC;AACA,aAAOhC,KAAK,IAAI,MAAhB;AACD;;;;EArDoCH,S;;SAAlBE,S","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { ILineLayerStyleOptions } from '../core/interface';\nimport LineModels, { LineModelType } from './models';\n\nexport default class LineLayer extends BaseLayer<ILineLayerStyleOptions> {\n public type: string = 'LineLayer';\n\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new LineModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\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 protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n line: {},\n linearline: {},\n simple: {},\n wall: {},\n arc3d: { blend: 'additive' },\n arc: { blend: 'additive' },\n arcmini: { blend: 'additive' },\n greatcircle: { blend: 'additive' },\n vectorline: {},\n tileLine: {},\n halfLine: {},\n earthArc3d: {},\n };\n return defaultConfig[type];\n }\n protected getModelType(): LineModelType {\n if (this.layerType) {\n return this.layerType as LineModelType;\n }\n if (this.layerSource.parser.type === 'mvt') {\n return 'vectorline';\n }\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const shape = shapeAttribute?.scale?.field as LineModelType;\n return shape || 'line';\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,17 @@
1
+ import { IModel, IModelUniform, ITexture2D } from '@antv/l7-core';
2
+ import BaseModel from '../../core/BaseModel';
3
+ export default class Arc3DModel extends BaseModel {
4
+ protected texture: ITexture2D;
5
+ getUninforms(): IModelUniform;
6
+ getAnimateUniforms(): IModelUniform;
7
+ initModels(): IModel[];
8
+ clearModels(): void;
9
+ getShaders(): {
10
+ frag: string;
11
+ vert: string;
12
+ type: string;
13
+ };
14
+ buildModels(): IModel[];
15
+ protected registerBuiltinAttributes(): void;
16
+ private updateTexture;
17
+ }