@antv/l7-layers 2.9.14 → 2.9.15

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 (218) hide show
  1. package/LICENSE.md +1 -1
  2. package/es/core/BaseLayer.d.ts +2 -4
  3. package/es/core/BaseLayer.js +21 -47
  4. package/es/core/BaseLayer.js.map +1 -1
  5. package/es/core/BaseModel.d.ts +1 -2
  6. package/es/core/BaseModel.js +0 -3
  7. package/es/core/BaseModel.js.map +1 -1
  8. package/es/core/LayerGroup.d.ts +9 -0
  9. package/es/{tile/tileFactory/rasterDataLayer.js → core/LayerGroup.js} +32 -39
  10. package/es/core/LayerGroup.js.map +1 -0
  11. package/es/core/interface.d.ts +1 -14
  12. package/es/core/interface.js.map +1 -1
  13. package/es/image/models/image.js.map +1 -1
  14. package/es/line/index.d.ts +1 -1
  15. package/es/line/index.js +1 -13
  16. package/es/line/index.js.map +1 -1
  17. package/es/line/models/index.d.ts +1 -1
  18. package/es/line/models/index.js +1 -9
  19. package/es/line/models/index.js.map +1 -1
  20. package/es/plugins/DataMappingPlugin.js +1 -1
  21. package/es/plugins/DataMappingPlugin.js.map +1 -1
  22. package/es/plugins/DataSourcePlugin.js +6 -7
  23. package/es/plugins/DataSourcePlugin.js.map +1 -1
  24. package/es/plugins/FeatureScalePlugin.js +9 -35
  25. package/es/plugins/FeatureScalePlugin.js.map +1 -1
  26. package/es/plugins/ShaderUniformPlugin.js +1 -3
  27. package/es/plugins/ShaderUniformPlugin.js.map +1 -1
  28. package/es/point/index.d.ts +1 -1
  29. package/es/point/index.js +2 -10
  30. package/es/point/index.js.map +1 -1
  31. package/es/point/models/extrude.d.ts +1 -0
  32. package/es/point/models/extrude.js +10 -2
  33. package/es/point/models/extrude.js.map +1 -1
  34. package/es/point/models/fill.d.ts +1 -8
  35. package/es/point/models/fill.js +75 -55
  36. package/es/point/models/fill.js.map +1 -1
  37. package/es/point/models/index.d.ts +1 -1
  38. package/es/point/models/index.js +1 -9
  39. package/es/point/models/index.js.map +1 -1
  40. package/es/point/models/radar.js +6 -2
  41. package/es/point/models/radar.js.map +1 -1
  42. package/es/polygon/index.js +0 -6
  43. package/es/polygon/index.js.map +1 -1
  44. package/es/polygon/models/index.d.ts +1 -1
  45. package/es/polygon/models/index.js +1 -5
  46. package/es/polygon/models/index.js.map +1 -1
  47. package/es/raster/index.d.ts +2 -2
  48. package/es/raster/index.js +4 -4
  49. package/es/raster/index.js.map +1 -1
  50. package/es/raster/models/index.js +1 -1
  51. package/es/raster/models/index.js.map +1 -1
  52. package/es/raster/models/raste-tile.d.ts +23 -0
  53. package/es/raster/models/raste-tile.js +285 -0
  54. package/es/raster/models/raste-tile.js.map +1 -0
  55. package/es/raster/models/raster.d.ts +0 -2
  56. package/es/raster/models/raster.js +12 -24
  57. package/es/raster/models/raster.js.map +1 -1
  58. package/lib/core/BaseLayer.js +20 -45
  59. package/lib/core/BaseLayer.js.map +1 -1
  60. package/lib/core/BaseModel.js +0 -2
  61. package/lib/core/BaseModel.js.map +1 -1
  62. package/lib/{tile/tileFactory/rasterDataLayer.js → core/LayerGroup.js} +32 -40
  63. package/lib/core/LayerGroup.js.map +1 -0
  64. package/lib/core/interface.js.map +1 -1
  65. package/lib/image/models/image.js.map +1 -1
  66. package/lib/line/index.js +1 -13
  67. package/lib/line/index.js.map +1 -1
  68. package/lib/line/models/index.js +1 -13
  69. package/lib/line/models/index.js.map +1 -1
  70. package/lib/plugins/DataMappingPlugin.js +1 -1
  71. package/lib/plugins/DataMappingPlugin.js.map +1 -1
  72. package/lib/plugins/DataSourcePlugin.js +6 -7
  73. package/lib/plugins/DataSourcePlugin.js.map +1 -1
  74. package/lib/plugins/FeatureScalePlugin.js +9 -35
  75. package/lib/plugins/FeatureScalePlugin.js.map +1 -1
  76. package/lib/plugins/ShaderUniformPlugin.js +1 -3
  77. package/lib/plugins/ShaderUniformPlugin.js.map +1 -1
  78. package/lib/point/index.js +2 -10
  79. package/lib/point/index.js.map +1 -1
  80. package/lib/point/models/extrude.js +11 -2
  81. package/lib/point/models/extrude.js.map +1 -1
  82. package/lib/point/models/fill.js +93 -51
  83. package/lib/point/models/fill.js.map +1 -1
  84. package/lib/point/models/index.js +1 -13
  85. package/lib/point/models/index.js.map +1 -1
  86. package/lib/point/models/radar.js +5 -1
  87. package/lib/point/models/radar.js.map +1 -1
  88. package/lib/polygon/index.js +0 -6
  89. package/lib/polygon/index.js.map +1 -1
  90. package/lib/polygon/models/index.js +1 -7
  91. package/lib/polygon/models/index.js.map +1 -1
  92. package/lib/raster/index.js +4 -4
  93. package/lib/raster/index.js.map +1 -1
  94. package/lib/raster/models/index.js +2 -2
  95. package/lib/raster/models/index.js.map +1 -1
  96. package/lib/raster/models/raste-tile.js +294 -0
  97. package/lib/raster/models/raste-tile.js.map +1 -0
  98. package/lib/raster/models/raster.js +12 -24
  99. package/lib/raster/models/raster.js.map +1 -1
  100. package/package.json +7 -9
  101. package/es/line/models/earthArc_3d.d.ts +0 -17
  102. package/es/line/models/earthArc_3d.js +0 -311
  103. package/es/line/models/earthArc_3d.js.map +0 -1
  104. package/es/line/models/half.d.ts +0 -18
  105. package/es/line/models/half.js +0 -244
  106. package/es/line/models/half.js.map +0 -1
  107. package/es/line/models/tile.d.ts +0 -20
  108. package/es/line/models/tile.js +0 -327
  109. package/es/line/models/tile.js.map +0 -1
  110. package/es/point/models/earthExtrude.d.ts +0 -24
  111. package/es/point/models/earthExtrude.js +0 -259
  112. package/es/point/models/earthExtrude.js.map +0 -1
  113. package/es/point/models/earthFill.d.ts +0 -20
  114. package/es/point/models/earthFill.js +0 -255
  115. package/es/point/models/earthFill.js.map +0 -1
  116. package/es/point/models/tile.d.ts +0 -31
  117. package/es/point/models/tile.js +0 -291
  118. package/es/point/models/tile.js.map +0 -1
  119. package/es/polygon/models/tile.d.ts +0 -16
  120. package/es/polygon/models/tile.js +0 -137
  121. package/es/polygon/models/tile.js.map +0 -1
  122. package/es/tile/interface.d.ts +0 -28
  123. package/es/tile/interface.js +0 -2
  124. package/es/tile/interface.js.map +0 -1
  125. package/es/tile/manager/tileConfigManager.d.ts +0 -17
  126. package/es/tile/manager/tileConfigManager.js +0 -123
  127. package/es/tile/manager/tileConfigManager.js.map +0 -1
  128. package/es/tile/manager/tileLayerManager.d.ts +0 -35
  129. package/es/tile/manager/tileLayerManager.js +0 -297
  130. package/es/tile/manager/tileLayerManager.js.map +0 -1
  131. package/es/tile/manager/tilePickerManager.d.ts +0 -21
  132. package/es/tile/manager/tilePickerManager.js +0 -189
  133. package/es/tile/manager/tilePickerManager.js.map +0 -1
  134. package/es/tile/models/tileModel.d.ts +0 -8
  135. package/es/tile/models/tileModel.js +0 -61
  136. package/es/tile/models/tileModel.js.map +0 -1
  137. package/es/tile/tileFactory/base.d.ts +0 -44
  138. package/es/tile/tileFactory/base.js +0 -423
  139. package/es/tile/tileFactory/base.js.map +0 -1
  140. package/es/tile/tileFactory/index.d.ts +0 -5
  141. package/es/tile/tileFactory/index.js +0 -30
  142. package/es/tile/tileFactory/index.js.map +0 -1
  143. package/es/tile/tileFactory/line.d.ts +0 -12
  144. package/es/tile/tileFactory/line.js +0 -65
  145. package/es/tile/tileFactory/line.js.map +0 -1
  146. package/es/tile/tileFactory/point.d.ts +0 -12
  147. package/es/tile/tileFactory/point.js +0 -65
  148. package/es/tile/tileFactory/point.js.map +0 -1
  149. package/es/tile/tileFactory/polygon.d.ts +0 -12
  150. package/es/tile/tileFactory/polygon.js +0 -65
  151. package/es/tile/tileFactory/polygon.js.map +0 -1
  152. package/es/tile/tileFactory/raster.d.ts +0 -12
  153. package/es/tile/tileFactory/raster.js +0 -61
  154. package/es/tile/tileFactory/raster.js.map +0 -1
  155. package/es/tile/tileFactory/rasterData.d.ts +0 -12
  156. package/es/tile/tileFactory/rasterData.js +0 -86
  157. package/es/tile/tileFactory/rasterData.js.map +0 -1
  158. package/es/tile/tileFactory/rasterDataLayer.d.ts +0 -19
  159. package/es/tile/tileFactory/rasterDataLayer.js.map +0 -1
  160. package/es/tile/tileFactory/vectorLayer.d.ts +0 -27
  161. package/es/tile/tileFactory/vectorLayer.js +0 -131
  162. package/es/tile/tileFactory/vectorLayer.js.map +0 -1
  163. package/es/tile/tileLayer/baseTileLayer.d.ts +0 -47
  164. package/es/tile/tileLayer/baseTileLayer.js +0 -409
  165. package/es/tile/tileLayer/baseTileLayer.js.map +0 -1
  166. package/es/tile/tmsTileLayer.d.ts +0 -7
  167. package/es/tile/tmsTileLayer.js +0 -100
  168. package/es/tile/tmsTileLayer.js.map +0 -1
  169. package/es/tile/utils.d.ts +0 -11
  170. package/es/tile/utils.js +0 -125
  171. package/es/tile/utils.js.map +0 -1
  172. package/lib/line/models/earthArc_3d.js +0 -328
  173. package/lib/line/models/earthArc_3d.js.map +0 -1
  174. package/lib/line/models/half.js +0 -260
  175. package/lib/line/models/half.js.map +0 -1
  176. package/lib/line/models/tile.js +0 -342
  177. package/lib/line/models/tile.js.map +0 -1
  178. package/lib/point/models/earthExtrude.js +0 -277
  179. package/lib/point/models/earthExtrude.js.map +0 -1
  180. package/lib/point/models/earthFill.js +0 -291
  181. package/lib/point/models/earthFill.js.map +0 -1
  182. package/lib/point/models/tile.js +0 -308
  183. package/lib/point/models/tile.js.map +0 -1
  184. package/lib/polygon/models/tile.js +0 -152
  185. package/lib/polygon/models/tile.js.map +0 -1
  186. package/lib/tile/interface.js +0 -2
  187. package/lib/tile/interface.js.map +0 -1
  188. package/lib/tile/manager/tileConfigManager.js +0 -134
  189. package/lib/tile/manager/tileConfigManager.js.map +0 -1
  190. package/lib/tile/manager/tileLayerManager.js +0 -305
  191. package/lib/tile/manager/tileLayerManager.js.map +0 -1
  192. package/lib/tile/manager/tilePickerManager.js +0 -195
  193. package/lib/tile/manager/tilePickerManager.js.map +0 -1
  194. package/lib/tile/models/tileModel.js +0 -73
  195. package/lib/tile/models/tileModel.js.map +0 -1
  196. package/lib/tile/tileFactory/base.js +0 -436
  197. package/lib/tile/tileFactory/base.js.map +0 -1
  198. package/lib/tile/tileFactory/index.js +0 -60
  199. package/lib/tile/tileFactory/index.js.map +0 -1
  200. package/lib/tile/tileFactory/line.js +0 -76
  201. package/lib/tile/tileFactory/line.js.map +0 -1
  202. package/lib/tile/tileFactory/point.js +0 -76
  203. package/lib/tile/tileFactory/point.js.map +0 -1
  204. package/lib/tile/tileFactory/polygon.js +0 -76
  205. package/lib/tile/tileFactory/polygon.js.map +0 -1
  206. package/lib/tile/tileFactory/raster.js +0 -74
  207. package/lib/tile/tileFactory/raster.js.map +0 -1
  208. package/lib/tile/tileFactory/rasterData.js +0 -99
  209. package/lib/tile/tileFactory/rasterData.js.map +0 -1
  210. package/lib/tile/tileFactory/rasterDataLayer.js.map +0 -1
  211. package/lib/tile/tileFactory/vectorLayer.js +0 -145
  212. package/lib/tile/tileFactory/vectorLayer.js.map +0 -1
  213. package/lib/tile/tileLayer/baseTileLayer.js +0 -407
  214. package/lib/tile/tileLayer/baseTileLayer.js.map +0 -1
  215. package/lib/tile/tmsTileLayer.js +0 -116
  216. package/lib/tile/tmsTileLayer.js.map +0 -1
  217. package/lib/tile/utils.js +0 -147
  218. package/lib/tile/utils.js.map +0 -1
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018 AntV team
3
+ Copyright (c) 2017 Alipay.inc
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -19,6 +19,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
19
19
  rendering: boolean;
20
20
  clusterZoom: number;
21
21
  layerType?: string | undefined;
22
+ isLayerGroup: boolean;
22
23
  triangulation?: Triangulation | undefined;
23
24
  dataState: IDataState;
24
25
  hooks: {
@@ -49,10 +50,8 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
49
50
  values: any;
50
51
  };
51
52
  sceneContainer: Container | undefined;
52
- tileLayer: any | undefined;
53
53
  layerChildren: ILayer[];
54
54
  masks: ILayer[];
55
- isVector: boolean;
56
55
  protected readonly configService: IGlobalConfigService;
57
56
  protected shaderModuleService: IShaderModuleService;
58
57
  protected cameraService: ICameraService;
@@ -90,7 +89,6 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
90
89
  constructor(config?: Partial<ILayerConfig & ChildLayerStyleOptions>);
91
90
  addMaskLayer(maskLayer: ILayer): void;
92
91
  removeMaskLayer(maskLayer: ILayer): void;
93
- getAttribute(name: string): import("@antv/l7-core").IStyleAttribute | undefined;
94
92
  getLayerConfig(): Partial<ILayerConfig & import("@antv/l7-core").ISceneConfig & ChildLayerStyleOptions>;
95
93
  updateLayerConfig(configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>): void;
96
94
  /**
@@ -165,7 +163,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
165
163
  * zoom to layer Bounds
166
164
  */
167
165
  fitBounds(fitBoundsOptions?: unknown): ILayer;
168
- destroy(refresh?: boolean): void;
166
+ destroy(): void;
169
167
  clear(): void;
170
168
  clearModels(): void;
171
169
  isDirty(): boolean;
@@ -89,6 +89,8 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
89
89
 
90
90
  _defineProperty(_assertThisInitialized(_this), "layerType", void 0);
91
91
 
92
+ _defineProperty(_assertThisInitialized(_this), "isLayerGroup", false);
93
+
92
94
  _defineProperty(_assertThisInitialized(_this), "triangulation", void 0);
93
95
 
94
96
  _defineProperty(_assertThisInitialized(_this), "dataState", {
@@ -129,14 +131,10 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
129
131
 
130
132
  _defineProperty(_assertThisInitialized(_this), "sceneContainer", void 0);
131
133
 
132
- _defineProperty(_assertThisInitialized(_this), "tileLayer", void 0);
133
-
134
134
  _defineProperty(_assertThisInitialized(_this), "layerChildren", []);
135
135
 
136
136
  _defineProperty(_assertThisInitialized(_this), "masks", []);
137
137
 
138
- _defineProperty(_assertThisInitialized(_this), "isVector", false);
139
-
140
138
  _initializerDefineProperty(_assertThisInitialized(_this), "configService", _descriptor, _assertThisInitialized(_this));
141
139
 
142
140
  _defineProperty(_assertThisInitialized(_this), "shaderModuleService", void 0);
@@ -231,11 +229,6 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
231
229
 
232
230
  maskLayer.destroy();
233
231
  }
234
- }, {
235
- key: "getAttribute",
236
- value: function getAttribute(name) {
237
- return this.styleAttributeService.getLayerStyleAttribute(name);
238
- }
239
232
  }, {
240
233
  key: "getLayerConfig",
241
234
  value: function getLayerConfig() {
@@ -244,14 +237,6 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
244
237
  }, {
245
238
  key: "updateLayerConfig",
246
239
  value: function updateLayerConfig(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
- });
254
-
255
240
  if (!this.inited) {
256
241
  this.needUpdateConfig = _objectSpread(_objectSpread({}, this.needUpdateConfig), configToUpdate);
257
242
  } else {
@@ -291,7 +276,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
291
276
  }, {
292
277
  key: "init",
293
278
  value: function init() {
294
- var _this3 = this;
279
+ var _this2 = this;
295
280
 
296
281
  var sceneId = this.container.get(TYPES.SceneID);
297
282
  this.configService.setLayerConfig(sceneId, this.id, this.rawConfig);
@@ -310,7 +295,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
310
295
 
311
296
  if (enableMultiPassRenderer && passes !== null && passes !== void 0 && passes.length && passes.length > 0) {
312
297
  this.mapService.on('mapAfterFrameChange', function () {
313
- _this3.renderLayers();
298
+ _this2.renderLayers();
314
299
  });
315
300
  }
316
301
 
@@ -328,10 +313,10 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
328
313
  attributeValues = _ref.attributeValues,
329
314
  updateOptions = _ref.updateOptions;
330
315
 
331
- _this3.styleAttributeService.updateStyleAttribute(attributeName, {
316
+ _this2.styleAttributeService.updateStyleAttribute(attributeName, {
332
317
  scale: _objectSpread({
333
318
  field: attributeField
334
- }, _this3.splitValuesAndCallbackInAttribute(attributeValues, _this3.getLayerConfig()[attributeName]))
319
+ }, _this2.splitValuesAndCallbackInAttribute(attributeValues, _this2.getLayerConfig()[attributeName]))
335
320
  }, updateOptions);
336
321
  });
337
322
  this.pendingStyleAttributes = [];
@@ -465,11 +450,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
465
450
  values: values
466
451
  };
467
452
  this.updateStyleAttribute('shape', field, values, updateOptions);
468
-
469
- if (!this.tileLayer) {
470
- updateShape(this, lastShape, currentShape);
471
- }
472
-
453
+ updateShape(this, lastShape, currentShape);
473
454
  return this;
474
455
  }
475
456
  }, {
@@ -518,20 +499,20 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
518
499
  }, {
519
500
  key: "setData",
520
501
  value: function setData(data, options) {
521
- var _this4 = this;
502
+ var _this3 = this;
522
503
 
523
504
  if (this.inited) {
524
505
  this.layerSource.setData(data, options);
525
506
  } else {
526
507
  this.on('inited', function () {
527
- var currentSource = _this4.getSource();
508
+ var currentSource = _this3.getSource();
528
509
 
529
510
  if (!currentSource) {
530
- _this4.source(new Source(data, options));
511
+ _this3.source(new Source(data, options));
531
512
 
532
- _this4.sourceEvent();
513
+ _this3.sourceEvent();
533
514
  } else {
534
- _this4.layerSource.setData(data, options);
515
+ _this3.layerSource.setData(data, options);
535
516
  }
536
517
  });
537
518
  }
@@ -541,7 +522,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
541
522
  }, {
542
523
  key: "style",
543
524
  value: function style(options) {
544
- var _this5 = this;
525
+ var _this4 = this;
545
526
 
546
527
  var lastConfig = this.getLayerConfig();
547
528
 
@@ -550,7 +531,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
550
531
 
551
532
  if (passes) {
552
533
  normalizePasses(passes).forEach(function (pass) {
553
- var postProcessingPass = _this5.multiPassRenderer.getPostProcessor().getPostProcessingPassByName(pass[0]);
534
+ var postProcessingPass = _this4.multiPassRenderer.getPostProcessor().getPostProcessingPassByName(pass[0]);
554
535
 
555
536
  if (postProcessingPass) {
556
537
  postProcessingPass.updateOptions(pass[1]);
@@ -593,11 +574,6 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
593
574
  }, {
594
575
  key: "render",
595
576
  value: function render() {
596
- if (this.tileLayer !== undefined) {
597
- this.tileLayer.render();
598
- return this;
599
- }
600
-
601
577
  if (this.getEncodedData().length !== 0) {
602
578
  this.renderModels();
603
579
  }
@@ -676,7 +652,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
676
652
  }, {
677
653
  key: "setActive",
678
654
  value: function setActive(id, options) {
679
- var _this6 = this;
655
+ var _this5 = this;
680
656
 
681
657
  if (_isObject(id)) {
682
658
  var _id$x = id.x,
@@ -699,7 +675,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
699
675
  });
700
676
  this.hooks.beforeSelect.call(encodePickingColor(id)).then(function () {
701
677
  setTimeout(function () {
702
- _this6.reRender();
678
+ _this5.reRender();
703
679
  }, 1);
704
680
  });
705
681
  }
@@ -730,7 +706,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
730
706
  }, {
731
707
  key: "setSelect",
732
708
  value: function setSelect(id, options) {
733
- var _this7 = this;
709
+ var _this6 = this;
734
710
 
735
711
  if (_isObject(id)) {
736
712
  var _id$x2 = id.x,
@@ -753,7 +729,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
753
729
  });
754
730
  this.hooks.beforeSelect.call(encodePickingColor(id)).then(function () {
755
731
  setTimeout(function () {
756
- _this7.reRender();
732
+ _this6.reRender();
757
733
  }, 1);
758
734
  });
759
735
  }
@@ -936,8 +912,6 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
936
912
  value: function destroy() {
937
913
  var _this$layerModel;
938
914
 
939
- var refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
940
-
941
915
  if (this.isDestroied) {
942
916
  return;
943
917
  }
@@ -957,7 +931,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
957
931
  this.hooks.afterDestroy.call();
958
932
  (_this$layerModel = this.layerModel) === null || _this$layerModel === void 0 ? void 0 : _this$layerModel.clearModels();
959
933
  this.models = [];
960
- this.layerService.cleanRemove(this, refresh);
934
+ this.layerService.cleanRemove(this);
961
935
  this.emit('remove', {
962
936
  target: this,
963
937
  type: 'remove'
@@ -1217,7 +1191,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
1217
1191
  }, {
1218
1192
  key: "renderModels",
1219
1193
  value: function renderModels(isPicking) {
1220
- var _this8 = this;
1194
+ var _this7 = this;
1221
1195
 
1222
1196
  if (this.getEncodedData().length > 0) {
1223
1197
  if (this.layerModelNeedUpdate && this.layerModel) {
@@ -1232,7 +1206,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
1232
1206
 
1233
1207
  this.models.forEach(function (model) {
1234
1208
  model.draw({
1235
- uniforms: _this8.layerModel.getUninforms()
1209
+ uniforms: _this7.layerModel.getUninforms()
1236
1210
  }, isPicking);
1237
1211
  });
1238
1212
  }
@@ -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","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"}
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","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","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","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 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,4 +1,4 @@
1
- import { IAnimateOption, IAttribute, IBlendOptions, ICameraService, IElements, IEncodeFeature, IFontService, IGlobalConfigService, IIconService, ILayer, ILayerModel, ILayerService, IMapService, IModel, IModelUniform, IPickingService, IRendererService, IShaderModuleService, IStyleAttributeService, ITexture2D, ITexture2DInitializationOptions, Triangulation } from '@antv/l7-core';
1
+ import { IAnimateOption, IAttribute, IBlendOptions, ICameraService, IElements, IEncodeFeature, IFontService, IGlobalConfigService, IIconService, ILayer, ILayerModel, ILayerService, IMapService, IModel, IModelUniform, IRendererService, IShaderModuleService, IStyleAttributeService, ITexture2D, ITexture2DInitializationOptions, Triangulation } from '@antv/l7-core';
2
2
  export declare type styleSingle = number | string | [string, (single: any) => number] | [string, [number, number]];
3
3
  export declare type styleOffset = string | [number, number] | [string, (single: any) => number];
4
4
  export declare type styleColor = string | [string, (single: any) => string] | [string, [string, string]];
@@ -47,7 +47,6 @@ export default class BaseModel<ChildLayerStyleOptions = {}> implements ILayerMod
47
47
  protected mapService: IMapService;
48
48
  protected cameraService: ICameraService;
49
49
  protected layerService: ILayerService;
50
- protected pickingService: IPickingService;
51
50
  constructor(layer: ILayer);
52
51
  /**
53
52
  * 清除上一次的计算结果 - 全量清除
@@ -67,11 +67,8 @@ var BaseModel = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = functi
67
67
 
68
68
  _defineProperty(this, "layerService", void 0);
69
69
 
70
- _defineProperty(this, "pickingService", void 0);
71
-
72
70
  this.layer = layer;
73
71
  this.rendererService = layer.getContainer().get(TYPES.IRendererService);
74
- this.pickingService = layer.getContainer().get(TYPES.IPickingService);
75
72
  this.shaderModuleService = layer.getContainer().get(TYPES.IShaderModuleService);
76
73
  this.styleAttributeService = layer.getContainer().get(TYPES.IStyleAttributeService);
77
74
  this.mapService = layer.getContainer().get(TYPES.IMapService);