@antv/l7-layers 2.9.32 → 2.9.33

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.
@@ -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;
@@ -1045,6 +1045,15 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
1045
1045
 
1046
1046
 
1047
1047
  this.layerSource.on('sourceUpdate', function () {
1048
+ if (_this8.coordCenter === undefined) {
1049
+ var layerCenter = _this8.layerSource.center;
1050
+ _this8.coordCenter = layerCenter;
1051
+ _this8.mapService.setCoordCenter && _this8.mapService.setCoordCenter(layerCenter); // // @ts-ignore
1052
+ // this.mapService.map.customCoords.setCenter(layerCenter);
1053
+ // // @ts-ignore
1054
+ // this.mapService.setCustomCoordCenter(layerCenter);
1055
+ }
1056
+
1048
1057
  _this8.sourceEvent();
1049
1058
  });
1050
1059
  }
@@ -1176,6 +1185,8 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
1176
1185
  return reject(err);
1177
1186
  });
1178
1187
  } else {
1188
+ // console.log(this.encodedData[1].originCoordinates[0])
1189
+ // console.log(this.encodedData[1].coordinates[0])
1179
1190
  var _this9$styleAttribute = _this9.styleAttributeService.createAttributesAndIndices(_this9.encodedData, triangulation, segmentNumber),
1180
1191
  attributes = _this9$styleAttribute.attributes,
1181
1192
  elements = _this9$styleAttribute.elements,
@@ -217,5 +217,8 @@ export interface IRasterLayerStyleOptions extends IBaseLayerStyleOptions {
217
217
  clampHigh: boolean;
218
218
  rampColors: IColorRamp;
219
219
  rampColorsData?: ImageData | IImagedata;
220
+ channelRMax?: number;
221
+ channelGMax?: number;
222
+ channelBMax?: number;
220
223
  }
221
224
  export {};
@@ -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;
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) {
@@ -48,15 +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
58
-
59
-
51
+ // @ts-ignore
60
52
  mvp = _this.mapService.map.customCoords.getMVPMatrix(); // mvp = amapCustomCoords.getMVPMatrix()
61
53
  // @ts-ignore
62
54
 
@@ -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
+ }
@@ -0,0 +1,226 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
+ import _inherits from "@babel/runtime/helpers/inherits";
6
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
10
+
11
+ 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); }; }
12
+
13
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
14
+
15
+ import { AttributeType, gl } from '@antv/l7-core';
16
+ import { getMask } from '@antv/l7-utils';
17
+ import BaseModel from "../../core/BaseModel";
18
+ import { RasterImageTriangulation } from "../../core/triangulation";
19
+
20
+ /* babel-plugin-inline-import '../shaders/raster_rgb_frag.glsl' */
21
+ 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}";
22
+
23
+ /* babel-plugin-inline-import '../shaders/raster_2d_vert.glsl' */
24
+ 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";
25
+
26
+ var RasterModel = /*#__PURE__*/function (_BaseModel) {
27
+ _inherits(RasterModel, _BaseModel);
28
+
29
+ var _super = _createSuper(RasterModel);
30
+
31
+ function RasterModel() {
32
+ var _this;
33
+
34
+ _classCallCheck(this, RasterModel);
35
+
36
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
37
+ args[_key] = arguments[_key];
38
+ }
39
+
40
+ _this = _super.call.apply(_super, [this].concat(args));
41
+
42
+ _defineProperty(_assertThisInitialized(_this), "channelRMax", 256);
43
+
44
+ _defineProperty(_assertThisInitialized(_this), "channelGMax", 256);
45
+
46
+ _defineProperty(_assertThisInitialized(_this), "channelBMax", 256);
47
+
48
+ return _this;
49
+ }
50
+
51
+ _createClass(RasterModel, [{
52
+ key: "getUninforms",
53
+ value: function getUninforms() {
54
+ var _ref = this.layer.getLayerConfig(),
55
+ _ref$opacity = _ref.opacity,
56
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
57
+ channelRMax = _ref.channelRMax,
58
+ channelGMax = _ref.channelGMax,
59
+ channelBMax = _ref.channelBMax;
60
+
61
+ return {
62
+ u_opacity: opacity || 1,
63
+ u_texture: this.texture,
64
+ u_channelRMax: channelRMax !== undefined ? channelRMax : this.channelRMax,
65
+ u_channelGMax: channelGMax !== undefined ? channelGMax : this.channelGMax,
66
+ u_channelBMax: channelBMax !== undefined ? channelBMax : this.channelBMax
67
+ };
68
+ }
69
+ }, {
70
+ key: "getRasterData",
71
+ value: function () {
72
+ var _getRasterData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(parserDataItem) {
73
+ var _yield$parserDataItem, rasterData, width, height, channelR, channelG, channelB;
74
+
75
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
76
+ while (1) {
77
+ switch (_context.prev = _context.next) {
78
+ case 0:
79
+ if (!Array.isArray(parserDataItem.data)) {
80
+ _context.next = 4;
81
+ break;
82
+ }
83
+
84
+ return _context.abrupt("return", {
85
+ data: parserDataItem.data,
86
+ width: parserDataItem.width,
87
+ height: parserDataItem.height
88
+ });
89
+
90
+ case 4:
91
+ _context.next = 6;
92
+ return parserDataItem.data;
93
+
94
+ case 6:
95
+ _yield$parserDataItem = _context.sent;
96
+ rasterData = _yield$parserDataItem.rasterData;
97
+ width = _yield$parserDataItem.width;
98
+ height = _yield$parserDataItem.height;
99
+ channelR = _yield$parserDataItem.channelR;
100
+ channelG = _yield$parserDataItem.channelG;
101
+ channelB = _yield$parserDataItem.channelB;
102
+ this.channelRMax = channelR;
103
+ this.channelGMax = channelG;
104
+ this.channelBMax = channelB;
105
+ return _context.abrupt("return", {
106
+ data: Array.from(rasterData),
107
+ width: width,
108
+ height: height
109
+ });
110
+
111
+ case 17:
112
+ case "end":
113
+ return _context.stop();
114
+ }
115
+ }
116
+ }, _callee, this);
117
+ }));
118
+
119
+ function getRasterData(_x) {
120
+ return _getRasterData.apply(this, arguments);
121
+ }
122
+
123
+ return getRasterData;
124
+ }()
125
+ }, {
126
+ key: "initModels",
127
+ value: function () {
128
+ var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(callbackModel) {
129
+ var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height;
130
+
131
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
132
+ while (1) {
133
+ switch (_context2.prev = _context2.next) {
134
+ case 0:
135
+ _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;
136
+ source = this.layer.getSource();
137
+ createTexture2D = this.rendererService.createTexture2D;
138
+ parserDataItem = source.data.dataArray[0];
139
+ _context2.next = 6;
140
+ return this.getRasterData(parserDataItem);
141
+
142
+ case 6:
143
+ _yield$this$getRaster = _context2.sent;
144
+ data = _yield$this$getRaster.data;
145
+ width = _yield$this$getRaster.width;
146
+ height = _yield$this$getRaster.height;
147
+ this.texture = createTexture2D({
148
+ // @ts-ignore
149
+ data: data,
150
+ width: width,
151
+ height: height,
152
+ format: gl.RGB,
153
+ type: gl.FLOAT
154
+ });
155
+ this.layer.buildLayerModel({
156
+ moduleName: 'rasterImageDataRGBA',
157
+ vertexShader: rasterVert,
158
+ fragmentShader: rasterFrag,
159
+ triangulation: RasterImageTriangulation,
160
+ primitive: gl.TRIANGLES,
161
+ depth: {
162
+ enable: false
163
+ },
164
+ stencil: getMask(mask, maskInside),
165
+ pick: false
166
+ }).then(function (model) {
167
+ callbackModel([model]);
168
+ }).catch(function (err) {
169
+ console.warn(err);
170
+ callbackModel([]);
171
+ });
172
+
173
+ case 12:
174
+ case "end":
175
+ return _context2.stop();
176
+ }
177
+ }
178
+ }, _callee2, this);
179
+ }));
180
+
181
+ function initModels(_x2) {
182
+ return _initModels.apply(this, arguments);
183
+ }
184
+
185
+ return initModels;
186
+ }()
187
+ }, {
188
+ key: "buildModels",
189
+ value: function buildModels(callbackModel) {
190
+ this.initModels(callbackModel);
191
+ }
192
+ }, {
193
+ key: "clearModels",
194
+ value: function clearModels() {
195
+ var _this$texture;
196
+
197
+ (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
198
+ }
199
+ }, {
200
+ key: "registerBuiltinAttributes",
201
+ value: function registerBuiltinAttributes() {
202
+ // point layer size;
203
+ this.styleAttributeService.registerStyleAttribute({
204
+ name: 'uv',
205
+ type: AttributeType.Attribute,
206
+ descriptor: {
207
+ name: 'a_Uv',
208
+ buffer: {
209
+ // give the WebGL driver a hint that this buffer may change
210
+ usage: gl.DYNAMIC_DRAW,
211
+ data: [],
212
+ type: gl.FLOAT
213
+ },
214
+ size: 2,
215
+ update: function update(feature, featureIdx, vertex) {
216
+ return [vertex[3], vertex[4]];
217
+ }
218
+ }
219
+ });
220
+ }
221
+ }]);
222
+
223
+ return RasterModel;
224
+ }(BaseModel);
225
+
226
+ export { RasterModel as default };
@@ -0,0 +1,12 @@
1
+ precision mediump float;
2
+ uniform float u_opacity: 1.0;
3
+ uniform sampler2D u_texture;
4
+ uniform float u_channelRMax: 256.;
5
+ uniform float u_channelGMax: 256.;
6
+ uniform float u_channelBMax: 256.;
7
+ varying vec2 v_texCoord;
8
+
9
+ void main() {
10
+ vec3 rgb = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).rgb;
11
+ gl_FragColor = vec4(rgb.r/u_channelRMax, rgb.g/u_channelGMax, rgb.b/u_channelBMax, u_opacity);
12
+ }
@@ -30,6 +30,8 @@ var RasterTiffTile = /*#__PURE__*/function (_TileFactory) {
30
30
  _createClass(RasterTiffTile, [{
31
31
  key: "createTile",
32
32
  value: function createTile(tile, initOptions) {
33
+ var _this$parentLayer, _this$parentLayer$get, _this$parentLayer$get2;
34
+
33
35
  var colorTexture = initOptions.colorTexture,
34
36
  opacity = initOptions.opacity,
35
37
  domain = initOptions.domain,
@@ -46,12 +48,14 @@ var RasterTiffTile = /*#__PURE__*/function (_TileFactory) {
46
48
  };
47
49
  }
48
50
 
51
+ var dataType = (_this$parentLayer = this.parentLayer) === null || _this$parentLayer === void 0 ? void 0 : (_this$parentLayer$get = _this$parentLayer.getSource()) === null || _this$parentLayer$get === void 0 ? void 0 : (_this$parentLayer$get2 = _this$parentLayer$get.parser) === null || _this$parentLayer$get2 === void 0 ? void 0 : _this$parentLayer$get2.dataType;
49
52
  var layer = new RasterDataLayer({
50
53
  visible: tile.isVisible,
51
54
  mask: mask
52
55
  }).source(rasterData.data, {
53
56
  parser: {
54
- type: 'raster',
57
+ // 数据栅格分为单通道栅格和多通道彩色栅格
58
+ type: dataType === 'rgb' ? 'rasterRgb' : 'raster',
55
59
  width: rasterData.width,
56
60
  height: rasterData.height,
57
61
  extent: tile.bboxPolygon.bbox
@@ -59,6 +63,7 @@ var RasterTiffTile = /*#__PURE__*/function (_TileFactory) {
59
63
  }).style({
60
64
  colorTexture: colorTexture,
61
65
  opacity: opacity,
66
+ // TODO: 目前从 domain 从父瓦片图层的 style 进行配置,后续考虑从每个时机请求的栅格文件中进行配置
62
67
  domain: domain,
63
68
  clampHigh: clampHigh,
64
69
  clampLow: clampLow
@@ -1,11 +1,12 @@
1
1
  import BaseLayer from '../../core/BaseLayer';
2
2
  import { IRasterLayerStyleOptions } from '../../core/interface';
3
3
  import RasterModel from '../../raster/models/rasterTile';
4
+ import RasterRgbModel from '../../raster/models/rasterRgb';
4
5
  export default class RasterTiffLayer extends BaseLayer<Partial<IRasterLayerStyleOptions>> {
5
6
  type: string;
6
7
  buildModels(): void;
7
8
  rebuildModels(): void;
8
- protected getModelType(): typeof RasterModel;
9
+ protected getModelType(): typeof RasterModel | typeof RasterRgbModel;
9
10
  protected getConfigSchema(): {
10
11
  properties: {
11
12
  opacity: {