@antv/l7-layers 2.14.1 → 2.14.3

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 (122) hide show
  1. package/es/Geometry/models/billboard.js +3 -6
  2. package/es/Geometry/models/plane.js +3 -6
  3. package/es/core/BaseLayer.d.ts +7 -3
  4. package/es/core/BaseLayer.js +64 -20
  5. package/es/core/BaseModel.d.ts +3 -2
  6. package/es/core/BaseModel.js +39 -3
  7. package/es/core/LayerPickService.js +6 -30
  8. package/es/heatmap/index.d.ts +2 -2
  9. package/es/heatmap/index.js +5 -2
  10. package/es/heatmap/models/grid.js +5 -9
  11. package/es/heatmap/models/grid3d.js +5 -10
  12. package/es/heatmap/models/heatmap.d.ts +2 -2
  13. package/es/heatmap/models/heatmap.js +54 -46
  14. package/es/heatmap/models/hexagon.js +5 -10
  15. package/es/image/models/image.js +13 -16
  16. package/es/image/shaders/image_frag.glsl +2 -0
  17. package/es/index.js +6 -0
  18. package/es/line/models/arc.js +4 -6
  19. package/es/line/models/arc_3d.js +4 -6
  20. package/es/line/models/earthArc_3d.js +4 -6
  21. package/es/line/models/great_circle.js +9 -13
  22. package/es/line/models/half.js +4 -6
  23. package/es/line/models/line.js +3 -5
  24. package/es/line/models/linearline.js +4 -6
  25. package/es/line/models/simpleLine.js +5 -8
  26. package/es/mask/models/fill.js +1 -17
  27. package/es/plugins/LayerMaskPlugin.d.ts +8 -0
  28. package/es/plugins/LayerMaskPlugin.js +42 -0
  29. package/es/plugins/LayerStylePlugin.js +2 -1
  30. package/es/point/models/extrude.js +0 -1
  31. package/es/point/models/fill.js +4 -6
  32. package/es/point/models/fillmage.js +8 -12
  33. package/es/point/models/image.js +9 -14
  34. package/es/point/models/normal.js +4 -9
  35. package/es/point/models/radar.js +5 -10
  36. package/es/point/models/simplePoint.js +5 -10
  37. package/es/point/models/text.js +10 -16
  38. package/es/point/shaders/fill_frag.glsl +4 -0
  39. package/es/point/shaders/image_frag.glsl +4 -0
  40. package/es/point/shaders/text_frag.glsl +4 -0
  41. package/es/polygon/index.js +1 -1
  42. package/es/polygon/models/extrude.js +11 -13
  43. package/es/polygon/models/fill.js +3 -5
  44. package/es/polygon/models/ocean.js +6 -9
  45. package/es/polygon/models/water.js +7 -11
  46. package/es/raster/models/raster.js +9 -11
  47. package/es/raster/models/rasterRgb.js +8 -11
  48. package/es/raster/models/rasterTerrainRgb.js +9 -13
  49. package/es/raster/shaders/raster_2d_frag.glsl +6 -3
  50. package/es/raster/shaders/raster_frag.glsl +2 -0
  51. package/es/raster/shaders/raster_rgb_frag.glsl +2 -0
  52. package/es/raster/shaders/raster_terrain_rgb_frag.glsl +2 -0
  53. package/es/tile/service/TileLayerService.js +5 -4
  54. package/es/tile/style/constants.js +1 -1
  55. package/es/tile/tileFactory/Tile.d.ts +8 -0
  56. package/es/tile/tileFactory/Tile.js +102 -14
  57. package/es/tile/tileFactory/VectorTile.d.ts +0 -1
  58. package/es/tile/tileFactory/VectorTile.js +6 -46
  59. package/es/tile/tileLayer/BaseLayer.d.ts +2 -1
  60. package/es/tile/tileLayer/BaseLayer.js +68 -62
  61. package/es/utils/stencil.d.ts +7 -0
  62. package/es/utils/stencil.js +50 -0
  63. package/es/wind/index.d.ts +2 -1
  64. package/es/wind/index.js +3 -1
  65. package/es/wind/models/wind.d.ts +2 -2
  66. package/es/wind/models/wind.js +12 -10
  67. package/lib/Geometry/models/billboard.js +3 -7
  68. package/lib/Geometry/models/plane.js +2 -6
  69. package/lib/core/BaseLayer.js +64 -20
  70. package/lib/core/BaseModel.js +40 -2
  71. package/lib/core/LayerPickService.js +6 -32
  72. package/lib/heatmap/index.js +5 -2
  73. package/lib/heatmap/models/grid.js +5 -10
  74. package/lib/heatmap/models/grid3d.js +5 -11
  75. package/lib/heatmap/models/heatmap.js +53 -45
  76. package/lib/heatmap/models/hexagon.js +5 -11
  77. package/lib/image/models/image.js +12 -15
  78. package/lib/image/shaders/image_frag.glsl +2 -0
  79. package/lib/index.js +8 -0
  80. package/lib/line/models/arc.js +3 -5
  81. package/lib/line/models/arc_3d.js +3 -5
  82. package/lib/line/models/earthArc_3d.js +3 -5
  83. package/lib/line/models/great_circle.js +8 -12
  84. package/lib/line/models/half.js +3 -5
  85. package/lib/line/models/line.js +2 -4
  86. package/lib/line/models/linearline.js +3 -5
  87. package/lib/line/models/simpleLine.js +4 -7
  88. package/lib/mask/models/fill.js +1 -18
  89. package/lib/plugins/LayerMaskPlugin.js +54 -0
  90. package/lib/plugins/LayerStylePlugin.js +2 -1
  91. package/lib/point/models/extrude.js +0 -1
  92. package/lib/point/models/fill.js +3 -5
  93. package/lib/point/models/fillmage.js +7 -11
  94. package/lib/point/models/image.js +9 -15
  95. package/lib/point/models/normal.js +4 -10
  96. package/lib/point/models/radar.js +5 -11
  97. package/lib/point/models/simplePoint.js +5 -11
  98. package/lib/point/models/text.js +9 -15
  99. package/lib/point/shaders/fill_frag.glsl +4 -0
  100. package/lib/point/shaders/image_frag.glsl +4 -0
  101. package/lib/point/shaders/text_frag.glsl +4 -0
  102. package/lib/polygon/index.js +1 -1
  103. package/lib/polygon/models/extrude.js +10 -12
  104. package/lib/polygon/models/fill.js +2 -4
  105. package/lib/polygon/models/ocean.js +5 -8
  106. package/lib/polygon/models/water.js +7 -12
  107. package/lib/raster/models/raster.js +8 -10
  108. package/lib/raster/models/rasterRgb.js +8 -12
  109. package/lib/raster/models/rasterTerrainRgb.js +8 -12
  110. package/lib/raster/shaders/raster_2d_frag.glsl +6 -3
  111. package/lib/raster/shaders/raster_frag.glsl +2 -0
  112. package/lib/raster/shaders/raster_rgb_frag.glsl +2 -0
  113. package/lib/raster/shaders/raster_terrain_rgb_frag.glsl +2 -0
  114. package/lib/tile/service/TileLayerService.js +5 -4
  115. package/lib/tile/style/constants.js +1 -1
  116. package/lib/tile/tileFactory/Tile.js +102 -14
  117. package/lib/tile/tileFactory/VectorTile.js +6 -47
  118. package/lib/tile/tileLayer/BaseLayer.js +67 -62
  119. package/lib/utils/stencil.js +60 -0
  120. package/lib/wind/index.js +3 -1
  121. package/lib/wind/models/wind.js +11 -9
  122. package/package.json +7 -7
@@ -13,7 +13,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
13
13
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
14
14
 
15
15
  import { AttributeType, gl } from '@antv/l7-core';
16
- import { FrequencyController, getMask } from '@antv/l7-utils';
16
+ import { FrequencyController } from '@antv/l7-utils';
17
17
  import BaseModel from "../../core/BaseModel";
18
18
  import { RasterImageTriangulation } from "../../core/triangulation";
19
19
 
@@ -59,14 +59,14 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
59
59
 
60
60
  _createClass(WindModel, [{
61
61
  key: "render",
62
- value: function render() {
62
+ value: function render(options) {
63
63
  var _this2 = this;
64
64
 
65
- // Tip: 控制风场的平均更新频率
65
+ this.drawColorMode(options); // Tip: 控制风场的平均更新频率
66
+
66
67
  this.frequency.run(function () {
67
68
  _this2.drawWind();
68
69
  });
69
- this.drawColorMode();
70
70
  }
71
71
  }, {
72
72
  key: "getUninforms",
@@ -82,13 +82,13 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
82
82
  _source$data2$images,
83
83
  _this3 = this;
84
84
 
85
- var _ref, _ref$uMin, uMin, _ref$uMax, uMax, _ref$vMin, vMin, _ref$vMax, vMax, _ref$fadeOpacity, fadeOpacity, _ref$speedFactor, speedFactor, _ref$dropRate, dropRate, _ref$dropRateBump, dropRateBump, _ref$rampColors, rampColors, _ref$sizeScale, sizeScale, _ref$mask, mask, _ref$maskInside, maskInside, createTexture2D, source, glContext, model;
85
+ var _ref, _ref$uMin, uMin, _ref$uMax, uMax, _ref$vMin, vMin, _ref$vMax, vMax, _ref$fadeOpacity, fadeOpacity, _ref$speedFactor, speedFactor, _ref$dropRate, dropRate, _ref$dropRateBump, dropRateBump, _ref$rampColors, rampColors, _ref$sizeScale, sizeScale, createTexture2D, source, glContext, model;
86
86
 
87
87
  return _regeneratorRuntime.wrap(function _callee$(_context) {
88
88
  while (1) {
89
89
  switch (_context.prev = _context.next) {
90
90
  case 0:
91
- _ref = this.layer.getLayerConfig(), _ref$uMin = _ref.uMin, uMin = _ref$uMin === void 0 ? -21.32 : _ref$uMin, _ref$uMax = _ref.uMax, uMax = _ref$uMax === void 0 ? 26.8 : _ref$uMax, _ref$vMin = _ref.vMin, vMin = _ref$vMin === void 0 ? -21.57 : _ref$vMin, _ref$vMax = _ref.vMax, vMax = _ref$vMax === void 0 ? 21.42 : _ref$vMax, _ref$fadeOpacity = _ref.fadeOpacity, fadeOpacity = _ref$fadeOpacity === void 0 ? 0.996 : _ref$fadeOpacity, _ref$speedFactor = _ref.speedFactor, speedFactor = _ref$speedFactor === void 0 ? 0.25 : _ref$speedFactor, _ref$dropRate = _ref.dropRate, dropRate = _ref$dropRate === void 0 ? 0.003 : _ref$dropRate, _ref$dropRateBump = _ref.dropRateBump, dropRateBump = _ref$dropRateBump === void 0 ? 0.01 : _ref$dropRateBump, _ref$rampColors = _ref.rampColors, rampColors = _ref$rampColors === void 0 ? defaultRampColors : _ref$rampColors, _ref$sizeScale = _ref.sizeScale, sizeScale = _ref$sizeScale === void 0 ? 0.5 : _ref$sizeScale, _ref$mask = _ref.mask, mask = _ref$mask === void 0 ? false : _ref$mask, _ref$maskInside = _ref.maskInside, maskInside = _ref$maskInside === void 0 ? true : _ref$maskInside;
91
+ _ref = this.layer.getLayerConfig(), _ref$uMin = _ref.uMin, uMin = _ref$uMin === void 0 ? -21.32 : _ref$uMin, _ref$uMax = _ref.uMax, uMax = _ref$uMax === void 0 ? 26.8 : _ref$uMax, _ref$vMin = _ref.vMin, vMin = _ref$vMin === void 0 ? -21.57 : _ref$vMin, _ref$vMax = _ref.vMax, vMax = _ref$vMax === void 0 ? 21.42 : _ref$vMax, _ref$fadeOpacity = _ref.fadeOpacity, fadeOpacity = _ref$fadeOpacity === void 0 ? 0.996 : _ref$fadeOpacity, _ref$speedFactor = _ref.speedFactor, speedFactor = _ref$speedFactor === void 0 ? 0.25 : _ref$speedFactor, _ref$dropRate = _ref.dropRate, dropRate = _ref$dropRate === void 0 ? 0.003 : _ref$dropRate, _ref$dropRateBump = _ref.dropRateBump, dropRateBump = _ref$dropRateBump === void 0 ? 0.01 : _ref$dropRateBump, _ref$rampColors = _ref.rampColors, rampColors = _ref$rampColors === void 0 ? defaultRampColors : _ref$rampColors, _ref$sizeScale = _ref.sizeScale, sizeScale = _ref$sizeScale === void 0 ? 0.5 : _ref$sizeScale;
92
92
  createTexture2D = this.rendererService.createTexture2D;
93
93
  source = this.layer.getSource();
94
94
  this.texture = createTexture2D({
@@ -144,9 +144,7 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
144
144
  primitive: gl.TRIANGLES,
145
145
  depth: {
146
146
  enable: false
147
- },
148
- stencil: getMask(mask, maskInside),
149
- blend: this.getBlend()
147
+ }
150
148
  });
151
149
 
152
150
  case 10:
@@ -310,6 +308,8 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
310
308
  value: function drawColorMode() {
311
309
  var _this$colorModel;
312
310
 
311
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
312
+
313
313
  var _ref3 = this.layer.getLayerConfig(),
314
314
  opacity = _ref3.opacity;
315
315
 
@@ -320,7 +320,9 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
320
320
  uniforms: {
321
321
  u_opacity: opacity || 1.0,
322
322
  u_texture: this.texture
323
- }
323
+ },
324
+ blend: this.getBlend(),
325
+ stencil: this.getStencil(options)
324
326
  });
325
327
  this.layer.hooks.afterRender.call();
326
328
  }
@@ -29,8 +29,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
29
29
 
30
30
  var _l7Core = require("@antv/l7-core");
31
31
 
32
- var _l7Utils = require("@antv/l7-utils");
33
-
34
32
  var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
35
33
 
36
34
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -121,13 +119,13 @@ var BillBoardModel = /*#__PURE__*/function (_BaseModel) {
121
119
  key: "initModels",
122
120
  value: function () {
123
121
  var _initModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
124
- var _ref3, _ref3$mask, mask, _ref3$maskInside, maskInside, drawCanvas, createTexture2D, model;
122
+ var _ref3, drawCanvas, createTexture2D, model;
125
123
 
126
124
  return _regenerator.default.wrap(function _callee$(_context) {
127
125
  while (1) {
128
126
  switch (_context.prev = _context.next) {
129
127
  case 0:
130
- _ref3 = this.layer.getLayerConfig(), _ref3$mask = _ref3.mask, mask = _ref3$mask === void 0 ? false : _ref3$mask, _ref3$maskInside = _ref3.maskInside, maskInside = _ref3$maskInside === void 0 ? true : _ref3$maskInside, drawCanvas = _ref3.drawCanvas;
128
+ _ref3 = this.layer.getLayerConfig(), drawCanvas = _ref3.drawCanvas;
131
129
  createTexture2D = this.rendererService.createTexture2D;
132
130
  this.texture = createTexture2D({
133
131
  height: 0,
@@ -147,9 +145,7 @@ var BillBoardModel = /*#__PURE__*/function (_BaseModel) {
147
145
  primitive: _l7Core.gl.TRIANGLES,
148
146
  depth: {
149
147
  enable: true
150
- },
151
- blend: this.getBlend(),
152
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
148
+ }
153
149
  });
154
150
 
155
151
  case 6:
@@ -33,8 +33,6 @@ var _l7Core = require("@antv/l7-core");
33
33
 
34
34
  var _l7Maps = require("@antv/l7-maps");
35
35
 
36
- var _l7Utils = require("@antv/l7-utils");
37
-
38
36
  var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
39
37
 
40
38
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -197,13 +195,13 @@ var PlaneModel = /*#__PURE__*/function (_BaseModel) {
197
195
  key: "initModels",
198
196
  value: function () {
199
197
  var _initModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
200
- var _ref5, _ref5$mask, mask, _ref5$maskInside, maskInside, mapTexture, createTexture2D, model;
198
+ var _ref5, mapTexture, createTexture2D, model;
201
199
 
202
200
  return _regenerator.default.wrap(function _callee$(_context) {
203
201
  while (1) {
204
202
  switch (_context.prev = _context.next) {
205
203
  case 0:
206
- _ref5 = this.layer.getLayerConfig(), _ref5$mask = _ref5.mask, mask = _ref5$mask === void 0 ? false : _ref5$mask, _ref5$maskInside = _ref5.maskInside, maskInside = _ref5$maskInside === void 0 ? true : _ref5$maskInside, mapTexture = _ref5.mapTexture;
204
+ _ref5 = this.layer.getLayerConfig(), mapTexture = _ref5.mapTexture;
207
205
  this.mapTexture = mapTexture;
208
206
  createTexture2D = this.rendererService.createTexture2D;
209
207
  this.texture = createTexture2D({
@@ -221,8 +219,6 @@ var PlaneModel = /*#__PURE__*/function (_BaseModel) {
221
219
  depth: {
222
220
  enable: true
223
221
  },
224
- stencil: (0, _l7Utils.getMask)(mask, maskInside),
225
- blend: this.getBlend(),
226
222
  cull: {
227
223
  enable: true,
228
224
  face: _l7Core.gl.BACK // gl.FRONT | gl.BACK;
@@ -175,10 +175,41 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
175
175
  }
176
176
 
177
177
  (0, _createClass2.default)(BaseLayer, [{
178
+ key: "addMask",
179
+ value: function addMask(layer) {
180
+ this.masks.push(layer);
181
+ this.enableMask();
182
+ }
183
+ }, {
184
+ key: "removeMask",
185
+ value: function removeMask(layer) {
186
+ var layerIndex = this.masks.indexOf(layer);
187
+
188
+ if (layerIndex > -1) {
189
+ this.masks.splice(layerIndex, 1);
190
+ }
191
+ }
192
+ }, {
193
+ key: "disableMask",
194
+ value: function disableMask() {
195
+ this.updateLayerConfig({
196
+ enableMask: false
197
+ });
198
+ }
199
+ }, {
200
+ key: "enableMask",
201
+ value: function enableMask() {
202
+ this.updateLayerConfig({
203
+ enableMask: true
204
+ });
205
+ } // 将废弃
206
+
207
+ }, {
178
208
  key: "addMaskLayer",
179
209
  value: function addMaskLayer(maskLayer) {
180
210
  this.masks.push(maskLayer);
181
- }
211
+ } // 将废弃
212
+
182
213
  }, {
183
214
  key: "removeMaskLayer",
184
215
  value: function removeMaskLayer(maskLayer) {
@@ -354,7 +385,8 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
354
385
 
355
386
  case 31:
356
387
  this.log(_l7Core.IDebugLog.LayerInitEnd);
357
- this.inited = true; // 触发初始化完成事件;
388
+ this.inited = true; // add mask layer
389
+ // 触发初始化完成事件;
358
390
 
359
391
  this.emit('inited', {
360
392
  target: this,
@@ -494,7 +526,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
494
526
  key: "filter",
495
527
  value: function filter(field, values, updateOptions) {
496
528
  var flag = this.updateStyleAttribute('filter', field, values, updateOptions);
497
- this.dataState.dataSourceNeedUpdate = flag;
529
+ this.dataState.dataSourceNeedUpdate = flag && this.inited;
498
530
  return this;
499
531
  }
500
532
  }, {
@@ -505,7 +537,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
505
537
  values: values
506
538
  };
507
539
  var flag = this.updateStyleAttribute('shape', field, values, updateOptions);
508
- this.dataState.dataSourceNeedUpdate = flag;
540
+ this.dataState.dataSourceNeedUpdate = flag && this.inited;
509
541
  return this;
510
542
  }
511
543
  }, {
@@ -650,6 +682,8 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
650
682
  }, {
651
683
  key: "render",
652
684
  value: function render() {
685
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
686
+
653
687
  if (this.tileLayer) {
654
688
  // 瓦片图层执行单独的 render 渲染队列
655
689
  this.tileLayer.render();
@@ -663,7 +697,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
663
697
  } // Tip: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题
664
698
 
665
699
 
666
- this.renderModels();
700
+ this.renderModels(options);
667
701
  return this;
668
702
  }
669
703
  /**
@@ -835,8 +869,8 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
835
869
  value: function setBlend(type) {
836
870
  this.updateLayerConfig({
837
871
  blend: type
838
- });
839
- this.layerModelNeedUpdate = true;
872
+ }); // this.layerModelNeedUpdate = true;
873
+
840
874
  this.reRender();
841
875
  return this;
842
876
  }
@@ -1021,12 +1055,18 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1021
1055
  this.layerChildren.map(function (child) {
1022
1056
  return child.destroy(false);
1023
1057
  });
1024
- this.layerChildren = []; // remove mask list
1058
+ this.layerChildren = []; // remove mask list maskfence 掩膜需要销毁
1059
+
1060
+ var _this$getLayerConfig10 = this.getLayerConfig(),
1061
+ maskfence = _this$getLayerConfig10.maskfence;
1062
+
1063
+ if (maskfence) {
1064
+ this.masks.map(function (mask) {
1065
+ return mask.destroy(false);
1066
+ });
1067
+ this.masks = [];
1068
+ }
1025
1069
 
1026
- this.masks.map(function (mask) {
1027
- return mask.destroy(false);
1028
- });
1029
- this.masks = [];
1030
1070
  this.hooks.beforeDestroy.call(); // 清除sources事件
1031
1071
 
1032
1072
  this.layerSource.off('update', this.sourceEvent);
@@ -1362,11 +1402,11 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1362
1402
  }, {
1363
1403
  key: "needPick",
1364
1404
  value: function needPick(type) {
1365
- var _this$getLayerConfig10 = this.getLayerConfig(),
1366
- _this$getLayerConfig11 = _this$getLayerConfig10.enableHighlight,
1367
- enableHighlight = _this$getLayerConfig11 === void 0 ? true : _this$getLayerConfig11,
1368
- _this$getLayerConfig12 = _this$getLayerConfig10.enableSelect,
1369
- enableSelect = _this$getLayerConfig12 === void 0 ? true : _this$getLayerConfig12; // 判断layer是否监听事件;
1405
+ var _this$getLayerConfig11 = this.getLayerConfig(),
1406
+ _this$getLayerConfig12 = _this$getLayerConfig11.enableHighlight,
1407
+ enableHighlight = _this$getLayerConfig12 === void 0 ? true : _this$getLayerConfig12,
1408
+ _this$getLayerConfig13 = _this$getLayerConfig11.enableSelect,
1409
+ enableSelect = _this$getLayerConfig13 === void 0 ? true : _this$getLayerConfig13; // 判断layer是否监听事件;
1370
1410
 
1371
1411
 
1372
1412
  var isPick = this.eventNames().indexOf(type) !== -1 || this.eventNames().indexOf('un' + type) !== -1;
@@ -1457,9 +1497,11 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1457
1497
  }()
1458
1498
  }, {
1459
1499
  key: "renderModels",
1460
- value: function renderModels(isPicking) {
1500
+ value: function renderModels() {
1461
1501
  var _this11 = this;
1462
1502
 
1503
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1504
+
1463
1505
  // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题
1464
1506
  if (this.encodeDataLength <= 0 && !this.forceRender) {
1465
1507
  return this;
@@ -1468,8 +1510,10 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1468
1510
  this.hooks.beforeRender.call();
1469
1511
  this.models.forEach(function (model) {
1470
1512
  model.draw({
1471
- uniforms: _this11.layerModel.getUninforms()
1472
- }, isPicking);
1513
+ uniforms: _this11.layerModel.getUninforms(),
1514
+ blend: _this11.layerModel.getBlend(),
1515
+ stencil: _this11.layerModel.getStencil(options)
1516
+ }, (options === null || options === void 0 ? void 0 : options.ispick) || false);
1473
1517
  });
1474
1518
  this.hooks.afterRender.call();
1475
1519
  return this;
@@ -11,6 +11,8 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
 
14
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
+
14
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
17
 
16
18
  var _initializerDefineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerDefineProperty"));
@@ -35,6 +37,8 @@ var _lodash = require("lodash");
35
37
 
36
38
  var _blend = require("../utils/blend");
37
39
 
40
+ var _stencil = require("../utils/stencil");
41
+
38
42
  var _dec, _class, _descriptor;
39
43
 
40
44
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -431,6 +435,39 @@ var BaseModel = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
431
435
 
432
436
  return _blend.BlendTypes[_l7Core.BlendType[blend]];
433
437
  }
438
+ }, {
439
+ key: "getStencil",
440
+ value: function getStencil(option) {
441
+ var _this$layer$getLayerC3 = this.layer.getLayerConfig(),
442
+ _this$layer$getLayerC4 = _this$layer$getLayerC3.mask,
443
+ mask = _this$layer$getLayerC4 === void 0 ? false : _this$layer$getLayerC4,
444
+ _this$layer$getLayerC5 = _this$layer$getLayerC3.maskInside,
445
+ maskInside = _this$layer$getLayerC5 === void 0 ? true : _this$layer$getLayerC5,
446
+ enableMask = _this$layer$getLayerC3.enableMask,
447
+ _this$layer$getLayerC6 = _this$layer$getLayerC3.maskOperation,
448
+ maskOperation = _this$layer$getLayerC6 === void 0 ? _l7Core.MaskOperation.AND : _this$layer$getLayerC6; // TODO 临时处理,后期移除MaskLayer
449
+
450
+
451
+ if (this.layer.type === 'MaskLayer') {
452
+ return (0, _stencil.getStencilMask)({
453
+ isStencil: true,
454
+ stencilType: _l7Core.StencilType.SINGLE
455
+ }); // 用于遮罩的stencil 参数
456
+ }
457
+
458
+ if (option.isStencil) {
459
+ return (0, _stencil.getStencilMask)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, option), {}, {
460
+ maskOperation: maskOperation
461
+ })); // 用于遮罩的stencil 参数
462
+ }
463
+
464
+ var maskflag = mask || // mask 兼容历史写法
465
+ enableMask && this.layer.masks.length !== 0 || // 外部图层的mask
466
+ this.layer.tileMask !== undefined; // 瓦片图层
467
+ // !!(mask || enableMask || this.layer.tileMask);
468
+
469
+ return (0, _stencil.getStencil)(maskflag, maskInside);
470
+ }
434
471
  }, {
435
472
  key: "getDefaultStyle",
436
473
  value: function getDefaultStyle() {
@@ -531,10 +568,11 @@ var BaseModel = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
531
568
  key: "getAttribute",
532
569
  value: function getAttribute() {
533
570
  throw new Error('Method not implemented.');
534
- }
571
+ } // eslint-disable-next-line @typescript-eslint/no-unused-vars
572
+
535
573
  }, {
536
574
  key: "render",
537
- value: function render() {
575
+ value: function render(renderOptions) {
538
576
  throw new Error('Method not implemented.');
539
577
  }
540
578
  }, {
@@ -7,14 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
11
 
14
12
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
13
 
16
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
15
 
20
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -32,6 +28,8 @@ var BaseLayerPickService = /*#__PURE__*/function () {
32
28
  (0, _createClass2.default)(BaseLayerPickService, [{
33
29
  key: "pickRender",
34
30
  value: function pickRender(target) {
31
+ var container = this.layer.getContainer();
32
+ var layerService = container.get(_l7Core.TYPES.ILayerService);
35
33
  var layer = this.layer; // 瓦片图层的拾取绘制
36
34
 
37
35
  if (layer.tileLayer) {
@@ -39,34 +37,10 @@ var BaseLayerPickService = /*#__PURE__*/function () {
39
37
  }
40
38
 
41
39
  layer.hooks.beforePickingEncode.call();
42
-
43
- if (layer.masks.length > 0) {
44
- // 若存在 mask,则在 pick 阶段的绘制也启用
45
- layer.masks.filter(function (mask) {
46
- return mask.inited;
47
- }).forEach( /*#__PURE__*/function () {
48
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(m) {
49
- return _regenerator.default.wrap(function _callee$(_context) {
50
- while (1) {
51
- switch (_context.prev = _context.next) {
52
- case 0:
53
- m.render();
54
-
55
- case 1:
56
- case "end":
57
- return _context.stop();
58
- }
59
- }
60
- }, _callee);
61
- }));
62
-
63
- return function (_x) {
64
- return _ref.apply(this, arguments);
65
- };
66
- }());
67
- }
68
-
69
- layer.renderModels(true);
40
+ layerService.renderTileLayerMask(layer);
41
+ layer.renderModels({
42
+ ispick: true
43
+ });
70
44
  layer.hooks.afterPickingEncode.call();
71
45
  }
72
46
  }, {
@@ -85,11 +85,12 @@ var HeatMapLayer = /*#__PURE__*/function (_BaseLayer) {
85
85
  value: function renderModels() {
86
86
  var _this2 = this;
87
87
 
88
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
88
89
  var shape = this.getModelType();
89
90
 
90
91
  if (shape === 'heatmap') {
91
92
  if (this.layerModel) {
92
- this.layerModel.render(); // 独立的渲染流程
93
+ this.layerModel.render(options); // 独立的渲染流程
93
94
  }
94
95
 
95
96
  return this;
@@ -102,7 +103,9 @@ var HeatMapLayer = /*#__PURE__*/function (_BaseLayer) {
102
103
  this.hooks.beforeRender.call();
103
104
  this.models.forEach(function (model) {
104
105
  return model.draw({
105
- uniforms: _this2.layerModel.getUninforms()
106
+ uniforms: _this2.layerModel.getUninforms(),
107
+ blend: _this2.layerModel.getBlend(),
108
+ stencil: _this2.layerModel.getStencil(options)
106
109
  });
107
110
  });
108
111
  this.hooks.afterRender.call();
@@ -23,8 +23,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
23
23
 
24
24
  var _l7Core = require("@antv/l7-core");
25
25
 
26
- var _l7Utils = require("@antv/l7-utils");
27
-
28
26
  var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
29
27
 
30
28
  var _triangulation = require("../../core/triangulation");
@@ -92,14 +90,12 @@ var GridModel = /*#__PURE__*/function (_BaseModel) {
92
90
  key: "buildModels",
93
91
  value: function () {
94
92
  var _buildModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
95
- var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, model;
96
-
93
+ var model;
97
94
  return _regenerator.default.wrap(function _callee2$(_context2) {
98
95
  while (1) {
99
96
  switch (_context2.prev = _context2.next) {
100
97
  case 0:
101
- _ref2 = this.layer.getLayerConfig(), _ref2$mask = _ref2.mask, mask = _ref2$mask === void 0 ? false : _ref2$mask, _ref2$maskInside = _ref2.maskInside, maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
102
- _context2.next = 3;
98
+ _context2.next = 2;
103
99
  return this.layer.buildLayerModel({
104
100
  moduleName: 'heatmapGrid',
105
101
  vertexShader: heatmapGridVert,
@@ -108,15 +104,14 @@ var GridModel = /*#__PURE__*/function (_BaseModel) {
108
104
  primitive: _l7Core.gl.TRIANGLES,
109
105
  depth: {
110
106
  enable: false
111
- },
112
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
107
+ }
113
108
  });
114
109
 
115
- case 3:
110
+ case 2:
116
111
  model = _context2.sent;
117
112
  return _context2.abrupt("return", [model]);
118
113
 
119
- case 5:
114
+ case 4:
120
115
  case "end":
121
116
  return _context2.stop();
122
117
  }
@@ -23,8 +23,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
23
23
 
24
24
  var _l7Core = require("@antv/l7-core");
25
25
 
26
- var _l7Utils = require("@antv/l7-utils");
27
-
28
26
  var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
29
27
 
30
28
  var _triangulation = require("../../core/triangulation");
@@ -92,14 +90,12 @@ var Grid3DModel = /*#__PURE__*/function (_BaseModel) {
92
90
  key: "buildModels",
93
91
  value: function () {
94
92
  var _buildModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
95
- var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, model;
96
-
93
+ var model;
97
94
  return _regenerator.default.wrap(function _callee2$(_context2) {
98
95
  while (1) {
99
96
  switch (_context2.prev = _context2.next) {
100
97
  case 0:
101
- _ref2 = this.layer.getLayerConfig(), _ref2$mask = _ref2.mask, mask = _ref2$mask === void 0 ? false : _ref2$mask, _ref2$maskInside = _ref2.maskInside, maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
102
- _context2.next = 3;
98
+ _context2.next = 2;
103
99
  return this.layer.buildLayerModel({
104
100
  moduleName: 'heatmapGrid3d',
105
101
  vertexShader: heatmapGrid3dVert,
@@ -108,16 +104,14 @@ var Grid3DModel = /*#__PURE__*/function (_BaseModel) {
108
104
  primitive: _l7Core.gl.TRIANGLES,
109
105
  depth: {
110
106
  enable: true
111
- },
112
- blend: this.getBlend(),
113
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
107
+ }
114
108
  });
115
109
 
116
- case 3:
110
+ case 2:
117
111
  model = _context2.sent;
118
112
  return _context2.abrupt("return", [model]);
119
113
 
120
- case 5:
114
+ case 4:
121
115
  case "end":
122
116
  return _context2.stop();
123
117
  }