@antv/l7-layers 2.9.32-alpha.4 → 2.9.32-alpha.5

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 (55) hide show
  1. package/es/core/BaseLayer.d.ts +1 -0
  2. package/es/core/BaseLayer.js +20 -3
  3. package/es/core/interface.d.ts +4 -0
  4. package/es/mask/index.js +7 -0
  5. package/es/mask/models/index.d.ts +1 -1
  6. package/es/mask/models/index.js +3 -1
  7. package/es/plugins/DataMappingPlugin.d.ts +0 -1
  8. package/es/plugins/DataMappingPlugin.js +1 -8
  9. package/es/plugins/ShaderUniformPlugin.d.ts +5 -1
  10. package/es/plugins/ShaderUniformPlugin.js +10 -11
  11. package/es/raster/index.d.ts +1 -1
  12. package/es/raster/index.js +4 -0
  13. package/es/raster/models/index.d.ts +1 -1
  14. package/es/raster/models/index.js +2 -0
  15. package/es/raster/models/raster.d.ts +2 -1
  16. package/es/raster/models/raster.js +118 -44
  17. package/es/raster/models/rasterRgb.d.ts +20 -0
  18. package/es/raster/models/rasterRgb.js +226 -0
  19. package/es/raster/shaders/raster_rgb_frag.glsl +12 -0
  20. package/es/tile/tileFactory/base.d.ts +1 -1
  21. package/es/tile/tileFactory/base.js +8 -6
  22. package/es/tile/tileFactory/index.d.ts +1 -1
  23. package/es/tile/tileFactory/index.js +4 -0
  24. package/es/tile/tileFactory/line.d.ts +1 -1
  25. package/es/tile/tileFactory/line.js +8 -8
  26. package/es/tile/tileFactory/mask.d.ts +12 -0
  27. package/es/tile/tileFactory/mask.js +63 -0
  28. package/es/tile/tileFactory/point.d.ts +1 -1
  29. package/es/tile/tileFactory/point.js +8 -8
  30. package/es/tile/tileFactory/rasterData.js +6 -1
  31. package/es/tile/tileFactory/rasterDataLayer.d.ts +2 -1
  32. package/es/tile/tileFactory/rasterDataLayer.js +6 -1
  33. package/es/tile/tileFactory/vectorLayer.d.ts +6 -3
  34. package/es/tile/tileFactory/vectorLayer.js +4 -0
  35. package/es/utils/layerData.js +9 -6
  36. package/lib/core/BaseLayer.js +20 -3
  37. package/lib/mask/index.js +8 -0
  38. package/lib/mask/models/index.js +4 -1
  39. package/lib/plugins/DataMappingPlugin.js +1 -8
  40. package/lib/plugins/ShaderUniformPlugin.js +10 -11
  41. package/lib/raster/index.js +4 -0
  42. package/lib/raster/models/index.js +3 -0
  43. package/lib/raster/models/raster.js +120 -44
  44. package/lib/raster/models/rasterRgb.js +241 -0
  45. package/lib/raster/shaders/raster_rgb_frag.glsl +12 -0
  46. package/lib/tile/tileFactory/base.js +8 -7
  47. package/lib/tile/tileFactory/index.js +5 -0
  48. package/lib/tile/tileFactory/line.js +8 -8
  49. package/lib/tile/tileFactory/mask.js +74 -0
  50. package/lib/tile/tileFactory/point.js +8 -8
  51. package/lib/tile/tileFactory/rasterData.js +6 -1
  52. package/lib/tile/tileFactory/rasterDataLayer.js +7 -1
  53. package/lib/tile/tileFactory/vectorLayer.js +5 -0
  54. package/lib/utils/layerData.js +12 -8
  55. package/package.json +6 -6
@@ -1,6 +1,7 @@
1
1
  import { Version } from '@antv/l7-maps';
2
2
  import Source from '@antv/l7-source';
3
3
  import { isColor, normalize, rgb2arr } from '@antv/l7-utils';
4
+ import { cloneDeep } from 'lodash';
4
5
 
5
6
  function getArrowPoints(p1, p2) {
6
7
  var dir = [p2[0] - p1[0], p2[1] - p1[1]];
@@ -9,11 +10,11 @@ function getArrowPoints(p1, p2) {
9
10
  return arrowPoint;
10
11
  }
11
12
 
12
- function adjustData2Amap2Coordinates(mappedData, mapService) {
13
- var _this = this;
14
-
13
+ function adjustData2Amap2Coordinates(mappedData, mapService, layer) {
15
14
  // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移
16
15
  if (mappedData.length > 0 && mapService.version === Version['GAODE2.x']) {
16
+ var layerCenter = layer.coordCenter;
17
+
17
18
  if (typeof mappedData[0].coordinates[0] === 'number') {
18
19
  // 单个的点数据
19
20
  // @ts-ignore
@@ -25,8 +26,9 @@ function adjustData2Amap2Coordinates(mappedData, mapService) {
25
26
 
26
27
  d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)
27
28
  // @ts-ignore
29
+ // d.coordinates = mapService.lngLatToCoord(d.coordinates);
28
30
 
29
- d.coordinates = _this.mapService.lngLatToCoord(d.coordinates);
31
+ d.coordinates = mapService.lngLatToCoordByLayer(d.coordinates, layerCenter);
30
32
  });
31
33
  } else {
32
34
  // 连续的线、面数据
@@ -39,8 +41,9 @@ function adjustData2Amap2Coordinates(mappedData, mapService) {
39
41
 
40
42
  d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)
41
43
  // @ts-ignore
44
+ // d.coordinates = mapService.lngLatToCoords(d.coordinates);
42
45
 
43
- d.coordinates = _this.mapService.lngLatToCoords(d.coordinates);
46
+ d.coordinates = mapService.lngLatToCoordsByLayer(d.coordinates, layerCenter);
44
47
  });
45
48
  }
46
49
  }
@@ -158,7 +161,7 @@ function mapping(attributes, data, fontService, mapService, minimumColor, layer)
158
161
  return encodeRecord;
159
162
  }); // 调整数据兼容 Amap2.0
160
163
 
161
- adjustData2Amap2Coordinates(mappedData, mapService); // 调整数据兼容 SimpleCoordinates
164
+ adjustData2Amap2Coordinates(mappedData, mapService, layer); // 调整数据兼容 SimpleCoordinates
162
165
 
163
166
  adjustData2SimpleCoordinates(mappedData, mapService);
164
167
  return mappedData;
@@ -499,7 +499,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
499
499
  }, {
500
500
  key: "source",
501
501
  value: function source(data, options) {
502
- if (data !== null && data !== void 0 && data.data) {
502
+ if ((data === null || data === void 0 ? void 0 : data.type) === 'source') {
503
503
  // 判断是否为source
504
504
  this.setSource(data);
505
505
  return this;
@@ -1044,6 +1044,15 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1044
1044
 
1045
1045
 
1046
1046
  this.layerSource.on('sourceUpdate', function () {
1047
+ if (_this8.coordCenter === undefined) {
1048
+ var layerCenter = _this8.layerSource.center;
1049
+ _this8.coordCenter = layerCenter;
1050
+ _this8.mapService.setCoordCenter && _this8.mapService.setCoordCenter(layerCenter); // // @ts-ignore
1051
+ // this.mapService.map.customCoords.setCenter(layerCenter);
1052
+ // // @ts-ignore
1053
+ // this.mapService.setCustomCoordCenter(layerCenter);
1054
+ }
1055
+
1047
1056
  _this8.sourceEvent();
1048
1057
  });
1049
1058
  }
@@ -1174,6 +1183,8 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1174
1183
  return reject(err);
1175
1184
  });
1176
1185
  } else {
1186
+ // console.log(this.encodedData[1].originCoordinates[0])
1187
+ // console.log(this.encodedData[1].coordinates[0])
1177
1188
  var _this9$styleAttribute = _this9.styleAttributeService.createAttributesAndIndices(_this9.encodedData, triangulation, segmentNumber),
1178
1189
  attributes = _this9$styleAttribute.attributes,
1179
1190
  elements = _this9$styleAttribute.elements,
@@ -1377,14 +1388,20 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1377
1388
  }, {
1378
1389
  key: "dispatchModelLoad",
1379
1390
  value: function dispatchModelLoad(models) {
1391
+ var _this11 = this;
1392
+
1380
1393
  this.models.forEach(function (model) {
1381
1394
  return model.destroy();
1382
1395
  });
1383
1396
  this.models = [];
1384
1397
  this.models = models;
1385
1398
  this.emit('modelLoaded', null);
1386
- this.modelLoaded = true;
1387
- this.layerService.throttleRenderLayers();
1399
+ this.modelLoaded = true; // Tip: setTimeout 用于延迟绘制,可以让拖动图层时连续的 setData 更加平滑 - L7Draw
1400
+
1401
+ setTimeout(function () {
1402
+ // Tip: 使用 renderLayers 而不是 throttleRenderLayers,让图层之间的 setData 更新绘制不存在延迟
1403
+ _this11.layerService.renderLayers();
1404
+ }, 32);
1388
1405
  }
1389
1406
  }, {
1390
1407
  key: "reRender",
package/lib/mask/index.js CHANGED
@@ -27,6 +27,8 @@ var _BaseLayer2 = _interopRequireDefault(require("../core/BaseLayer"));
27
27
 
28
28
  var _models = _interopRequireDefault(require("./models"));
29
29
 
30
+ var _utils = require("../tile/utils");
31
+
30
32
  var _l7Core = require("@antv/l7-core");
31
33
 
32
34
  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; } } }; }
@@ -159,6 +161,12 @@ var MaskLayer = /*#__PURE__*/function (_BaseLayer) {
159
161
  }, {
160
162
  key: "getModelType",
161
163
  value: function getModelType() {
164
+ var parserType = this.layerSource.getParserType();
165
+
166
+ if ((0, _utils.isVectorTile)(parserType)) {
167
+ return 'vectorMask';
168
+ }
169
+
162
170
  return 'fill';
163
171
  }
164
172
  }]);
@@ -7,10 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _tileModel = _interopRequireDefault(require("../../tile/models/tileModel"));
11
+
10
12
  var _fill = _interopRequireDefault(require("./fill"));
11
13
 
12
14
  var MaskModels = {
13
- fill: _fill.default
15
+ fill: _fill.default,
16
+ vectorMask: _tileModel.default
14
17
  };
15
18
  var _default = MaskModels;
16
19
  exports.default = _default;
@@ -269,7 +269,7 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
269
269
 
270
270
  // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移
271
271
  if (mappedData.length > 0 && this.mapService.version === _l7Maps.Version['GAODE2.x']) {
272
- var layerCenter = this.getLayerCenter(layer);
272
+ var layerCenter = layer.coordCenter || layer.getSource().center;
273
273
 
274
274
  if (typeof mappedData[0].coordinates[0] === 'number') {
275
275
  // 单个的点数据
@@ -288,7 +288,6 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
288
288
  });
289
289
  } else {
290
290
  // 连续的线、面数据
291
- // @ts-ignore
292
291
  mappedData // TODO: 避免经纬度被重复计算导致坐标位置偏移
293
292
  .filter(function (d) {
294
293
  return !d.originCoordinates;
@@ -318,12 +317,6 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
318
317
  });
319
318
  }
320
319
  }
321
- }, {
322
- key: "getLayerCenter",
323
- value: function getLayerCenter(layer) {
324
- var source = layer.getSource();
325
- return source.center;
326
- }
327
320
  }, {
328
321
  key: "unProjectCoordinates",
329
322
  value: function unProjectCoordinates(coordinates) {
@@ -62,13 +62,7 @@ _dec = (0, _inversify.injectable)(), _dec2 = (0, _inversify.inject)(_l7Core.TYPE
62
62
  _this.coordinateSystemService.refresh(offset);
63
63
 
64
64
  if (version === 'GAODE2.x') {
65
- var layerCenter = _this.getLayerCenter(layer); // @ts-ignore
66
-
67
-
68
- _this.mapService.map.customCoords.setCenter(layerCenter); // @ts-ignore
69
-
70
-
71
- _this.mapService.setCustomCoordCenter(layerCenter); // @ts-ignore
65
+ _this.setLayerCenter(layer); // @ts-ignore
72
66
 
73
67
 
74
68
  mvp = _this.mapService.map.customCoords.getMVPMatrix(); // mvp = amapCustomCoords.getMVPMatrix()
@@ -88,11 +82,16 @@ _dec = (0, _inversify.injectable)(), _dec2 = (0, _inversify.inject)(_l7Core.TYPE
88
82
  }); // TODO:脏检查,决定是否需要渲染
89
83
  });
90
84
  }
85
+ /**
86
+ * 对于每个 layer 都有不同的几何中心点,因此在绘制每个 layer 的时候都需要重新设置
87
+ * @param layer
88
+ */
89
+
91
90
  }, {
92
- key: "getLayerCenter",
93
- value: function getLayerCenter(layer) {
94
- var source = layer.getSource();
95
- return source.center;
91
+ key: "setLayerCenter",
92
+ value: function setLayerCenter(layer) {
93
+ if (layer.coordCenter === undefined) layer.coordCenter = layer.getSource().center;
94
+ this.mapService.setCoordCenter && this.mapService.setCoordCenter(layer.coordCenter);
96
95
  }
97
96
  }]);
98
97
  return ShaderUniformPlugin;
@@ -87,6 +87,7 @@ var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
87
87
  var type = this.getModelType();
88
88
  var defaultConfig = {
89
89
  raster: {},
90
+ rasterRgb: {},
90
91
  raster3d: {},
91
92
  rasterTile: {}
92
93
  };
@@ -102,6 +103,9 @@ var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
102
103
  case 'raster':
103
104
  return 'raster';
104
105
 
106
+ case 'rasterRgb':
107
+ return 'rasterRgb';
108
+
105
109
  case 'rasterTile':
106
110
  return 'rasterTile';
107
111
 
@@ -11,8 +11,11 @@ var _tileModel = _interopRequireDefault(require("../../tile/models/tileModel"));
11
11
 
12
12
  var _raster = _interopRequireDefault(require("./raster"));
13
13
 
14
+ var _rasterRgb = _interopRequireDefault(require("./rasterRgb"));
15
+
14
16
  var RasterModels = {
15
17
  raster: _raster.default,
18
+ rasterRgb: _rasterRgb.default,
16
19
  raster3d: _raster.default,
17
20
  rasterTile: _tileModel.default
18
21
  };
@@ -7,6 +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
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
10
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
15
 
12
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -78,53 +82,125 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
78
82
  u_colorTexture: this.colorTexture
79
83
  };
80
84
  }
85
+ }, {
86
+ key: "getRasterData",
87
+ value: function () {
88
+ var _getRasterData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(parserDataItem) {
89
+ var _yield$parserDataItem, rasterData, width, height;
90
+
91
+ return _regenerator.default.wrap(function _callee$(_context) {
92
+ while (1) {
93
+ switch (_context.prev = _context.next) {
94
+ case 0:
95
+ if (!Array.isArray(parserDataItem.data)) {
96
+ _context.next = 4;
97
+ break;
98
+ }
99
+
100
+ return _context.abrupt("return", {
101
+ data: parserDataItem.data,
102
+ width: parserDataItem.width,
103
+ height: parserDataItem.height
104
+ });
105
+
106
+ case 4:
107
+ _context.next = 6;
108
+ return parserDataItem.data;
109
+
110
+ case 6:
111
+ _yield$parserDataItem = _context.sent;
112
+ rasterData = _yield$parserDataItem.rasterData;
113
+ width = _yield$parserDataItem.width;
114
+ height = _yield$parserDataItem.height;
115
+ return _context.abrupt("return", {
116
+ data: Array.from(rasterData),
117
+ width: width,
118
+ height: height
119
+ });
120
+
121
+ case 11:
122
+ case "end":
123
+ return _context.stop();
124
+ }
125
+ }
126
+ }, _callee);
127
+ }));
128
+
129
+ function getRasterData(_x) {
130
+ return _getRasterData.apply(this, arguments);
131
+ }
132
+
133
+ return getRasterData;
134
+ }()
81
135
  }, {
82
136
  key: "initModels",
83
- value: function initModels(callbackModel) {
84
- var _ref2 = this.layer.getLayerConfig(),
85
- _ref2$mask = _ref2.mask,
86
- mask = _ref2$mask === void 0 ? false : _ref2$mask,
87
- _ref2$maskInside = _ref2.maskInside,
88
- maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside,
89
- rampColorsData = _ref2.rampColorsData,
90
- rampColors = _ref2.rampColors;
91
-
92
- var source = this.layer.getSource();
93
- var createTexture2D = this.rendererService.createTexture2D;
94
- var parserDataItem = source.data.dataArray[0];
95
- this.texture = createTexture2D({
96
- data: parserDataItem.data,
97
- width: parserDataItem.width,
98
- height: parserDataItem.height,
99
- format: _l7Core.gl.LUMINANCE,
100
- type: _l7Core.gl.FLOAT // aniso: 4,
137
+ value: function () {
138
+ var _initModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(callbackModel) {
139
+ var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, rampColorsData, rampColors, source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height, imageData;
101
140
 
102
- });
103
- var imageData = rampColorsData ? rampColorsData : (0, _l7Utils.generateColorRamp)(rampColors);
104
- this.colorTexture = createTexture2D({
105
- data: imageData.data,
106
- width: imageData.width,
107
- height: imageData.height,
108
- flipY: false
109
- });
110
- this.layer.buildLayerModel({
111
- moduleName: 'rasterImageData',
112
- vertexShader: rasterVert,
113
- fragmentShader: rasterFrag,
114
- triangulation: _triangulation.RasterImageTriangulation,
115
- primitive: _l7Core.gl.TRIANGLES,
116
- depth: {
117
- enable: false
118
- },
119
- stencil: (0, _l7Utils.getMask)(mask, maskInside),
120
- pick: false
121
- }).then(function (model) {
122
- callbackModel([model]);
123
- }).catch(function (err) {
124
- console.warn(err);
125
- callbackModel([]);
126
- });
127
- }
141
+ return _regenerator.default.wrap(function _callee2$(_context2) {
142
+ while (1) {
143
+ switch (_context2.prev = _context2.next) {
144
+ case 0:
145
+ _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, rampColorsData = _ref2.rampColorsData, rampColors = _ref2.rampColors;
146
+ source = this.layer.getSource();
147
+ createTexture2D = this.rendererService.createTexture2D;
148
+ parserDataItem = source.data.dataArray[0];
149
+ _context2.next = 6;
150
+ return this.getRasterData(parserDataItem);
151
+
152
+ case 6:
153
+ _yield$this$getRaster = _context2.sent;
154
+ data = _yield$this$getRaster.data;
155
+ width = _yield$this$getRaster.width;
156
+ height = _yield$this$getRaster.height;
157
+ this.texture = createTexture2D({
158
+ data: data,
159
+ width: width,
160
+ height: height,
161
+ format: _l7Core.gl.LUMINANCE,
162
+ type: _l7Core.gl.FLOAT // aniso: 4,
163
+
164
+ });
165
+ imageData = rampColorsData ? rampColorsData : (0, _l7Utils.generateColorRamp)(rampColors);
166
+ this.colorTexture = createTexture2D({
167
+ data: imageData.data,
168
+ width: imageData.width,
169
+ height: imageData.height,
170
+ flipY: false
171
+ });
172
+ this.layer.buildLayerModel({
173
+ moduleName: 'rasterImageData',
174
+ vertexShader: rasterVert,
175
+ fragmentShader: rasterFrag,
176
+ triangulation: _triangulation.RasterImageTriangulation,
177
+ primitive: _l7Core.gl.TRIANGLES,
178
+ depth: {
179
+ enable: false
180
+ },
181
+ stencil: (0, _l7Utils.getMask)(mask, maskInside),
182
+ pick: false
183
+ }).then(function (model) {
184
+ callbackModel([model]);
185
+ }).catch(function (err) {
186
+ console.warn(err);
187
+ callbackModel([]);
188
+ });
189
+
190
+ case 14:
191
+ case "end":
192
+ return _context2.stop();
193
+ }
194
+ }
195
+ }, _callee2, this);
196
+ }));
197
+
198
+ function initModels(_x2) {
199
+ return _initModels.apply(this, arguments);
200
+ }
201
+
202
+ return initModels;
203
+ }()
128
204
  }, {
129
205
  key: "buildModels",
130
206
  value: function buildModels(callbackModel) {
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
+
28
+ var _l7Core = require("@antv/l7-core");
29
+
30
+ var _l7Utils = require("@antv/l7-utils");
31
+
32
+ var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
33
+
34
+ var _triangulation = require("../../core/triangulation");
35
+
36
+ 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); }; }
37
+
38
+ 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; } }
39
+
40
+ /* babel-plugin-inline-import '../shaders/raster_rgb_frag.glsl' */
41
+ var rasterFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nuniform float u_channelRMax: 256.;\nuniform float u_channelGMax: 256.;\nuniform float u_channelBMax: 256.;\nvarying vec2 v_texCoord;\n\nvoid main() {\n vec3 rgb = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).rgb;\n gl_FragColor = vec4(rgb.r/u_channelRMax, rgb.g/u_channelGMax, rgb.b/u_channelBMax, u_opacity);\n}";
42
+
43
+ /* babel-plugin-inline-import '../shaders/raster_2d_vert.glsl' */
44
+ 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";
45
+
46
+ var RasterModel = /*#__PURE__*/function (_BaseModel) {
47
+ (0, _inherits2.default)(RasterModel, _BaseModel);
48
+
49
+ var _super = _createSuper(RasterModel);
50
+
51
+ function RasterModel() {
52
+ var _this;
53
+
54
+ (0, _classCallCheck2.default)(this, RasterModel);
55
+
56
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
57
+ args[_key] = arguments[_key];
58
+ }
59
+
60
+ _this = _super.call.apply(_super, [this].concat(args));
61
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "channelRMax", 256);
62
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "channelGMax", 256);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "channelBMax", 256);
64
+ return _this;
65
+ }
66
+
67
+ (0, _createClass2.default)(RasterModel, [{
68
+ key: "getUninforms",
69
+ value: function getUninforms() {
70
+ var _ref = this.layer.getLayerConfig(),
71
+ _ref$opacity = _ref.opacity,
72
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
73
+ channelRMax = _ref.channelRMax,
74
+ channelGMax = _ref.channelGMax,
75
+ channelBMax = _ref.channelBMax;
76
+
77
+ return {
78
+ u_opacity: opacity || 1,
79
+ u_texture: this.texture,
80
+ u_channelRMax: channelRMax !== undefined ? channelRMax : this.channelRMax,
81
+ u_channelGMax: channelGMax !== undefined ? channelGMax : this.channelGMax,
82
+ u_channelBMax: channelBMax !== undefined ? channelBMax : this.channelBMax
83
+ };
84
+ }
85
+ }, {
86
+ key: "getRasterData",
87
+ value: function () {
88
+ var _getRasterData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(parserDataItem) {
89
+ var _yield$parserDataItem, rasterData, width, height, channelR, channelG, channelB;
90
+
91
+ return _regenerator.default.wrap(function _callee$(_context) {
92
+ while (1) {
93
+ switch (_context.prev = _context.next) {
94
+ case 0:
95
+ if (!Array.isArray(parserDataItem.data)) {
96
+ _context.next = 4;
97
+ break;
98
+ }
99
+
100
+ return _context.abrupt("return", {
101
+ data: parserDataItem.data,
102
+ width: parserDataItem.width,
103
+ height: parserDataItem.height
104
+ });
105
+
106
+ case 4:
107
+ _context.next = 6;
108
+ return parserDataItem.data;
109
+
110
+ case 6:
111
+ _yield$parserDataItem = _context.sent;
112
+ rasterData = _yield$parserDataItem.rasterData;
113
+ width = _yield$parserDataItem.width;
114
+ height = _yield$parserDataItem.height;
115
+ channelR = _yield$parserDataItem.channelR;
116
+ channelG = _yield$parserDataItem.channelG;
117
+ channelB = _yield$parserDataItem.channelB;
118
+ this.channelRMax = channelR;
119
+ this.channelGMax = channelG;
120
+ this.channelBMax = channelB;
121
+ return _context.abrupt("return", {
122
+ data: Array.from(rasterData),
123
+ width: width,
124
+ height: height
125
+ });
126
+
127
+ case 17:
128
+ case "end":
129
+ return _context.stop();
130
+ }
131
+ }
132
+ }, _callee, this);
133
+ }));
134
+
135
+ function getRasterData(_x) {
136
+ return _getRasterData.apply(this, arguments);
137
+ }
138
+
139
+ return getRasterData;
140
+ }()
141
+ }, {
142
+ key: "initModels",
143
+ value: function () {
144
+ var _initModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(callbackModel) {
145
+ var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height;
146
+
147
+ return _regenerator.default.wrap(function _callee2$(_context2) {
148
+ while (1) {
149
+ switch (_context2.prev = _context2.next) {
150
+ case 0:
151
+ _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;
152
+ source = this.layer.getSource();
153
+ createTexture2D = this.rendererService.createTexture2D;
154
+ parserDataItem = source.data.dataArray[0];
155
+ _context2.next = 6;
156
+ return this.getRasterData(parserDataItem);
157
+
158
+ case 6:
159
+ _yield$this$getRaster = _context2.sent;
160
+ data = _yield$this$getRaster.data;
161
+ width = _yield$this$getRaster.width;
162
+ height = _yield$this$getRaster.height;
163
+ this.texture = createTexture2D({
164
+ // @ts-ignore
165
+ data: data,
166
+ width: width,
167
+ height: height,
168
+ format: _l7Core.gl.RGB,
169
+ type: _l7Core.gl.FLOAT
170
+ });
171
+ this.layer.buildLayerModel({
172
+ moduleName: 'rasterImageDataRGBA',
173
+ vertexShader: rasterVert,
174
+ fragmentShader: rasterFrag,
175
+ triangulation: _triangulation.RasterImageTriangulation,
176
+ primitive: _l7Core.gl.TRIANGLES,
177
+ depth: {
178
+ enable: false
179
+ },
180
+ stencil: (0, _l7Utils.getMask)(mask, maskInside),
181
+ pick: false
182
+ }).then(function (model) {
183
+ callbackModel([model]);
184
+ }).catch(function (err) {
185
+ console.warn(err);
186
+ callbackModel([]);
187
+ });
188
+
189
+ case 12:
190
+ case "end":
191
+ return _context2.stop();
192
+ }
193
+ }
194
+ }, _callee2, this);
195
+ }));
196
+
197
+ function initModels(_x2) {
198
+ return _initModels.apply(this, arguments);
199
+ }
200
+
201
+ return initModels;
202
+ }()
203
+ }, {
204
+ key: "buildModels",
205
+ value: function buildModels(callbackModel) {
206
+ this.initModels(callbackModel);
207
+ }
208
+ }, {
209
+ key: "clearModels",
210
+ value: function clearModels() {
211
+ var _this$texture;
212
+
213
+ (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
214
+ }
215
+ }, {
216
+ key: "registerBuiltinAttributes",
217
+ value: function registerBuiltinAttributes() {
218
+ // point layer size;
219
+ this.styleAttributeService.registerStyleAttribute({
220
+ name: 'uv',
221
+ type: _l7Core.AttributeType.Attribute,
222
+ descriptor: {
223
+ name: 'a_Uv',
224
+ buffer: {
225
+ // give the WebGL driver a hint that this buffer may change
226
+ usage: _l7Core.gl.DYNAMIC_DRAW,
227
+ data: [],
228
+ type: _l7Core.gl.FLOAT
229
+ },
230
+ size: 2,
231
+ update: function update(feature, featureIdx, vertex) {
232
+ return [vertex[3], vertex[4]];
233
+ }
234
+ }
235
+ });
236
+ }
237
+ }]);
238
+ return RasterModel;
239
+ }(_BaseModel2.default);
240
+
241
+ exports.default = RasterModel;