@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
@@ -6,6 +6,7 @@ import { Container } from 'inversify';
6
6
  export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter<LayerEventType> implements ILayer {
7
7
  id: string;
8
8
  name: string;
9
+ coordCenter: number[];
9
10
  type: string;
10
11
  visible: boolean;
11
12
  zIndex: number;
@@ -500,7 +500,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
500
500
  }, {
501
501
  key: "source",
502
502
  value: function source(data, options) {
503
- if (data !== null && data !== void 0 && data.data) {
503
+ if ((data === null || data === void 0 ? void 0 : data.type) === 'source') {
504
504
  // 判断是否为source
505
505
  this.setSource(data);
506
506
  return this;
@@ -1047,6 +1047,15 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
1047
1047
 
1048
1048
 
1049
1049
  this.layerSource.on('sourceUpdate', function () {
1050
+ if (_this8.coordCenter === undefined) {
1051
+ var layerCenter = _this8.layerSource.center;
1052
+ _this8.coordCenter = layerCenter;
1053
+ _this8.mapService.setCoordCenter && _this8.mapService.setCoordCenter(layerCenter); // // @ts-ignore
1054
+ // this.mapService.map.customCoords.setCenter(layerCenter);
1055
+ // // @ts-ignore
1056
+ // this.mapService.setCustomCoordCenter(layerCenter);
1057
+ }
1058
+
1050
1059
  _this8.sourceEvent();
1051
1060
  });
1052
1061
  }
@@ -1178,6 +1187,8 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
1178
1187
  return reject(err);
1179
1188
  });
1180
1189
  } else {
1190
+ // console.log(this.encodedData[1].originCoordinates[0])
1191
+ // console.log(this.encodedData[1].coordinates[0])
1181
1192
  var _this9$styleAttribute = _this9.styleAttributeService.createAttributesAndIndices(_this9.encodedData, triangulation, segmentNumber),
1182
1193
  attributes = _this9$styleAttribute.attributes,
1183
1194
  elements = _this9$styleAttribute.elements,
@@ -1381,14 +1392,20 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
1381
1392
  }, {
1382
1393
  key: "dispatchModelLoad",
1383
1394
  value: function dispatchModelLoad(models) {
1395
+ var _this11 = this;
1396
+
1384
1397
  this.models.forEach(function (model) {
1385
1398
  return model.destroy();
1386
1399
  });
1387
1400
  this.models = [];
1388
1401
  this.models = models;
1389
1402
  this.emit('modelLoaded', null);
1390
- this.modelLoaded = true;
1391
- this.layerService.throttleRenderLayers();
1403
+ this.modelLoaded = true; // Tip: setTimeout 用于延迟绘制,可以让拖动图层时连续的 setData 更加平滑 - L7Draw
1404
+
1405
+ setTimeout(function () {
1406
+ // Tip: 使用 renderLayers 而不是 throttleRenderLayers,让图层之间的 setData 更新绘制不存在延迟
1407
+ _this11.layerService.renderLayers();
1408
+ }, 32);
1392
1409
  }
1393
1410
  }, {
1394
1411
  key: "reRender",
@@ -120,6 +120,7 @@ export interface IRasterTileLayerStyleOptions extends IBaseLayerStyleOptions {
120
120
  export interface IMaskLayerStyleOptions extends IBaseLayerStyleOptions {
121
121
  opacity: number;
122
122
  color: string;
123
+ sourceLayer?: string;
123
124
  }
124
125
  export interface IWindLayerStyleOptions extends IBaseLayerStyleOptions {
125
126
  uMin?: number;
@@ -217,5 +218,8 @@ export interface IRasterLayerStyleOptions extends IBaseLayerStyleOptions {
217
218
  clampHigh: boolean;
218
219
  rampColors: IColorRamp;
219
220
  rampColorsData?: ImageData | IImagedata;
221
+ channelRMax?: number;
222
+ channelGMax?: number;
223
+ channelBMax?: number;
220
224
  }
221
225
  export {};
package/es/mask/index.js CHANGED
@@ -19,6 +19,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
19
19
 
20
20
  import BaseLayer from "../core/BaseLayer";
21
21
  import MaskModels from "./models";
22
+ import { isVectorTile } from "../tile/utils";
22
23
  import { TYPES } from '@antv/l7-core';
23
24
 
24
25
  var MaskLayer = /*#__PURE__*/function (_BaseLayer) {
@@ -143,6 +144,12 @@ var MaskLayer = /*#__PURE__*/function (_BaseLayer) {
143
144
  }, {
144
145
  key: "getModelType",
145
146
  value: function getModelType() {
147
+ var parserType = this.layerSource.getParserType();
148
+
149
+ if (isVectorTile(parserType)) {
150
+ return 'vectorMask';
151
+ }
152
+
146
153
  return 'fill';
147
154
  }
148
155
  }]);
@@ -1,4 +1,4 @@
1
- export declare type MaskModelType = 'fill';
1
+ export declare type MaskModelType = 'fill' | 'vectorMask';
2
2
  declare const MaskModels: {
3
3
  [key in MaskModelType]: any;
4
4
  };
@@ -1,5 +1,7 @@
1
+ import MaskTileModel from "../../tile/models/tileModel";
1
2
  import FillModel from "./fill";
2
3
  var MaskModels = {
3
- fill: FillModel
4
+ fill: FillModel,
5
+ vectorMask: MaskTileModel
4
6
  };
5
7
  export default MaskModels;
@@ -11,7 +11,6 @@ export default class DataMappingPlugin implements ILayerPlugin {
11
11
  private mapLayerMapping;
12
12
  private adjustData2Amap2Coordinates;
13
13
  private adjustData2SimpleCoordinates;
14
- private getLayerCenter;
15
14
  private unProjectCoordinates;
16
15
  private applyAttributeMapping;
17
16
  private applyMapLayerAttributeMapping;
@@ -254,7 +254,7 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IMapService),
254
254
 
255
255
  // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移
256
256
  if (mappedData.length > 0 && this.mapService.version === Version['GAODE2.x']) {
257
- var layerCenter = this.getLayerCenter(layer);
257
+ var layerCenter = layer.coordCenter || layer.getSource().center;
258
258
 
259
259
  if (typeof mappedData[0].coordinates[0] === 'number') {
260
260
  // 单个的点数据
@@ -273,7 +273,6 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IMapService),
273
273
  });
274
274
  } else {
275
275
  // 连续的线、面数据
276
- // @ts-ignore
277
276
  mappedData // TODO: 避免经纬度被重复计算导致坐标位置偏移
278
277
  .filter(function (d) {
279
278
  return !d.originCoordinates;
@@ -303,12 +302,6 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IMapService),
303
302
  });
304
303
  }
305
304
  }
306
- }, {
307
- key: "getLayerCenter",
308
- value: function getLayerCenter(layer) {
309
- var source = layer.getSource();
310
- return source.center;
311
- }
312
305
  }, {
313
306
  key: "unProjectCoordinates",
314
307
  value: function unProjectCoordinates(coordinates) {
@@ -13,5 +13,9 @@ export default class ShaderUniformPlugin implements ILayerPlugin {
13
13
  private readonly rendererService;
14
14
  private readonly mapService;
15
15
  apply(layer: ILayer): void;
16
- private getLayerCenter;
16
+ /**
17
+ * 对于每个 layer 都有不同的几何中心点,因此在绘制每个 layer 的时候都需要重新设置
18
+ * @param layer
19
+ */
20
+ private setLayerCenter;
17
21
  }
@@ -48,13 +48,7 @@ var ShaderUniformPlugin = (_dec = injectable(), _dec2 = inject(TYPES.ICameraServ
48
48
  _this.coordinateSystemService.refresh(offset);
49
49
 
50
50
  if (version === 'GAODE2.x') {
51
- var layerCenter = _this.getLayerCenter(layer); // @ts-ignore
52
-
53
-
54
- _this.mapService.map.customCoords.setCenter(layerCenter); // @ts-ignore
55
-
56
-
57
- _this.mapService.setCustomCoordCenter(layerCenter); // @ts-ignore
51
+ _this.setLayerCenter(layer); // @ts-ignore
58
52
 
59
53
 
60
54
  mvp = _this.mapService.map.customCoords.getMVPMatrix(); // mvp = amapCustomCoords.getMVPMatrix()
@@ -74,11 +68,16 @@ var ShaderUniformPlugin = (_dec = injectable(), _dec2 = inject(TYPES.ICameraServ
74
68
  }); // TODO:脏检查,决定是否需要渲染
75
69
  });
76
70
  }
71
+ /**
72
+ * 对于每个 layer 都有不同的几何中心点,因此在绘制每个 layer 的时候都需要重新设置
73
+ * @param layer
74
+ */
75
+
77
76
  }, {
78
- key: "getLayerCenter",
79
- value: function getLayerCenter(layer) {
80
- var source = layer.getSource();
81
- return source.center;
77
+ key: "setLayerCenter",
78
+ value: function setLayerCenter(layer) {
79
+ if (layer.coordCenter === undefined) layer.coordCenter = layer.getSource().center;
80
+ this.mapService.setCoordCenter && this.mapService.setCoordCenter(layer.coordCenter);
82
81
  }
83
82
  }]);
84
83
 
@@ -14,6 +14,6 @@ export default class RaterLayer extends BaseLayer<IRasterLayerStyleOptions> {
14
14
  };
15
15
  };
16
16
  };
17
- protected getDefaultConfig(): {} | {} | {};
17
+ protected getDefaultConfig(): {} | {} | {} | {};
18
18
  protected getModelType(): RasterModelType;
19
19
  }
@@ -73,6 +73,7 @@ var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
73
73
  var type = this.getModelType();
74
74
  var defaultConfig = {
75
75
  raster: {},
76
+ rasterRgb: {},
76
77
  raster3d: {},
77
78
  rasterTile: {}
78
79
  };
@@ -88,6 +89,9 @@ var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
88
89
  case 'raster':
89
90
  return 'raster';
90
91
 
92
+ case 'rasterRgb':
93
+ return 'rasterRgb';
94
+
91
95
  case 'rasterTile':
92
96
  return 'rasterTile';
93
97
 
@@ -1,4 +1,4 @@
1
- export declare type RasterModelType = 'raster' | 'raster3d' | 'rasterTile';
1
+ export declare type RasterModelType = 'raster' | 'raster3d' | 'rasterTile' | 'rasterRgb';
2
2
  declare const RasterModels: {
3
3
  [key in RasterModelType]: any;
4
4
  };
@@ -1,7 +1,9 @@
1
1
  import RasterTileModel from "../../tile/models/tileModel";
2
2
  import RasterModel from "./raster";
3
+ import RasterRgbModel from "./rasterRgb";
3
4
  var RasterModels = {
4
5
  raster: RasterModel,
6
+ rasterRgb: RasterRgbModel,
5
7
  raster3d: RasterModel,
6
8
  rasterTile: RasterTileModel
7
9
  };
@@ -13,7 +13,8 @@ export default class RasterModel extends BaseModel {
13
13
  u_noDataValue: number;
14
14
  u_colorTexture: ITexture2D;
15
15
  };
16
- initModels(callbackModel: (models: IModel[]) => void): void;
16
+ private getRasterData;
17
+ initModels(callbackModel: (models: IModel[]) => void): Promise<void>;
17
18
  buildModels(callbackModel: (models: IModel[]) => void): void;
18
19
  clearModels(): void;
19
20
  protected registerBuiltinAttributes(): void;
@@ -1,8 +1,10 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
3
  import _createClass from "@babel/runtime/helpers/createClass";
3
4
  import _inherits from "@babel/runtime/helpers/inherits";
4
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
6
8
 
7
9
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
8
10
 
@@ -62,53 +64,125 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
62
64
  u_colorTexture: this.colorTexture
63
65
  };
64
66
  }
67
+ }, {
68
+ key: "getRasterData",
69
+ value: function () {
70
+ var _getRasterData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(parserDataItem) {
71
+ var _yield$parserDataItem, rasterData, width, height;
72
+
73
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
74
+ while (1) {
75
+ switch (_context.prev = _context.next) {
76
+ case 0:
77
+ if (!Array.isArray(parserDataItem.data)) {
78
+ _context.next = 4;
79
+ break;
80
+ }
81
+
82
+ return _context.abrupt("return", {
83
+ data: parserDataItem.data,
84
+ width: parserDataItem.width,
85
+ height: parserDataItem.height
86
+ });
87
+
88
+ case 4:
89
+ _context.next = 6;
90
+ return parserDataItem.data;
91
+
92
+ case 6:
93
+ _yield$parserDataItem = _context.sent;
94
+ rasterData = _yield$parserDataItem.rasterData;
95
+ width = _yield$parserDataItem.width;
96
+ height = _yield$parserDataItem.height;
97
+ return _context.abrupt("return", {
98
+ data: Array.from(rasterData),
99
+ width: width,
100
+ height: height
101
+ });
102
+
103
+ case 11:
104
+ case "end":
105
+ return _context.stop();
106
+ }
107
+ }
108
+ }, _callee);
109
+ }));
110
+
111
+ function getRasterData(_x) {
112
+ return _getRasterData.apply(this, arguments);
113
+ }
114
+
115
+ return getRasterData;
116
+ }()
65
117
  }, {
66
118
  key: "initModels",
67
- value: function initModels(callbackModel) {
68
- var _ref2 = this.layer.getLayerConfig(),
69
- _ref2$mask = _ref2.mask,
70
- mask = _ref2$mask === void 0 ? false : _ref2$mask,
71
- _ref2$maskInside = _ref2.maskInside,
72
- maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside,
73
- rampColorsData = _ref2.rampColorsData,
74
- rampColors = _ref2.rampColors;
75
-
76
- var source = this.layer.getSource();
77
- var createTexture2D = this.rendererService.createTexture2D;
78
- var parserDataItem = source.data.dataArray[0];
79
- this.texture = createTexture2D({
80
- data: parserDataItem.data,
81
- width: parserDataItem.width,
82
- height: parserDataItem.height,
83
- format: gl.LUMINANCE,
84
- type: gl.FLOAT // aniso: 4,
119
+ value: function () {
120
+ var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(callbackModel) {
121
+ var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, rampColorsData, rampColors, source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height, imageData;
122
+
123
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
124
+ while (1) {
125
+ switch (_context2.prev = _context2.next) {
126
+ case 0:
127
+ _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;
128
+ source = this.layer.getSource();
129
+ createTexture2D = this.rendererService.createTexture2D;
130
+ parserDataItem = source.data.dataArray[0];
131
+ _context2.next = 6;
132
+ return this.getRasterData(parserDataItem);
133
+
134
+ case 6:
135
+ _yield$this$getRaster = _context2.sent;
136
+ data = _yield$this$getRaster.data;
137
+ width = _yield$this$getRaster.width;
138
+ height = _yield$this$getRaster.height;
139
+ this.texture = createTexture2D({
140
+ data: data,
141
+ width: width,
142
+ height: height,
143
+ format: gl.LUMINANCE,
144
+ type: gl.FLOAT // aniso: 4,
145
+
146
+ });
147
+ imageData = rampColorsData ? rampColorsData : generateColorRamp(rampColors);
148
+ this.colorTexture = createTexture2D({
149
+ data: imageData.data,
150
+ width: imageData.width,
151
+ height: imageData.height,
152
+ flipY: false
153
+ });
154
+ this.layer.buildLayerModel({
155
+ moduleName: 'rasterImageData',
156
+ vertexShader: rasterVert,
157
+ fragmentShader: rasterFrag,
158
+ triangulation: RasterImageTriangulation,
159
+ primitive: gl.TRIANGLES,
160
+ depth: {
161
+ enable: false
162
+ },
163
+ stencil: getMask(mask, maskInside),
164
+ pick: false
165
+ }).then(function (model) {
166
+ callbackModel([model]);
167
+ }).catch(function (err) {
168
+ console.warn(err);
169
+ callbackModel([]);
170
+ });
171
+
172
+ case 14:
173
+ case "end":
174
+ return _context2.stop();
175
+ }
176
+ }
177
+ }, _callee2, this);
178
+ }));
85
179
 
86
- });
87
- var imageData = rampColorsData ? rampColorsData : generateColorRamp(rampColors);
88
- this.colorTexture = createTexture2D({
89
- data: imageData.data,
90
- width: imageData.width,
91
- height: imageData.height,
92
- flipY: false
93
- });
94
- this.layer.buildLayerModel({
95
- moduleName: 'rasterImageData',
96
- vertexShader: rasterVert,
97
- fragmentShader: rasterFrag,
98
- triangulation: RasterImageTriangulation,
99
- primitive: gl.TRIANGLES,
100
- depth: {
101
- enable: false
102
- },
103
- stencil: getMask(mask, maskInside),
104
- pick: false
105
- }).then(function (model) {
106
- callbackModel([model]);
107
- }).catch(function (err) {
108
- console.warn(err);
109
- callbackModel([]);
110
- });
111
- }
180
+ function initModels(_x2) {
181
+ return _initModels.apply(this, arguments);
182
+ }
183
+
184
+ return initModels;
185
+ }()
112
186
  }, {
113
187
  key: "buildModels",
114
188
  value: function buildModels(callbackModel) {
@@ -0,0 +1,20 @@
1
+ import { IModel, ITexture2D } from '@antv/l7-core';
2
+ import BaseModel from '../../core/BaseModel';
3
+ export default class RasterModel extends BaseModel {
4
+ protected texture: ITexture2D;
5
+ protected channelRMax: number;
6
+ protected channelGMax: number;
7
+ protected channelBMax: number;
8
+ getUninforms(): {
9
+ u_opacity: number;
10
+ u_texture: ITexture2D;
11
+ u_channelRMax: number;
12
+ u_channelGMax: number;
13
+ u_channelBMax: number;
14
+ };
15
+ private getRasterData;
16
+ initModels(callbackModel: (models: IModel[]) => void): Promise<void>;
17
+ buildModels(callbackModel: (models: IModel[]) => void): void;
18
+ clearModels(): void;
19
+ protected registerBuiltinAttributes(): void;
20
+ }