@antv/l7-layers 2.14.0 → 2.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +62 -18
  5. package/es/core/BaseModel.d.ts +3 -2
  6. package/es/core/BaseModel.js +39 -3
  7. package/es/core/LayerPickService.js +6 -2
  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 +1 -0
  60. package/es/tile/tileLayer/BaseLayer.js +5 -0
  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 +62 -18
  70. package/lib/core/BaseModel.js +40 -2
  71. package/lib/core/LayerPickService.js +6 -2
  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 +5 -0
  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
@@ -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,
@@ -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
  }, {
@@ -50,7 +50,9 @@ var BaseLayerPickService = /*#__PURE__*/function () {
50
50
  while (1) {
51
51
  switch (_context.prev = _context.next) {
52
52
  case 0:
53
- m.render();
53
+ m.render({
54
+ isStencil: true
55
+ });
54
56
 
55
57
  case 1:
56
58
  case "end":
@@ -66,7 +68,9 @@ var BaseLayerPickService = /*#__PURE__*/function () {
66
68
  }());
67
69
  }
68
70
 
69
- layer.renderModels(true);
71
+ layer.renderModels({
72
+ ispick: true
73
+ });
70
74
  layer.hooks.afterPickingEncode.call();
71
75
  }
72
76
  }, {
@@ -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
  }
@@ -76,7 +76,7 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
76
76
 
77
77
  (0, _createClass2.default)(HeatMapModel, [{
78
78
  key: "render",
79
- value: function render() {
79
+ value: function render(options) {
80
80
  var _this = this;
81
81
 
82
82
  var _this$rendererService = this.rendererService,
@@ -97,7 +97,7 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
97
97
  this.updateColorTexture();
98
98
  }
99
99
 
100
- this.shapeType === 'heatmap' ? this.drawColorMode() : this.draw3DHeatMap();
100
+ this.shapeType === 'heatmap' ? this.drawColorMode(options) : this.draw3DHeatMap(options);
101
101
  }
102
102
  }, {
103
103
  key: "getUninforms",
@@ -245,15 +245,6 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
245
245
  cull: {
246
246
  enable: true,
247
247
  face: (0, _l7Utils.getCullFace)(this.mapService.version)
248
- },
249
- blend: {
250
- enable: true,
251
- func: {
252
- srcRGB: _l7Core.gl.ONE,
253
- srcAlpha: 1,
254
- dstRGB: _l7Core.gl.ONE,
255
- dstAlpha: 1
256
- }
257
248
  }
258
249
  });
259
250
 
@@ -278,12 +269,6 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
278
269
  }, {
279
270
  key: "buildHeatmapColor",
280
271
  value: function buildHeatmapColor() {
281
- var _ref = this.layer.getLayerConfig(),
282
- _ref$mask = _ref.mask,
283
- mask = _ref$mask === void 0 ? false : _ref$mask,
284
- _ref$maskInside = _ref.maskInside,
285
- maskInside = _ref$maskInside === void 0 ? true : _ref$maskInside;
286
-
287
272
  this.shaderModuleService.registerModule('heatmapColor', {
288
273
  vs: heatmapColorVert,
289
274
  fs: heatmapColorFrag
@@ -322,13 +307,11 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
322
307
  depth: {
323
308
  enable: false
324
309
  },
325
- blend: this.getBlend(),
326
310
  elements: createElements({
327
311
  data: [0, 2, 1, 2, 3, 1],
328
312
  type: _l7Core.gl.UNSIGNED_INT,
329
313
  count: 6
330
- }),
331
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
314
+ })
332
315
  });
333
316
  }
334
317
  }, {
@@ -336,47 +319,69 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
336
319
  value: function drawIntensityMode() {
337
320
  var _this$intensityModel;
338
321
 
339
- var _ref2 = this.layer.getLayerConfig(),
340
- opacity = _ref2.opacity,
341
- _ref2$intensity = _ref2.intensity,
342
- intensity = _ref2$intensity === void 0 ? 10 : _ref2$intensity,
343
- _ref2$radius = _ref2.radius,
344
- radius = _ref2$radius === void 0 ? 5 : _ref2$radius;
322
+ var _ref = this.layer.getLayerConfig(),
323
+ opacity = _ref.opacity,
324
+ _ref$intensity = _ref.intensity,
325
+ intensity = _ref$intensity === void 0 ? 10 : _ref$intensity,
326
+ _ref$radius = _ref.radius,
327
+ radius = _ref$radius === void 0 ? 5 : _ref$radius;
345
328
 
346
329
  this.layerService.beforeRenderData(this.layer);
347
- this.layer.hooks.beforeRender.call();
330
+ this.layer.hooks.beforeRender.call(); // 绘制密度图
331
+
348
332
  (_this$intensityModel = this.intensityModel) === null || _this$intensityModel === void 0 ? void 0 : _this$intensityModel.draw({
349
333
  uniforms: {
350
334
  u_opacity: opacity || 1.0,
351
335
  u_radius: radius,
352
336
  u_intensity: intensity
337
+ },
338
+ blend: {
339
+ enable: true,
340
+ func: {
341
+ srcRGB: _l7Core.gl.ONE,
342
+ srcAlpha: 1,
343
+ dstRGB: _l7Core.gl.ONE,
344
+ dstAlpha: 1
345
+ }
346
+ },
347
+ stencil: {
348
+ enable: false,
349
+ mask: 0xff,
350
+ func: {
351
+ cmp: 514,
352
+ // gl.EQUAL,
353
+ ref: 1,
354
+ mask: 0xff
355
+ }
353
356
  }
354
357
  });
355
358
  this.layer.hooks.afterRender.call();
356
359
  }
357
360
  }, {
358
361
  key: "drawColorMode",
359
- value: function drawColorMode() {
362
+ value: function drawColorMode(options) {
360
363
  var _this$colorModel;
361
364
 
362
- var _ref3 = this.layer.getLayerConfig(),
363
- opacity = _ref3.opacity;
365
+ var _ref2 = this.layer.getLayerConfig(),
366
+ opacity = _ref2.opacity;
364
367
 
365
368
  (_this$colorModel = this.colorModel) === null || _this$colorModel === void 0 ? void 0 : _this$colorModel.draw({
366
369
  uniforms: {
367
370
  u_opacity: opacity || 1.0,
368
371
  u_colorTexture: this.colorTexture,
369
372
  u_texture: this.heatmapFramerBuffer
370
- }
373
+ },
374
+ blend: this.getBlend(),
375
+ stencil: this.getStencil(options)
371
376
  });
372
377
  }
373
378
  }, {
374
379
  key: "draw3DHeatMap",
375
- value: function draw3DHeatMap() {
380
+ value: function draw3DHeatMap(options) {
376
381
  var _this$colorModel2;
377
382
 
378
- var _ref4 = this.layer.getLayerConfig(),
379
- opacity = _ref4.opacity; // const invert = mat4.invert(
383
+ var _ref3 = this.layer.getLayerConfig(),
384
+ opacity = _ref3.opacity; // const invert = mat4.invert(
380
385
  // mat4.create(),
381
386
  // mat4.fromValues(
382
387
  // // @ts-ignore
@@ -396,18 +401,22 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
396
401
  u_texture: this.heatmapFramerBuffer,
397
402
  u_ViewProjectionMatrixUncentered: this.cameraService.getViewProjectionMatrixUncentered(),
398
403
  u_InverseViewProjectionMatrix: (0, _toConsumableArray2.default)(invert)
399
- }
404
+ },
405
+ blend: {
406
+ enable: true,
407
+ func: {
408
+ srcRGB: _l7Core.gl.SRC_ALPHA,
409
+ srcAlpha: 1,
410
+ dstRGB: _l7Core.gl.ONE_MINUS_SRC_ALPHA,
411
+ dstAlpha: 1
412
+ }
413
+ },
414
+ stencil: this.getStencil(options)
400
415
  });
401
416
  }
402
417
  }, {
403
418
  key: "build3dHeatMap",
404
419
  value: function build3dHeatMap() {
405
- var _ref5 = this.layer.getLayerConfig(),
406
- _ref5$mask = _ref5.mask,
407
- mask = _ref5$mask === void 0 ? false : _ref5$mask,
408
- _ref5$maskInside = _ref5.maskInside,
409
- maskInside = _ref5$maskInside === void 0 ? true : _ref5$maskInside;
410
-
411
420
  var getViewportSize = this.rendererService.getViewportSize;
412
421
 
413
422
  var _getViewportSize2 = getViewportSize(),
@@ -467,8 +476,7 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
467
476
  data: triangulation.indices,
468
477
  type: _l7Core.gl.UNSIGNED_INT,
469
478
  count: triangulation.indices.length
470
- }),
471
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
479
+ })
472
480
  });
473
481
  }
474
482
  }, {
@@ -485,8 +493,8 @@ var HeatMapModel = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE
485
493
  this.texture.destroy();
486
494
  }
487
495
 
488
- var _ref6 = this.layer.getLayerConfig(),
489
- rampColors = _ref6.rampColors;
496
+ var _ref4 = this.layer.getLayerConfig(),
497
+ rampColors = _ref4.rampColors;
490
498
 
491
499
  var imageData = (0, _l7Utils.generateColorRamp)(rampColors);
492
500
  this.colorTexture = createTexture2D({
@@ -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 HexagonModel = /*#__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: 'heatmapHexagon',
105
101
  vertexShader: heatmapGridVert,
@@ -108,16 +104,14 @@ var HexagonModel = /*#__PURE__*/function (_BaseModel) {
108
104
  depth: {
109
105
  enable: false
110
106
  },
111
- primitive: _l7Core.gl.TRIANGLES,
112
- blend: this.getBlend(),
113
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
107
+ primitive: _l7Core.gl.TRIANGLES
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
  }