@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.
- package/es/core/BaseLayer.d.ts +1 -0
- package/es/core/BaseLayer.js +20 -3
- package/es/core/interface.d.ts +4 -0
- package/es/mask/index.js +7 -0
- package/es/mask/models/index.d.ts +1 -1
- package/es/mask/models/index.js +3 -1
- package/es/plugins/DataMappingPlugin.d.ts +0 -1
- package/es/plugins/DataMappingPlugin.js +1 -8
- package/es/plugins/ShaderUniformPlugin.d.ts +5 -1
- package/es/plugins/ShaderUniformPlugin.js +10 -11
- package/es/raster/index.d.ts +1 -1
- package/es/raster/index.js +4 -0
- package/es/raster/models/index.d.ts +1 -1
- package/es/raster/models/index.js +2 -0
- package/es/raster/models/raster.d.ts +2 -1
- package/es/raster/models/raster.js +118 -44
- package/es/raster/models/rasterRgb.d.ts +20 -0
- package/es/raster/models/rasterRgb.js +226 -0
- package/es/raster/shaders/raster_rgb_frag.glsl +12 -0
- package/es/tile/tileFactory/base.d.ts +1 -1
- package/es/tile/tileFactory/base.js +8 -6
- package/es/tile/tileFactory/index.d.ts +1 -1
- package/es/tile/tileFactory/index.js +4 -0
- package/es/tile/tileFactory/line.d.ts +1 -1
- package/es/tile/tileFactory/line.js +8 -8
- package/es/tile/tileFactory/mask.d.ts +12 -0
- package/es/tile/tileFactory/mask.js +63 -0
- package/es/tile/tileFactory/point.d.ts +1 -1
- package/es/tile/tileFactory/point.js +8 -8
- package/es/tile/tileFactory/rasterData.js +6 -1
- package/es/tile/tileFactory/rasterDataLayer.d.ts +2 -1
- package/es/tile/tileFactory/rasterDataLayer.js +6 -1
- package/es/tile/tileFactory/vectorLayer.d.ts +6 -3
- package/es/tile/tileFactory/vectorLayer.js +4 -0
- package/es/utils/layerData.js +9 -6
- package/lib/core/BaseLayer.js +20 -3
- package/lib/mask/index.js +8 -0
- package/lib/mask/models/index.js +4 -1
- package/lib/plugins/DataMappingPlugin.js +1 -8
- package/lib/plugins/ShaderUniformPlugin.js +10 -11
- package/lib/raster/index.js +4 -0
- package/lib/raster/models/index.js +3 -0
- package/lib/raster/models/raster.js +120 -44
- package/lib/raster/models/rasterRgb.js +241 -0
- package/lib/raster/shaders/raster_rgb_frag.glsl +12 -0
- package/lib/tile/tileFactory/base.js +8 -7
- package/lib/tile/tileFactory/index.js +5 -0
- package/lib/tile/tileFactory/line.js +8 -8
- package/lib/tile/tileFactory/mask.js +74 -0
- package/lib/tile/tileFactory/point.js +8 -8
- package/lib/tile/tileFactory/rasterData.js +6 -1
- package/lib/tile/tileFactory/rasterDataLayer.js +7 -1
- package/lib/tile/tileFactory/vectorLayer.js +5 -0
- package/lib/utils/layerData.js +12 -8
- package/package.json +6 -6
package/es/utils/layerData.js
CHANGED
|
@@ -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 =
|
|
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 =
|
|
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;
|
package/lib/core/BaseLayer.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
}]);
|
package/lib/mask/models/index.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
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: "
|
|
93
|
-
value: function
|
|
94
|
-
|
|
95
|
-
|
|
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;
|
package/lib/raster/index.js
CHANGED
|
@@ -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
|
|
84
|
-
var
|
|
85
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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;
|