@antv/l7-layers 2.14.1 → 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
@@ -31,8 +31,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
31
31
 
32
32
  var _l7Core = require("@antv/l7-core");
33
33
 
34
- var _l7Utils = require("@antv/l7-utils");
35
-
36
34
  var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
37
35
 
38
36
  var _triangulation = require("../../core/triangulation");
@@ -48,7 +46,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
48
46
  var rasterVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n }\n}\n";
49
47
 
50
48
  /* babel-plugin-inline-import '../shaders/raster_rgb_frag.glsl' */
51
- var rasterFrag = "precision mediump float;\nuniform vec2 u_rminmax: vec2(0,255); \nuniform vec2 u_gminmax: vec2(0,255);\nuniform vec2 u_bminmax: vec2(0,255);\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nuniform float u_noDataValue : 0.0;\nvarying vec2 v_texCoord;\n\nvoid main() {\n vec3 rgb = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).rgb;\n if(rgb == vec3(u_noDataValue)) {\n gl_FragColor = vec4(0.0, 0, 0, 0.0);\n } else {\n gl_FragColor = vec4(rgb.r / (u_rminmax.y -u_rminmax.x), rgb.g /(u_gminmax.y -u_gminmax.x), rgb.b/ (u_bminmax.y - u_bminmax.x), u_opacity);\n }\n \n}";
49
+ var rasterFrag = "precision mediump float;\nuniform vec2 u_rminmax: vec2(0,255); \nuniform vec2 u_gminmax: vec2(0,255);\nuniform vec2 u_bminmax: vec2(0,255);\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nuniform float u_noDataValue : 0.0;\nvarying vec2 v_texCoord;\n\nvoid main() {\n vec3 rgb = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).rgb;\n if(rgb == vec3(u_noDataValue)) {\n gl_FragColor = vec4(0.0, 0, 0, 0.0);\n } else {\n gl_FragColor = vec4(rgb.r / (u_rminmax.y -u_rminmax.x), rgb.g /(u_gminmax.y -u_gminmax.x), rgb.b/ (u_bminmax.y - u_bminmax.x), u_opacity);\n }\n if(gl_FragColor.a < 0.01)\n discard;\n \n}";
52
50
 
53
51
  var RasterModel = /*#__PURE__*/function (_BaseModel) {
54
52
  (0, _inherits2.default)(RasterModel, _BaseModel);
@@ -154,20 +152,19 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
154
152
  key: "initModels",
155
153
  value: function () {
156
154
  var _initModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
157
- var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height, model;
155
+ var source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height, model;
158
156
 
159
157
  return _regenerator.default.wrap(function _callee2$(_context2) {
160
158
  while (1) {
161
159
  switch (_context2.prev = _context2.next) {
162
160
  case 0:
163
- _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;
164
161
  source = this.layer.getSource();
165
162
  createTexture2D = this.rendererService.createTexture2D;
166
163
  parserDataItem = source.data.dataArray[0];
167
- _context2.next = 6;
164
+ _context2.next = 5;
168
165
  return this.getRasterData(parserDataItem);
169
166
 
170
- case 6:
167
+ case 5:
171
168
  _yield$this$getRaster = _context2.sent;
172
169
  data = _yield$this$getRaster.data;
173
170
  width = _yield$this$getRaster.width;
@@ -180,7 +177,7 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
180
177
  format: _l7Core.gl.RGB,
181
178
  type: _l7Core.gl.FLOAT
182
179
  });
183
- _context2.next = 13;
180
+ _context2.next = 12;
184
181
  return this.layer.buildLayerModel({
185
182
  moduleName: 'rasterImageDataRGBA',
186
183
  vertexShader: rasterVert,
@@ -189,15 +186,14 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
189
186
  primitive: _l7Core.gl.TRIANGLES,
190
187
  depth: {
191
188
  enable: false
192
- },
193
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
189
+ }
194
190
  });
195
191
 
196
- case 13:
192
+ case 12:
197
193
  model = _context2.sent;
198
194
  return _context2.abrupt("return", [model]);
199
195
 
200
- case 15:
196
+ case 14:
201
197
  case "end":
202
198
  return _context2.stop();
203
199
  }
@@ -34,7 +34,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
34
34
  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; } }
35
35
 
36
36
  /* babel-plugin-inline-import '../shaders/raster_terrain_rgb_frag.glsl' */
37
- var Raster_terrainFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\n\nuniform sampler2D u_texture;\nuniform sampler2D u_colorTexture;\n\nvarying vec2 v_texCoord;\n\nuniform vec2 u_domain;\nuniform float u_noDataValue;\nuniform bool u_clampLow: true;\nuniform bool u_clampHigh: true;\n\nvoid main() {\n vec4 baseColor = texture2D(u_texture, vec2(v_texCoord.x, v_texCoord.y)) * 256.0;\n float r = baseColor.r * 256.0 * 256.0;\n float g = baseColor.g * 256.0;\n float b = baseColor.b;\n float value = (r + g + b) * 0.1 - 10000.0;\n \n if (value == u_noDataValue) {\n gl_FragColor = vec4(0.0, 0, 0, 0.0);\n } else if ((!u_clampLow && value < u_domain[0]) || (!u_clampHigh && value > u_domain[1])) {\n gl_FragColor = vec4(0.0, 0, 0, 0.0);\n } else {\n float normalisedValue =(value - u_domain[0]) / (u_domain[1] - u_domain[0]);\n vec4 color = texture2D(u_colorTexture, vec2(normalisedValue, 0));\n gl_FragColor = color;\n gl_FragColor.a = gl_FragColor.a * u_opacity ;\n }\n}\n";
37
+ var Raster_terrainFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\n\nuniform sampler2D u_texture;\nuniform sampler2D u_colorTexture;\n\nvarying vec2 v_texCoord;\n\nuniform vec2 u_domain;\nuniform float u_noDataValue;\nuniform bool u_clampLow: true;\nuniform bool u_clampHigh: true;\n\nvoid main() {\n vec4 baseColor = texture2D(u_texture, vec2(v_texCoord.x, v_texCoord.y)) * 256.0;\n float r = baseColor.r * 256.0 * 256.0;\n float g = baseColor.g * 256.0;\n float b = baseColor.b;\n float value = (r + g + b) * 0.1 - 10000.0;\n \n if (value == u_noDataValue) {\n gl_FragColor = vec4(0.0, 0, 0, 0.0);\n } else if ((!u_clampLow && value < u_domain[0]) || (!u_clampHigh && value > u_domain[1])) {\n gl_FragColor = vec4(0.0, 0, 0, 0.0);\n } else {\n float normalisedValue =(value - u_domain[0]) / (u_domain[1] - u_domain[0]);\n vec4 color = texture2D(u_colorTexture, vec2(normalisedValue, 0));\n gl_FragColor = color;\n gl_FragColor.a = gl_FragColor.a * u_opacity ;\n if(gl_FragColor.a < 0.01)\n discard;\n }\n}\n";
38
38
 
39
39
  /* babel-plugin-inline-import '../shaders/rater_terrain_rgb_vert.glsl' */
40
40
  var Raster_terrainVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n }\n}\n";
@@ -87,26 +87,24 @@ var RasterTerrainRGB = /*#__PURE__*/function (_BaseModel) {
87
87
  key: "initModels",
88
88
  value: function () {
89
89
  var _initModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
90
- var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, source, createTexture2D, imageData, model;
91
-
90
+ var source, createTexture2D, imageData, model;
92
91
  return _regenerator.default.wrap(function _callee$(_context) {
93
92
  while (1) {
94
93
  switch (_context.prev = _context.next) {
95
94
  case 0:
96
- _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;
97
95
  source = this.layer.getSource();
98
96
  createTexture2D = this.rendererService.createTexture2D;
99
- _context.next = 5;
97
+ _context.next = 4;
100
98
  return source.data.images;
101
99
 
102
- case 5:
100
+ case 4:
103
101
  imageData = _context.sent;
104
102
  this.texture = createTexture2D({
105
103
  data: imageData[0],
106
104
  width: imageData[0].width,
107
105
  height: imageData[0].height
108
106
  });
109
- _context.next = 9;
107
+ _context.next = 8;
110
108
  return this.layer.buildLayerModel({
111
109
  moduleName: 'RasterTileDataImage',
112
110
  vertexShader: Raster_terrainVert,
@@ -115,16 +113,14 @@ var RasterTerrainRGB = /*#__PURE__*/function (_BaseModel) {
115
113
  primitive: _l7Core.gl.TRIANGLES,
116
114
  depth: {
117
115
  enable: false
118
- },
119
- blend: this.getBlend(),
120
- stencil: (0, _l7Utils.getMask)(mask, maskInside)
116
+ }
121
117
  });
122
118
 
123
- case 9:
119
+ case 8:
124
120
  model = _context.sent;
125
121
  return _context.abrupt("return", [model]);
126
122
 
127
- case 11:
123
+ case 10:
128
124
  case "end":
129
125
  return _context.stop();
130
126
  }
@@ -16,14 +16,17 @@ void main() {
16
16
 
17
17
  float value = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).r;
18
18
  if (value == u_noDataValue || isnan_emu(value))
19
- gl_FragColor = vec4(0.0, 0, 0, 0.0);
19
+ discard;
20
20
  else if ((!u_clampLow && value < u_domain[0]) || (!u_clampHigh && value > u_domain[1]))
21
- gl_FragColor = vec4(0, 0, 0, 0);
21
+ discard;
22
22
  else {
23
-
24
23
  float normalisedValue =(value - u_domain[0]) / (u_domain[1] -u_domain[0]);
25
24
  vec4 color = texture2D(u_colorTexture,vec2(normalisedValue, 0));
25
+
26
26
  gl_FragColor = color;
27
27
  gl_FragColor.a = gl_FragColor.a * u_opacity ;
28
+ if(gl_FragColor.a < 0.01)
29
+ discard;
30
+
28
31
  }
29
32
  }
@@ -5,5 +5,7 @@ uniform float u_opacity: 1.0;
5
5
  void main() {
6
6
  gl_FragColor = v_color;
7
7
  gl_FragColor.a *= u_opacity;
8
+ if(gl_FragColor.a < 0.01)
9
+ discard;
8
10
 
9
11
  }
@@ -14,5 +14,7 @@ void main() {
14
14
  } else {
15
15
  gl_FragColor = vec4(rgb.r / (u_rminmax.y -u_rminmax.x), rgb.g /(u_gminmax.y -u_gminmax.x), rgb.b/ (u_bminmax.y - u_bminmax.x), u_opacity);
16
16
  }
17
+ if(gl_FragColor.a < 0.01)
18
+ discard;
17
19
 
18
20
  }
@@ -27,5 +27,7 @@ void main() {
27
27
  vec4 color = texture2D(u_colorTexture, vec2(normalisedValue, 0));
28
28
  gl_FragColor = color;
29
29
  gl_FragColor.a = gl_FragColor.a * u_opacity ;
30
+ if(gl_FragColor.a < 0.01)
31
+ discard;
30
32
  }
31
33
  }
@@ -145,20 +145,20 @@ var TileLayerService = /*#__PURE__*/function () {
145
145
  var _render = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
146
146
  var _this2 = this;
147
147
 
148
- var layers;
148
+ var layers, renders;
149
149
  return _regenerator.default.wrap(function _callee2$(_context2) {
150
150
  while (1) {
151
151
  switch (_context2.prev = _context2.next) {
152
152
  case 0:
153
153
  layers = this.getRenderLayers();
154
- layers.map( /*#__PURE__*/function () {
154
+ renders = layers.map( /*#__PURE__*/function () {
155
155
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(layer) {
156
156
  return _regenerator.default.wrap(function _callee$(_context) {
157
157
  while (1) {
158
158
  switch (_context.prev = _context.next) {
159
159
  case 0:
160
160
  _context.next = 2;
161
- return _this2.layerService.renderLayer(layer);
161
+ return _this2.layerService.renderTileLayer(layer);
162
162
 
163
163
  case 2:
164
164
  case "end":
@@ -172,8 +172,9 @@ var TileLayerService = /*#__PURE__*/function () {
172
172
  return _ref2.apply(this, arguments);
173
173
  };
174
174
  }());
175
+ Promise.all(renders);
175
176
 
176
- case 2:
177
+ case 3:
177
178
  case "end":
178
179
  return _context2.stop();
179
180
  }
@@ -11,5 +11,5 @@ var ProxyFuncs = [
11
11
  * 1. 需要作用到所属子图层才会生效的方法
12
12
  * 2. 不需要主动重新创建 model 的方法
13
13
  */
14
- 'shape', 'color', 'size', 'style', 'animate', 'filter', 'rotate', 'scale', 'setBlend', 'setSelect', 'setActive'];
14
+ 'shape', 'color', 'size', 'style', 'animate', 'filter', 'rotate', 'scale', 'setBlend', 'setSelect', 'setActive', 'disableMask', 'enableMask'];
15
15
  exports.ProxyFuncs = ProxyFuncs;
@@ -23,6 +23,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
23
23
 
24
24
  var _l7Core = require("@antv/l7-core");
25
25
 
26
+ var _polygon = _interopRequireDefault(require("../../polygon"));
27
+
26
28
  var _util = require("./util");
27
29
 
28
30
  var Tile = /*#__PURE__*/function () {
@@ -31,6 +33,7 @@ var Tile = /*#__PURE__*/function () {
31
33
  (0, _defineProperty2.default)(this, "visible", true);
32
34
  (0, _defineProperty2.default)(this, "layers", []);
33
35
  (0, _defineProperty2.default)(this, "isLoaded", false);
36
+ (0, _defineProperty2.default)(this, "tileMaskLayers", []);
34
37
  this.parent = parent;
35
38
  this.sourceTile = sourceTile;
36
39
  this.x = sourceTile.x;
@@ -66,30 +69,80 @@ var Tile = /*#__PURE__*/function () {
66
69
  }, {
67
70
  key: "getLayerOptions",
68
71
  value: function getLayerOptions() {
72
+ var _options$maskLayers;
73
+
69
74
  var options = this.parent.getLayerConfig();
70
75
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, options), {}, {
71
76
  autoFit: false,
72
- mask: (0, _util.isNeedMask)(this.parent.type) || options.mask
77
+ maskLayers: this.getMaskLayer(),
78
+ tileMask: (0, _util.isNeedMask)(this.parent.type),
79
+ mask: options.mask || ((_options$maskLayers = options.maskLayers) === null || _options$maskLayers === void 0 ? void 0 : _options$maskLayers.length) !== 0 && options.enableMask
80
+ });
81
+ } // 获取Mask 图层
82
+
83
+ }, {
84
+ key: "getMaskLayer",
85
+ value: function getMaskLayer() {
86
+ var _this = this;
87
+
88
+ var _this$parent$getLayer = this.parent.getLayerConfig(),
89
+ maskLayers = _this$parent$getLayer.maskLayers;
90
+
91
+ var layers = [];
92
+ maskLayers === null || maskLayers === void 0 ? void 0 : maskLayers.forEach(function (layer) {
93
+ if (!layer.tileLayer) {
94
+ // 非瓦片图层返回图层本身,瓦片图层返回对应的行列号图层
95
+ layers.push(layer);
96
+ return layer;
97
+ }
98
+
99
+ var tileLayer = layer.tileLayer;
100
+ var tile = tileLayer.getTile(_this.sourceTile.key);
101
+ var l = tile === null || tile === void 0 ? void 0 : tile.getLayers()[0];
102
+
103
+ if (l) {
104
+ layers.push(l);
105
+ }
73
106
  });
107
+ return layers;
74
108
  }
75
109
  }, {
76
- key: "addMask",
110
+ key: "addTileMask",
77
111
  value: function () {
78
- var _addMask = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(layer, mask) {
79
- var container;
112
+ var _addTileMask = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
113
+ var mask, container, mainLayer;
80
114
  return _regenerator.default.wrap(function _callee$(_context) {
81
115
  while (1) {
82
116
  switch (_context.prev = _context.next) {
83
117
  case 0:
118
+ mask = new _polygon.default({
119
+ visible: false,
120
+ enablePicking: false
121
+ }).source({
122
+ type: 'FeatureCollection',
123
+ features: [this.sourceTile.bboxPolygon]
124
+ }, {
125
+ parser: {
126
+ type: 'geojson',
127
+ featureId: 'id'
128
+ }
129
+ }).shape('fill');
84
130
  container = (0, _l7Core.createLayerContainer)(this.parent.sceneContainer);
85
131
  mask.setContainer(container, this.parent.sceneContainer);
86
- _context.next = 4;
132
+ _context.next = 5;
87
133
  return mask.init();
88
134
 
89
- case 4:
90
- layer.addMaskLayer(mask);
91
-
92
135
  case 5:
136
+ this.tileMask = mask;
137
+ mainLayer = this.getMainLayer();
138
+
139
+ if (mainLayer !== undefined) {
140
+ mainLayer.tileMask = mask;
141
+ }
142
+
143
+ return _context.abrupt("return", mask);
144
+
145
+ case 9:
93
146
  case "end":
94
147
  return _context.stop();
95
148
  }
@@ -97,6 +150,38 @@ var Tile = /*#__PURE__*/function () {
97
150
  }, _callee, this);
98
151
  }));
99
152
 
153
+ function addTileMask() {
154
+ return _addTileMask.apply(this, arguments);
155
+ }
156
+
157
+ return addTileMask;
158
+ }()
159
+ }, {
160
+ key: "addMask",
161
+ value: function () {
162
+ var _addMask = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(layer, mask) {
163
+ var container;
164
+ return _regenerator.default.wrap(function _callee2$(_context2) {
165
+ while (1) {
166
+ switch (_context2.prev = _context2.next) {
167
+ case 0:
168
+ container = (0, _l7Core.createLayerContainer)(this.parent.sceneContainer);
169
+ mask.setContainer(container, this.parent.sceneContainer);
170
+ _context2.next = 4;
171
+ return mask.init();
172
+
173
+ case 4:
174
+ layer.addMask(mask);
175
+ this.tileMaskLayers.push(mask);
176
+
177
+ case 6:
178
+ case "end":
179
+ return _context2.stop();
180
+ }
181
+ }
182
+ }, _callee2, this);
183
+ }));
184
+
100
185
  function addMask(_x, _x2) {
101
186
  return _addMask.apply(this, arguments);
102
187
  }
@@ -106,26 +191,26 @@ var Tile = /*#__PURE__*/function () {
106
191
  }, {
107
192
  key: "addLayer",
108
193
  value: function () {
109
- var _addLayer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(layer) {
194
+ var _addLayer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(layer) {
110
195
  var container;
111
- return _regenerator.default.wrap(function _callee2$(_context2) {
196
+ return _regenerator.default.wrap(function _callee3$(_context3) {
112
197
  while (1) {
113
- switch (_context2.prev = _context2.next) {
198
+ switch (_context3.prev = _context3.next) {
114
199
  case 0:
115
200
  // set flag
116
201
  layer.isTileLayer = true;
117
202
  container = (0, _l7Core.createLayerContainer)(this.parent.sceneContainer);
118
203
  layer.setContainer(container, this.parent.sceneContainer);
119
204
  this.layers.push(layer);
120
- _context2.next = 6;
205
+ _context3.next = 6;
121
206
  return layer.init();
122
207
 
123
208
  case 6:
124
209
  case "end":
125
- return _context2.stop();
210
+ return _context3.stop();
126
211
  }
127
212
  }
128
- }, _callee2, this);
213
+ }, _callee3, this);
129
214
  }));
130
215
 
131
216
  function addLayer(_x3) {
@@ -175,6 +260,9 @@ var Tile = /*#__PURE__*/function () {
175
260
  }, {
176
261
  key: "destroy",
177
262
  value: function destroy() {
263
+ var _this$tileMask;
264
+
265
+ (_this$tileMask = this.tileMask) === null || _this$tileMask === void 0 ? void 0 : _this$tileMask.destroy();
178
266
  this.layers.forEach(function (layer) {
179
267
  return layer.destroy();
180
268
  });
@@ -23,8 +23,6 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
23
23
 
24
24
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
25
 
26
- var _mask = _interopRequireDefault(require("../../mask"));
27
-
28
26
  var _Tile2 = _interopRequireDefault(require("./Tile"));
29
27
 
30
28
  var _util = require("./util");
@@ -75,18 +73,17 @@ var VectorTile = /*#__PURE__*/function (_Tile) {
75
73
 
76
74
  layer[attr]((_attributes$attr = attributes[attr]) === null || _attributes$attr === void 0 ? void 0 : _attributes$attr.field, (_attributes$attr2 = attributes[attr]) === null || _attributes$attr2 === void 0 ? void 0 : _attributes$attr2.values);
77
75
  });
76
+ _context.next = 11;
77
+ return this.addLayer(layer);
78
78
 
79
- if (!layerOptions.mask) {
80
- _context.next = 12;
79
+ case 11:
80
+ if (!layerOptions.tileMask) {
81
+ _context.next = 14;
81
82
  break;
82
83
  }
83
84
 
84
- _context.next = 12;
85
- return this.addTileMask(layer);
86
-
87
- case 12:
88
85
  _context.next = 14;
89
- return this.addLayer(layer);
86
+ return this.addTileMask();
90
87
 
91
88
  case 14:
92
89
  this.setLayerMinMaxZoom(layer);
@@ -105,44 +102,6 @@ var VectorTile = /*#__PURE__*/function (_Tile) {
105
102
  }
106
103
 
107
104
  return initTileLayer;
108
- }() // Todo 校验数据有效性
109
-
110
- }, {
111
- key: "addTileMask",
112
- value: function () {
113
- var _addTileMask = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(layer) {
114
- var mask;
115
- return _regenerator.default.wrap(function _callee2$(_context2) {
116
- while (1) {
117
- switch (_context2.prev = _context2.next) {
118
- case 0:
119
- mask = new _mask.default({
120
- layerType: 'MaskLayer'
121
- }).source({
122
- type: 'FeatureCollection',
123
- features: [this.sourceTile.bboxPolygon]
124
- }, {
125
- parser: {
126
- type: 'geojson',
127
- featureId: 'id'
128
- }
129
- });
130
- _context2.next = 3;
131
- return this.addMask(layer, mask);
132
-
133
- case 3:
134
- case "end":
135
- return _context2.stop();
136
- }
137
- }
138
- }, _callee2, this);
139
- }));
140
-
141
- function addTileMask(_x) {
142
- return _addTileMask.apply(this, arguments);
143
- }
144
-
145
- return addTileMask;
146
105
  }()
147
106
  }, {
148
107
  key: "getSourceOption",
@@ -171,6 +171,11 @@ var BaseTileLayer = /*#__PURE__*/function () {
171
171
  key: "getTiles",
172
172
  value: function getTiles() {
173
173
  return this.tileLayerService.getTiles();
174
+ }
175
+ }, {
176
+ key: "getTile",
177
+ value: function getTile(key) {
178
+ return this.tileLayerService.getTile(key);
174
179
  } // 防抖操作
175
180
 
176
181
  }, {
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getStencil = getStencil;
7
+ exports.getStencilMask = getStencilMask;
8
+
9
+ var _l7Core = require("@antv/l7-core");
10
+
11
+ // 掩膜配置
12
+ function getStencil(mask, maskInside) {
13
+ return {
14
+ enable: mask,
15
+ mask: 0xff,
16
+ func: {
17
+ cmp: _l7Core.gl.EQUAL,
18
+ // gl.EQUAL,
19
+ ref: maskInside ? 1 : 0,
20
+ mask: 1
21
+ }
22
+ };
23
+ }
24
+
25
+ // 模版配置
26
+ function getStencilMask(option) {
27
+ if (option.maskOperation === _l7Core.MaskOperation.OR) {
28
+ return {
29
+ enable: true,
30
+ mask: 0xff,
31
+ func: {
32
+ cmp: _l7Core.gl.ALWAYS,
33
+ ref: 1,
34
+ mask: 0xff
35
+ },
36
+ opFront: {
37
+ fail: _l7Core.gl.KEEP,
38
+ zfail: _l7Core.gl.REPLACE,
39
+ zpass: _l7Core.gl.REPLACE
40
+ }
41
+ };
42
+ }
43
+
44
+ return {
45
+ enable: true,
46
+ mask: 0xff,
47
+ func: {
48
+ cmp: option.stencilType === _l7Core.StencilType.SINGLE // 单层
49
+ ? _l7Core.gl.ALWAYS : option.stencilIndex === 0 // 多层
50
+ ? _l7Core.gl.ALWAYS : _l7Core.gl.LESS,
51
+ ref: option.stencilType === _l7Core.StencilType.SINGLE ? 1 : option.stencilIndex === 0 ? 2 : 1,
52
+ mask: 0xff
53
+ },
54
+ opFront: {
55
+ fail: _l7Core.gl.KEEP,
56
+ zfail: _l7Core.gl.REPLACE,
57
+ zpass: _l7Core.gl.REPLACE
58
+ }
59
+ };
60
+ }
package/lib/wind/index.js CHANGED
@@ -83,8 +83,10 @@ var WindLayer = /*#__PURE__*/function (_BaseLayer) {
83
83
  }, {
84
84
  key: "renderModels",
85
85
  value: function renderModels() {
86
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
87
+
86
88
  if (this.layerModel) {
87
- this.layerModel.render(); // 独立的渲染流程
89
+ this.layerModel.render(options); // 独立的渲染流程
88
90
  }
89
91
 
90
92
  return this;
@@ -77,14 +77,14 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
77
77
 
78
78
  (0, _createClass2.default)(WindModel, [{
79
79
  key: "render",
80
- value: function render() {
80
+ value: function render(options) {
81
81
  var _this2 = this;
82
82
 
83
- // Tip: 控制风场的平均更新频率
83
+ this.drawColorMode(options); // Tip: 控制风场的平均更新频率
84
+
84
85
  this.frequency.run(function () {
85
86
  _this2.drawWind();
86
87
  });
87
- this.drawColorMode();
88
88
  }
89
89
  }, {
90
90
  key: "getUninforms",
@@ -100,13 +100,13 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
100
100
  _source$data2$images,
101
101
  _this3 = this;
102
102
 
103
- 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;
103
+ 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;
104
104
 
105
105
  return _regenerator.default.wrap(function _callee$(_context) {
106
106
  while (1) {
107
107
  switch (_context.prev = _context.next) {
108
108
  case 0:
109
- _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;
109
+ _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;
110
110
  createTexture2D = this.rendererService.createTexture2D;
111
111
  source = this.layer.getSource();
112
112
  this.texture = createTexture2D({
@@ -162,9 +162,7 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
162
162
  primitive: _l7Core.gl.TRIANGLES,
163
163
  depth: {
164
164
  enable: false
165
- },
166
- stencil: (0, _l7Utils.getMask)(mask, maskInside),
167
- blend: this.getBlend()
165
+ }
168
166
  });
169
167
 
170
168
  case 10:
@@ -328,6 +326,8 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
328
326
  value: function drawColorMode() {
329
327
  var _this$colorModel;
330
328
 
329
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
330
+
331
331
  var _ref3 = this.layer.getLayerConfig(),
332
332
  opacity = _ref3.opacity;
333
333
 
@@ -338,7 +338,9 @@ var WindModel = /*#__PURE__*/function (_BaseModel) {
338
338
  uniforms: {
339
339
  u_opacity: opacity || 1.0,
340
340
  u_texture: this.texture
341
- }
341
+ },
342
+ blend: this.getBlend(),
343
+ stencil: this.getStencil(options)
342
344
  });
343
345
  this.layer.hooks.afterRender.call();
344
346
  }