@antv/l7-layers 2.8.31 → 2.8.34

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 (73) hide show
  1. package/es/Geometry/models/plane.d.ts +13 -11
  2. package/es/Geometry/models/plane.js +134 -110
  3. package/es/Geometry/models/plane.js.map +1 -1
  4. package/es/canvas/models/canvas.js +5 -3
  5. package/es/canvas/models/canvas.js.map +1 -1
  6. package/es/core/BaseLayer.d.ts +5 -1
  7. package/es/core/BaseLayer.js +47 -0
  8. package/es/core/BaseLayer.js.map +1 -1
  9. package/es/core/interface.d.ts +3 -0
  10. package/es/core/interface.js.map +1 -1
  11. package/es/heatmap/index.d.ts +2 -0
  12. package/es/heatmap/index.js +9 -0
  13. package/es/heatmap/index.js.map +1 -1
  14. package/es/heatmap/models/heatmap.js +1 -0
  15. package/es/heatmap/models/heatmap.js.map +1 -1
  16. package/es/line/index.d.ts +1 -1
  17. package/es/line/index.js +1 -0
  18. package/es/line/index.js.map +1 -1
  19. package/es/line/models/index.d.ts +1 -1
  20. package/es/line/models/index.js +3 -1
  21. package/es/line/models/index.js.map +1 -1
  22. package/es/line/models/line.js +1 -0
  23. package/es/line/models/line.js.map +1 -1
  24. package/es/line/models/linearline.d.ts +20 -0
  25. package/es/line/models/linearline.js +267 -0
  26. package/es/line/models/linearline.js.map +1 -0
  27. package/es/point/models/fill.js +6 -2
  28. package/es/point/models/fill.js.map +1 -1
  29. package/es/point/models/normal.js +1 -0
  30. package/es/point/models/normal.js.map +1 -1
  31. package/es/point/models/simplePoint.js +1 -0
  32. package/es/point/models/simplePoint.js.map +1 -1
  33. package/es/polygon/models/extrude.d.ts +2 -0
  34. package/es/polygon/models/extrude.js +11 -5
  35. package/es/polygon/models/extrude.js.map +1 -1
  36. package/es/polygon/models/fill.d.ts +1 -0
  37. package/es/polygon/models/fill.js +6 -2
  38. package/es/polygon/models/fill.js.map +1 -1
  39. package/es/utils/layerData.d.ts +2 -0
  40. package/es/utils/layerData.js +152 -0
  41. package/es/utils/layerData.js.map +1 -0
  42. package/lib/Geometry/models/plane.js +133 -108
  43. package/lib/Geometry/models/plane.js.map +1 -1
  44. package/lib/canvas/models/canvas.js +5 -3
  45. package/lib/canvas/models/canvas.js.map +1 -1
  46. package/lib/core/BaseLayer.js +47 -0
  47. package/lib/core/BaseLayer.js.map +1 -1
  48. package/lib/core/interface.js.map +1 -1
  49. package/lib/heatmap/index.js +9 -0
  50. package/lib/heatmap/index.js.map +1 -1
  51. package/lib/heatmap/models/heatmap.js +1 -0
  52. package/lib/heatmap/models/heatmap.js.map +1 -1
  53. package/lib/line/index.js +1 -0
  54. package/lib/line/index.js.map +1 -1
  55. package/lib/line/models/index.js +4 -1
  56. package/lib/line/models/index.js.map +1 -1
  57. package/lib/line/models/line.js +1 -0
  58. package/lib/line/models/line.js.map +1 -1
  59. package/lib/line/models/linearline.js +283 -0
  60. package/lib/line/models/linearline.js.map +1 -0
  61. package/lib/point/models/fill.js +6 -2
  62. package/lib/point/models/fill.js.map +1 -1
  63. package/lib/point/models/normal.js +1 -0
  64. package/lib/point/models/normal.js.map +1 -1
  65. package/lib/point/models/simplePoint.js +1 -0
  66. package/lib/point/models/simplePoint.js.map +1 -1
  67. package/lib/polygon/models/extrude.js +11 -5
  68. package/lib/polygon/models/extrude.js.map +1 -1
  69. package/lib/polygon/models/fill.js +6 -2
  70. package/lib/polygon/models/fill.js.map +1 -1
  71. package/lib/utils/layerData.js +163 -0
  72. package/lib/utils/layerData.js.map +1 -0
  73. package/package.json +5 -5
@@ -0,0 +1,152 @@
1
+ import { Version } from '@antv/l7-maps';
2
+ import Source from '@antv/l7-source';
3
+ import { isColor, normalize, rgb2arr } from '@antv/l7-utils';
4
+
5
+ function getArrowPoints(p1, p2) {
6
+ var dir = [p2[0] - p1[0], p2[1] - p1[1]];
7
+ var normalizeDir = normalize(dir);
8
+ var arrowPoint = [p1[0] + normalizeDir[0] * 0.0001, p1[1] + normalizeDir[1] * 0.0001];
9
+ return arrowPoint;
10
+ }
11
+
12
+ function adjustData2Amap2Coordinates(mappedData, mapService) {
13
+ var _this = this;
14
+
15
+ if (mappedData.length > 0 && mapService.version === Version['GAODE2.x']) {
16
+ if (typeof mappedData[0].coordinates[0] === 'number') {
17
+ mappedData.filter(function (d) {
18
+ return !d.originCoordinates;
19
+ }).map(function (d) {
20
+ d.version = Version['GAODE2.x'];
21
+ d.originCoordinates = cloneDeep(d.coordinates);
22
+ d.coordinates = _this.mapService.lngLatToCoord(d.coordinates);
23
+ });
24
+ } else {
25
+ mappedData.filter(function (d) {
26
+ return !d.originCoordinates;
27
+ }).map(function (d) {
28
+ d.version = Version['GAODE2.x'];
29
+ d.originCoordinates = cloneDeep(d.coordinates);
30
+ d.coordinates = _this.mapService.lngLatToCoords(d.coordinates);
31
+ });
32
+ }
33
+ }
34
+ }
35
+
36
+ function adjustData2SimpleCoordinates(mappedData, mapService) {
37
+ if (mappedData.length > 0 && mapService.version === Version.SIMPLE) {
38
+ mappedData.map(function (d) {
39
+ if (!d.simpleCoordinate) {
40
+ d.coordinates = unProjectCoordinates(d.coordinates, mapService);
41
+ d.simpleCoordinate = true;
42
+ }
43
+ });
44
+ }
45
+ }
46
+
47
+ function unProjectCoordinates(coordinates, mapService) {
48
+ if (typeof coordinates[0] === 'number') {
49
+ return mapService.simpleMapCoord.unproject(coordinates);
50
+ }
51
+
52
+ if (coordinates[0] && coordinates[0][0] instanceof Array) {
53
+ var coords = [];
54
+ coordinates.map(function (coord) {
55
+ var c1 = [];
56
+ coord.map(function (co) {
57
+ c1.push(mapService.simpleMapCoord.unproject(co));
58
+ });
59
+ coords.push(c1);
60
+ });
61
+ return coords;
62
+ } else {
63
+ var _coords = [];
64
+ coordinates.map(function (coord) {
65
+ _coords.push(mapService.simpleMapCoord.unproject(coord));
66
+ });
67
+ return _coords;
68
+ }
69
+ }
70
+
71
+ function applyAttributeMapping(attribute, record, minimumColor) {
72
+ var _attribute$scale;
73
+
74
+ if (!attribute.scale) {
75
+ return [];
76
+ }
77
+
78
+ var scalers = (attribute === null || attribute === void 0 ? void 0 : (_attribute$scale = attribute.scale) === null || _attribute$scale === void 0 ? void 0 : _attribute$scale.scalers) || [];
79
+ var params = [];
80
+ scalers.forEach(function (_ref) {
81
+ var _attribute$scale2;
82
+
83
+ var field = _ref.field;
84
+
85
+ if (record.hasOwnProperty(field) || ((_attribute$scale2 = attribute.scale) === null || _attribute$scale2 === void 0 ? void 0 : _attribute$scale2.type) === 'variable') {
86
+ params.push(record[field]);
87
+ }
88
+ });
89
+ var mappingResult = attribute.mapping ? attribute.mapping(params) : [];
90
+
91
+ if (attribute.name === 'color' && !isColor(mappingResult[0])) {
92
+ return [minimumColor];
93
+ }
94
+
95
+ return mappingResult;
96
+ }
97
+
98
+ function mapping(attributes, data, fontService, mapService, minimumColor, layer) {
99
+ var _ref2 = layer === null || layer === void 0 ? void 0 : layer.getLayerConfig(),
100
+ _ref2$arrow = _ref2.arrow,
101
+ arrow = _ref2$arrow === void 0 ? {
102
+ enable: false
103
+ } : _ref2$arrow;
104
+
105
+ var mappedData = data.map(function (record) {
106
+ var encodeRecord = {
107
+ id: record._id,
108
+ coordinates: record.coordinates
109
+ };
110
+ attributes.filter(function (attribute) {
111
+ return attribute.scale !== undefined;
112
+ }).forEach(function (attribute) {
113
+ var values = applyAttributeMapping(attribute, record, minimumColor);
114
+ attribute.needRemapping = false;
115
+
116
+ if (attribute.name === 'color') {
117
+ values = values.map(function (c) {
118
+ return rgb2arr(c);
119
+ });
120
+ }
121
+
122
+ encodeRecord[attribute.name] = Array.isArray(values) && values.length === 1 ? values[0] : values;
123
+
124
+ if (attribute.name === 'shape') {
125
+ encodeRecord.shape = fontService.getIconFontKey(encodeRecord[attribute.name]);
126
+ }
127
+ });
128
+
129
+ if (encodeRecord.shape === 'line' && arrow.enable) {
130
+ var coords = encodeRecord.coordinates;
131
+ var arrowPoint = getArrowPoints(coords[0], coords[1]);
132
+ encodeRecord.coordinates.splice(1, 0, arrowPoint, arrowPoint);
133
+ }
134
+
135
+ return encodeRecord;
136
+ });
137
+ adjustData2Amap2Coordinates(mappedData, mapService);
138
+ adjustData2SimpleCoordinates(mappedData, mapService);
139
+ return mappedData;
140
+ }
141
+
142
+ export function calculateData(layer, fontService, mapService, styleAttributeService, data, options) {
143
+ var source = new Source(data, options);
144
+ var bottomColor = layer.getBottomColor();
145
+ var attributes = styleAttributeService.getLayerStyleAttributes() || [];
146
+ var dataArray = source.data.dataArray;
147
+ var filterData = dataArray;
148
+ var mappedEncodeData = mapping(attributes, filterData, fontService, mapService, bottomColor, layer);
149
+ source.destroy();
150
+ return mappedEncodeData;
151
+ }
152
+ //# sourceMappingURL=layerData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/layerData.ts"],"names":["Version","Source","isColor","normalize","rgb2arr","getArrowPoints","p1","p2","dir","normalizeDir","arrowPoint","adjustData2Amap2Coordinates","mappedData","mapService","length","version","coordinates","filter","d","originCoordinates","map","cloneDeep","lngLatToCoord","lngLatToCoords","adjustData2SimpleCoordinates","SIMPLE","simpleCoordinate","unProjectCoordinates","simpleMapCoord","unproject","Array","coords","coord","c1","co","push","applyAttributeMapping","attribute","record","minimumColor","scale","scalers","params","forEach","field","hasOwnProperty","type","mappingResult","mapping","name","attributes","data","fontService","layer","getLayerConfig","arrow","enable","encodeRecord","id","_id","undefined","values","needRemapping","c","isArray","shape","getIconFontKey","splice","calculateData","styleAttributeService","options","source","bottomColor","getBottomColor","getLayerStyleAttributes","dataArray","filterData","mappedEncodeData","destroy"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n ILayer,\n IMapService,\n IParseDataItem,\n ISourceCFG,\n IStyleAttribute,\n IStyleAttributeService,\n Position,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport Source from '@antv/l7-source';\nimport { isColor, normalize, rgb2arr } from '@antv/l7-utils';\nimport { ILineLayerStyleOptions } from '../core/interface';\n\nfunction getArrowPoints(p1: Position, p2: Position) {\n const dir = [p2[0] - p1[0], p2[1] - p1[1]];\n const normalizeDir = normalize(dir);\n const arrowPoint = [\n p1[0] + normalizeDir[0] * 0.0001,\n p1[1] + normalizeDir[1] * 0.0001,\n ];\n return arrowPoint;\n}\n\nfunction adjustData2Amap2Coordinates(\n mappedData: IEncodeFeature[],\n mapService: IMapService,\n) {\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (mappedData.length > 0 && mapService.version === Version['GAODE2.x']) {\n if (typeof mappedData[0].coordinates[0] === 'number') {\n // 单个的点数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = Version['GAODE2.x'];\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoord(d.coordinates);\n });\n } else {\n // 连续的线、面数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = Version['GAODE2.x'];\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoords(d.coordinates);\n });\n }\n }\n}\n\nfunction adjustData2SimpleCoordinates(\n mappedData: IEncodeFeature[],\n mapService: IMapService,\n) {\n if (mappedData.length > 0 && mapService.version === Version.SIMPLE) {\n mappedData.map((d) => {\n if (!d.simpleCoordinate) {\n d.coordinates = unProjectCoordinates(d.coordinates, mapService);\n d.simpleCoordinate = true;\n }\n });\n }\n}\n\nfunction unProjectCoordinates(coordinates: any, mapService: IMapService) {\n if (typeof coordinates[0] === 'number') {\n return mapService.simpleMapCoord.unproject(coordinates as [number, number]);\n }\n\n if (coordinates[0] && coordinates[0][0] instanceof Array) {\n // @ts-ignore\n const coords = [];\n coordinates.map((coord: any) => {\n // @ts-ignore\n const c1 = [];\n coord.map((co: any) => {\n c1.push(mapService.simpleMapCoord.unproject(co as [number, number]));\n });\n // @ts-ignore\n coords.push(c1);\n });\n // @ts-ignore\n return coords;\n } else {\n // @ts-ignore\n const coords = [];\n // @ts-ignore\n coordinates.map((coord) => {\n coords.push(\n mapService.simpleMapCoord.unproject(coord as [number, number]),\n );\n });\n // @ts-ignore\n return coords;\n }\n}\n\nfunction applyAttributeMapping(\n attribute: IStyleAttribute,\n record: { [key: string]: unknown },\n minimumColor?: string,\n) {\n if (!attribute.scale) {\n return [];\n }\n const scalers = attribute?.scale?.scalers || [];\n const params: unknown[] = [];\n\n scalers.forEach(({ field }) => {\n if (record.hasOwnProperty(field) || attribute.scale?.type === 'variable') {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n\n const mappingResult = attribute.mapping ? attribute.mapping(params) : [];\n if (attribute.name === 'color' && !isColor(mappingResult[0])) {\n return [minimumColor];\n }\n return mappingResult;\n}\n\nfunction mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n fontService: IFontService,\n mapService: IMapService,\n minimumColor?: string,\n layer?: ILayer,\n): IEncodeFeature[] {\n const {\n arrow = {\n enable: false,\n },\n } = layer?.getLayerConfig() as ILineLayerStyleOptions;\n const mappedData = data.map((record: IParseDataItem) => {\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n };\n\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n let values = applyAttributeMapping(attribute, record, minimumColor);\n\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n values = values.map((c: unknown) => {\n return rgb2arr(c as string);\n });\n }\n // @ts-ignore\n encodeRecord[attribute.name] =\n Array.isArray(values) && values.length === 1 ? values[0] : values;\n\n // 增加对 layer/text/iconfont unicode 映射的解析\n if (attribute.name === 'shape') {\n encodeRecord.shape = fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n\n if (encodeRecord.shape === 'line' && arrow.enable) {\n // 只有在线图层且支持配置箭头的时候进行插入顶点的处理\n const coords = encodeRecord.coordinates as Position[];\n const arrowPoint = getArrowPoints(coords[0], coords[1]);\n encodeRecord.coordinates.splice(1, 0, arrowPoint, arrowPoint);\n }\n return encodeRecord;\n }) as IEncodeFeature[];\n // 调整数据兼容 Amap2.0\n adjustData2Amap2Coordinates(mappedData, mapService);\n\n // 调整数据兼容 SimpleCoordinates\n adjustData2SimpleCoordinates(mappedData, mapService);\n\n return mappedData;\n}\n\nexport function calculateData(\n layer: ILayer,\n fontService: IFontService,\n mapService: IMapService,\n styleAttributeService: IStyleAttributeService,\n data: any,\n options: ISourceCFG | undefined,\n): IEncodeFeature[] {\n const source = new Source(data, options);\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const { dataArray } = source.data;\n const filterData = dataArray;\n\n const mappedEncodeData = mapping(\n attributes,\n filterData,\n fontService,\n mapService,\n bottomColor,\n layer,\n );\n source.destroy();\n return mappedEncodeData;\n}\n"],"file":"layerData.js"}
@@ -56,9 +56,9 @@ var PlaneModel = function (_BaseModel) {
56
56
 
57
57
  _this = _super.call.apply(_super, [this].concat(args));
58
58
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
59
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImage", void 0);
60
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImageLoaded", false);
59
61
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mapTexture", void 0);
60
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "positions", void 0);
61
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "indices", void 0);
62
62
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryTriangulation", function () {
63
63
  var _this2;
64
64
 
@@ -79,11 +79,8 @@ var PlaneModel = function (_BaseModel) {
79
79
  indices = _this$initPlane.indices,
80
80
  positions = _this$initPlane.positions;
81
81
 
82
- _this.positions = positions;
83
- _this.indices = indices;
84
-
85
82
  if (terrainTexture) {
86
- _this.loadTerrainTexture();
83
+ _this.loadTerrainTexture(positions, indices);
87
84
  }
88
85
 
89
86
  return {
@@ -92,13 +89,6 @@ var PlaneModel = function (_BaseModel) {
92
89
  size: 5
93
90
  };
94
91
  });
95
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryUpdateTriangulation", function () {
96
- return {
97
- vertices: _this.positions,
98
- indices: _this.indices,
99
- size: 5
100
- };
101
- });
102
92
  return _this;
103
93
  }
104
94
 
@@ -132,9 +122,9 @@ var PlaneModel = function (_BaseModel) {
132
122
  var _ref2 = this.mapService.lngLatToCoord([x + lng, -y + lat]),
133
123
  _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
134
124
  a = _ref3[0],
135
- b = _ref3[1];
125
+ _b = _ref3[1];
136
126
 
137
- positions.push(a, b, 0);
127
+ positions.push(a, _b, 0);
138
128
  } else {
139
129
  positions.push(x + lng, -y + lat, 0);
140
130
  }
@@ -148,12 +138,12 @@ var PlaneModel = function (_BaseModel) {
148
138
  for (var _ix = 0; _ix < gridX; _ix++) {
149
139
  var _a = _ix + gridX1 * _iy;
150
140
 
151
- var _b = _ix + gridX1 * (_iy + 1);
141
+ var _b2 = _ix + gridX1 * (_iy + 1);
152
142
 
153
143
  var c = _ix + 1 + gridX1 * (_iy + 1);
154
144
  var d = _ix + 1 + gridX1 * _iy;
155
- indices.push(_a, _b, d);
156
- indices.push(_b, c, d);
145
+ indices.push(_a, _b2, d);
146
+ indices.push(_b2, c, d);
157
147
  }
158
148
  }
159
149
 
@@ -192,6 +182,7 @@ var PlaneModel = function (_BaseModel) {
192
182
  value: function clearModels() {
193
183
  var _this$texture2;
194
184
 
185
+ this.terrainImage = null;
195
186
  (_this$texture2 = this.texture) === null || _this$texture2 === void 0 ? void 0 : _this$texture2.destroy();
196
187
  }
197
188
  }, {
@@ -228,101 +219,42 @@ var PlaneModel = function (_BaseModel) {
228
219
  }
229
220
  })];
230
221
  }
231
- }, {
232
- key: "getImageData",
233
- value: function getImageData(img) {
234
- var canvas = document.createElement('canvas');
235
- var ctx = canvas.getContext('2d');
236
- var width = img.width,
237
- height = img.height;
238
- canvas.width = width;
239
- canvas.height = height;
240
- ctx.drawImage(img, 0, 0, width, height);
241
- var imageData = ctx.getImageData(0, 0, width, height);
242
- return imageData;
243
- }
244
- }, {
245
- key: "loadTerrainTexture",
246
- value: function loadTerrainTexture() {
247
- var _this3 = this;
248
-
249
- var _ref6 = this.layer.getLayerConfig(),
250
- _ref6$mask = _ref6.mask,
251
- mask = _ref6$mask === void 0 ? false : _ref6$mask,
252
- _ref6$maskInside = _ref6.maskInside,
253
- maskInside = _ref6$maskInside === void 0 ? true : _ref6$maskInside,
254
- _ref6$widthSegments = _ref6.widthSegments,
255
- widthSegments = _ref6$widthSegments === void 0 ? 1 : _ref6$widthSegments,
256
- _ref6$heightSegments = _ref6.heightSegments,
257
- heightSegments = _ref6$heightSegments === void 0 ? 1 : _ref6$heightSegments,
258
- terrainTexture = _ref6.terrainTexture,
259
- _ref6$rgb2height = _ref6.rgb2height,
260
- rgb2height = _ref6$rgb2height === void 0 ? function (r, g, b) {
261
- return r + g + b;
262
- } : _ref6$rgb2height;
263
-
264
- var terrainImage = new Image();
265
- terrainImage.crossOrigin = 'anonymous';
266
-
267
- terrainImage.onload = function () {
268
- var imgWidth = terrainImage.width;
269
- var imgHeight = terrainImage.height;
270
-
271
- var imageData = _this3.getImageData(terrainImage).data;
272
-
273
- var gridX = Math.floor(widthSegments);
274
- var gridY = Math.floor(heightSegments);
275
- var gridX1 = gridX + 1;
276
- var gridY1 = gridY + 1;
277
- var widthStep = imgWidth / gridX;
278
- var heihgtStep = imgHeight / gridY;
279
-
280
- for (var iy = 0; iy < gridY1; iy++) {
281
- var imgIndexY = Math.floor(iy * heihgtStep);
282
- var imgLen = imgIndexY * imgWidth;
283
-
284
- for (var ix = 0; ix < gridX1; ix++) {
285
- var imgIndexX = Math.floor(ix * widthStep);
286
- var imgDataIndex = (imgLen + imgIndexX) * 4;
287
- var r = imageData[imgDataIndex];
288
- var g = imageData[imgDataIndex + 1];
289
- var b = imageData[imgDataIndex + 2];
290
- var z = (iy * gridX1 + ix) * 5 + 2;
291
- _this3.positions[z] = rgb2height(r, g, b);
292
- }
293
- }
294
-
295
- _this3.layer.models = [_this3.layer.buildLayerModel({
296
- moduleName: 'geometry_plane',
297
- vertexShader: planeVert,
298
- fragmentShader: planeFrag,
299
- triangulation: _this3.planeGeometryUpdateTriangulation,
300
- primitive: _l7Core.gl.TRIANGLES,
301
- depth: {
302
- enable: true
303
- },
304
- blend: _this3.getBlend(),
305
- stencil: (0, _l7Utils.getMask)(mask, maskInside),
306
- cull: {
307
- enable: true,
308
- face: _l7Core.gl.BACK
309
- }
310
- })];
311
-
312
- _this3.layerService.renderLayers();
313
- };
314
-
315
- terrainImage.src = terrainTexture;
316
- }
317
222
  }, {
318
223
  key: "buildModels",
319
224
  value: function buildModels() {
320
225
  return this.initModels();
321
226
  }
227
+ }, {
228
+ key: "createModelData",
229
+ value: function createModelData(options) {
230
+ if (options) {
231
+ var _ref6 = this.layer.getLayerConfig(),
232
+ oldwidthSegments = _ref6.widthSegments,
233
+ oldheightSegments = _ref6.heightSegments,
234
+ oldwidth = _ref6.width,
235
+ oldheight = _ref6.height;
236
+
237
+ var _ref7 = options,
238
+ widthSegments = _ref7.widthSegments,
239
+ heightSegments = _ref7.heightSegments,
240
+ width = _ref7.width,
241
+ height = _ref7.height;
242
+ this.layer.style({
243
+ widthSegments: widthSegments !== undefined ? widthSegments : oldwidthSegments,
244
+ heightSegments: heightSegments !== undefined ? heightSegments : oldheightSegments,
245
+ width: width !== undefined ? width : oldwidth,
246
+ height: height !== undefined ? height : oldheight
247
+ });
248
+ }
249
+
250
+ var oldFeatures = this.layer.getEncodedData();
251
+ var res = this.styleAttributeService.createAttributesAndIndices(oldFeatures, this.planeGeometryTriangulation);
252
+ return res;
253
+ }
322
254
  }, {
323
255
  key: "updateTexture",
324
256
  value: function updateTexture(mapTexture) {
325
- var _this4 = this;
257
+ var _this3 = this;
326
258
 
327
259
  var createTexture2D = this.rendererService.createTexture2D;
328
260
 
@@ -331,7 +263,7 @@ var PlaneModel = function (_BaseModel) {
331
263
  img.crossOrigin = 'anonymous';
332
264
 
333
265
  img.onload = function () {
334
- _this4.texture = createTexture2D({
266
+ _this3.texture = createTexture2D({
335
267
  data: img,
336
268
  width: img.width,
337
269
  height: img.height,
@@ -339,9 +271,9 @@ var PlaneModel = function (_BaseModel) {
339
271
  wrapT: _l7Core.gl.CLAMP_TO_EDGE
340
272
  });
341
273
 
342
- _this4.layerService.updateLayerRenderList();
274
+ _this3.layerService.updateLayerRenderList();
343
275
 
344
- _this4.layerService.renderLayers();
276
+ _this3.layerService.renderLayers();
345
277
  };
346
278
 
347
279
  img.src = mapTexture;
@@ -352,6 +284,99 @@ var PlaneModel = function (_BaseModel) {
352
284
  });
353
285
  }
354
286
  }
287
+ }, {
288
+ key: "getImageData",
289
+ value: function getImageData(img) {
290
+ var canvas = document.createElement('canvas');
291
+ var ctx = canvas.getContext('2d');
292
+ var width = img.width,
293
+ height = img.height;
294
+ canvas.width = width;
295
+ canvas.height = height;
296
+ ctx.drawImage(img, 0, 0, width, height);
297
+ var imageData = ctx.getImageData(0, 0, width, height);
298
+ return imageData;
299
+ }
300
+ }, {
301
+ key: "translateVertex",
302
+ value: function translateVertex(positions, indices, image, widthSegments, heightSegments, rgb2height) {
303
+ var imgWidth = image.width;
304
+ var imgHeight = image.height;
305
+ var imageData = this.getImageData(image).data;
306
+ var gridX = Math.floor(widthSegments);
307
+ var gridY = Math.floor(heightSegments);
308
+ var gridX1 = gridX + 1;
309
+ var gridY1 = gridY + 1;
310
+ var widthStep = imgWidth / gridX;
311
+ var heihgtStep = imgHeight / gridY;
312
+
313
+ for (var iy = 0; iy < gridY1; iy++) {
314
+ var imgIndexY = Math.floor(iy * heihgtStep);
315
+ var imgLen = imgIndexY * imgWidth;
316
+
317
+ for (var ix = 0; ix < gridX1; ix++) {
318
+ var imgIndexX = Math.floor(ix * widthStep);
319
+ var imgDataIndex = (imgLen + imgIndexX) * 4;
320
+ var _r = imageData[imgDataIndex];
321
+ var _g = imageData[imgDataIndex + 1];
322
+ var _b3 = imageData[imgDataIndex + 2];
323
+ var z = (iy * gridX1 + ix) * 5 + 2;
324
+ positions[z] = rgb2height(_r, _g, _b3);
325
+ }
326
+ }
327
+
328
+ var oldFeatures = this.layer.getEncodedData();
329
+ var modelData = this.styleAttributeService.createAttributesAndIndices(oldFeatures, function () {
330
+ return {
331
+ vertices: positions,
332
+ indices: indices,
333
+ size: 5
334
+ };
335
+ });
336
+ this.layer.updateModelData(modelData);
337
+ this.layerService.renderLayers();
338
+ }
339
+ }, {
340
+ key: "loadTerrainTexture",
341
+ value: function loadTerrainTexture(positions, indices) {
342
+ var _this4 = this;
343
+
344
+ var _ref8 = this.layer.getLayerConfig(),
345
+ _ref8$widthSegments = _ref8.widthSegments,
346
+ widthSegments = _ref8$widthSegments === void 0 ? 1 : _ref8$widthSegments,
347
+ _ref8$heightSegments = _ref8.heightSegments,
348
+ heightSegments = _ref8$heightSegments === void 0 ? 1 : _ref8$heightSegments,
349
+ terrainTexture = _ref8.terrainTexture,
350
+ _ref8$rgb2height = _ref8.rgb2height,
351
+ rgb2height = _ref8$rgb2height === void 0 ? function (r, g, b) {
352
+ return r + g + b;
353
+ } : _ref8$rgb2height;
354
+
355
+ if (this.terrainImage) {
356
+ if (this.terrainImageLoaded) {
357
+ this.translateVertex(positions, indices, this.terrainImage, widthSegments, heightSegments, rgb2height);
358
+ } else {
359
+ this.terrainImage.onload = function () {
360
+ _this4.translateVertex(positions, indices, _this4.terrainImage, widthSegments, heightSegments, rgb2height);
361
+ };
362
+ }
363
+ } else {
364
+ var terrainImage = new Image();
365
+ this.terrainImage = terrainImage;
366
+ terrainImage.crossOrigin = 'anonymous';
367
+
368
+ terrainImage.onload = function () {
369
+ _this4.terrainImageLoaded = true;
370
+ setTimeout(function () {
371
+ return _this4.layer.emit('terrainImageLoaded', null);
372
+ });
373
+
374
+ _this4.translateVertex(positions, indices, terrainImage, widthSegments, heightSegments, rgb2height);
375
+ };
376
+
377
+ terrainImage.src = terrainTexture;
378
+ }
379
+ }
355
380
  }, {
356
381
  key: "getConfigSchema",
357
382
  value: function getConfigSchema() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Geometry/models/plane.ts"],"names":["PlaneModel","layer","getLayerConfig","width","height","widthSegments","heightSegments","center","terrainTexture","initPlane","indices","positions","loadTerrainTexture","vertices","size","lng","lat","widthHalf","heightHalf","gridX","Math","floor","gridY","gridX1","gridY1","segmentWidth","segmentHeight","iy","y","ix","x","mapService","version","Version","lngLatToCoord","a","b","push","c","d","opacity","mapTexture","terrainClipHeight","texture","destroy","updateTexture","u_opacity","u_mapFlag","u_terrainClipHeight","u_texture","mask","maskInside","createTexture2D","rendererService","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","cull","face","BACK","img","canvas","document","createElement","ctx","getContext","drawImage","imageData","getImageData","rgb2height","r","g","terrainImage","Image","crossOrigin","onload","imgWidth","imgHeight","data","widthStep","heihgtStep","imgIndexY","imgLen","imgIndexX","imgDataIndex","z","models","planeGeometryUpdateTriangulation","layerService","renderLayers","src","initModels","wrapS","CLAMP_TO_EDGE","wrapT","updateLayerRenderList","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { getMask, isMini } from '@antv/l7-utils';\n// import { mat4, vec3 } from 'gl-matrix';\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport planeFrag from '../shaders/plane_frag.glsl';\nimport planeVert from '../shaders/plane_vert.glsl';\n\nexport default class PlaneModel extends BaseModel {\n protected texture: ITexture2D;\n protected mapTexture: string | undefined;\n protected positions: number[];\n protected indices: number[];\n\n public initPlane(\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n lng = 120,\n lat = 30,\n ) {\n // https://github.com/mrdoob/three.js/blob/dev/src/geometries/PlaneGeometry.js\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n const indices = [];\n const positions = [];\n\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n if (this.mapService.version === Version['GAODE2.x']) {\n // @ts-ignore\n const [a, b] = this.mapService.lngLatToCoord([x + lng, -y + lat]) as [\n number,\n number,\n ];\n positions.push(a, b, 0);\n } else {\n positions.push(x + lng, -y + lat, 0);\n }\n\n positions.push(ix / gridX);\n positions.push(1 - iy / gridY);\n }\n }\n\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n return { indices, positions };\n }\n\n public planeGeometryTriangulation = () => {\n const {\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n center = [120, 30],\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n const { indices, positions } = this.initPlane(\n width,\n height,\n widthSegments,\n heightSegments,\n ...center,\n );\n this.positions = positions;\n this.indices = indices;\n\n if (terrainTexture) {\n // 存在地形贴图的时候会根据地形贴图对顶点进行偏移\n this.loadTerrainTexture();\n }\n\n return {\n vertices: positions,\n indices,\n size: 5,\n };\n };\n public planeGeometryUpdateTriangulation = () => {\n return {\n vertices: this.positions,\n indices: this.indices,\n size: 5,\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n mapTexture,\n terrainClipHeight = 0,\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n if (this.mapTexture !== mapTexture) {\n this.mapTexture = mapTexture;\n this.texture?.destroy();\n this.updateTexture(mapTexture);\n }\n return {\n u_opacity: opacity || 1,\n u_mapFlag: mapTexture ? 1 : 0,\n u_terrainClipHeight: terrainTexture ? terrainClipHeight : -1,\n u_texture: this.texture,\n // u_ModelMatrix: mat4.translate(mat4.create(), mat4.create(), [1, 0, 0])\n // u_ModelMatrix: mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // u_ModelMatrix: mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // u_ModelMatrix: this.rotateZ()\n };\n }\n\n public clearModels(): void {\n this.texture?.destroy();\n }\n\n public initModels() {\n const {\n mask = false,\n maskInside = true,\n mapTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n this.mapTexture = mapTexture;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n this.updateTexture(mapTexture);\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'geometry_plane',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: gl.BACK, // gl.FRONT | gl.BACK;\n },\n }),\n ];\n }\n\n public getImageData(img: HTMLImageElement) {\n const canvas: HTMLCanvasElement = document.createElement('canvas');\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const { width, height } = img;\n canvas.width = width;\n canvas.height = height;\n\n ctx.drawImage(img, 0, 0, width, height);\n const imageData = ctx.getImageData(0, 0, width, height);\n\n return imageData;\n }\n\n /**\n * load terrain texture & offset attribute z\n */\n public loadTerrainTexture(): void {\n const {\n mask = false,\n maskInside = true,\n widthSegments = 1,\n heightSegments = 1,\n terrainTexture,\n rgb2height = (r: number, g: number, b: number) => r + g + b,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const terrainImage = new Image();\n terrainImage.crossOrigin = 'anonymous';\n terrainImage.onload = () => {\n const imgWidth = terrainImage.width;\n const imgHeight = terrainImage.height;\n\n const imageData = this.getImageData(terrainImage).data;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const widthStep = imgWidth / gridX;\n const heihgtStep = imgHeight / gridY;\n\n for (let iy = 0; iy < gridY1; iy++) {\n const imgIndexY = Math.floor(iy * heihgtStep);\n const imgLen = imgIndexY * imgWidth;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const imgIndexX = Math.floor(ix * widthStep);\n const imgDataIndex = (imgLen + imgIndexX) * 4;\n\n const r = imageData[imgDataIndex];\n const g = imageData[imgDataIndex + 1];\n const b = imageData[imgDataIndex + 2];\n\n const z = (iy * gridX1 + ix) * 5 + 2;\n this.positions[z] = rgb2height(r, g, b);\n }\n }\n\n this.layer.models = [\n this.layer.buildLayerModel({\n moduleName: 'geometry_plane',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryUpdateTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: gl.BACK,\n },\n }),\n ];\n this.layerService.renderLayers();\n };\n terrainImage.src = terrainTexture as string;\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public updateTexture(mapTexture: string | undefined): void {\n const { createTexture2D } = this.rendererService;\n\n if (mapTexture) {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n this.texture = createTexture2D({\n data: img,\n width: img.width,\n height: img.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n img.src = mapTexture;\n } else {\n this.texture = createTexture2D({\n width: 0,\n height: 0,\n });\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"plane.js"}
1
+ {"version":3,"sources":["../../../src/Geometry/models/plane.ts"],"names":["PlaneModel","layer","getLayerConfig","width","height","widthSegments","heightSegments","center","terrainTexture","initPlane","indices","positions","loadTerrainTexture","vertices","size","lng","lat","widthHalf","heightHalf","gridX","Math","floor","gridY","gridX1","gridY1","segmentWidth","segmentHeight","iy","y","ix","x","mapService","version","Version","lngLatToCoord","a","b","push","c","d","opacity","mapTexture","terrainClipHeight","texture","destroy","updateTexture","u_opacity","u_mapFlag","u_terrainClipHeight","u_texture","terrainImage","mask","maskInside","createTexture2D","rendererService","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","cull","face","BACK","initModels","options","oldwidthSegments","oldheightSegments","oldwidth","oldheight","style","undefined","oldFeatures","getEncodedData","res","styleAttributeService","createAttributesAndIndices","img","Image","crossOrigin","onload","data","wrapS","CLAMP_TO_EDGE","wrapT","layerService","updateLayerRenderList","renderLayers","src","canvas","document","createElement","ctx","getContext","drawImage","imageData","getImageData","image","rgb2height","imgWidth","imgHeight","widthStep","heihgtStep","imgIndexY","imgLen","imgIndexX","imgDataIndex","r","g","z","modelData","updateModelData","terrainImageLoaded","translateVertex","setTimeout","emit","properties","type","minimum","maximum","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttrubuteAndElements,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { getMask, isMini } from '@antv/l7-utils';\n// import { mat4, vec3 } from 'gl-matrix';\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport planeFrag from '../shaders/plane_frag.glsl';\nimport planeVert from '../shaders/plane_vert.glsl';\n\nexport default class PlaneModel extends BaseModel {\n protected texture: ITexture2D;\n protected terrainImage: HTMLImageElement;\n protected terrainImageLoaded: boolean = false;\n protected mapTexture: string | undefined;\n\n public initPlane(\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n lng = 120,\n lat = 30,\n ) {\n // https://github.com/mrdoob/three.js/blob/dev/src/geometries/PlaneGeometry.js\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n const indices = [];\n const positions = [];\n\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n if (this.mapService.version === Version['GAODE2.x']) {\n // @ts-ignore\n const [a, b] = this.mapService.lngLatToCoord([x + lng, -y + lat]) as [\n number,\n number,\n ];\n positions.push(a, b, 0);\n } else {\n positions.push(x + lng, -y + lat, 0);\n }\n\n positions.push(ix / gridX);\n positions.push(1 - iy / gridY);\n }\n }\n\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n return { indices, positions };\n }\n\n public planeGeometryTriangulation = () => {\n const {\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n center = [120, 30],\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const { indices, positions } = this.initPlane(\n width,\n height,\n widthSegments,\n heightSegments,\n ...center,\n );\n if (terrainTexture) {\n // 存在地形贴图的时候会根据地形贴图对顶点进行偏移\n this.loadTerrainTexture(positions, indices);\n }\n\n return {\n vertices: positions,\n indices,\n size: 5,\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n mapTexture,\n terrainClipHeight = 0,\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n if (this.mapTexture !== mapTexture) {\n this.mapTexture = mapTexture;\n this.texture?.destroy();\n this.updateTexture(mapTexture);\n }\n return {\n u_opacity: opacity || 1,\n u_mapFlag: mapTexture ? 1 : 0,\n u_terrainClipHeight: terrainTexture ? terrainClipHeight : -1,\n u_texture: this.texture,\n };\n }\n\n public clearModels(): void {\n // @ts-ignore\n this.terrainImage = null;\n this.texture?.destroy();\n }\n\n public initModels() {\n const {\n mask = false,\n maskInside = true,\n mapTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n this.mapTexture = mapTexture;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n this.updateTexture(mapTexture);\n return [\n this.layer.buildLayerModel({\n moduleName: 'geometry_plane',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryTriangulation,\n primitive: gl.TRIANGLES,\n // primitive: gl.LINES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: gl.BACK, // gl.FRONT | gl.BACK;\n },\n }),\n ];\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public createModelData(options?: any) {\n if (options) {\n const {\n widthSegments: oldwidthSegments,\n heightSegments: oldheightSegments,\n width: oldwidth,\n height: oldheight,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const {\n widthSegments,\n heightSegments,\n width,\n height,\n } = options as IGeometryLayerStyleOptions;\n this.layer.style({\n widthSegments:\n widthSegments !== undefined ? widthSegments : oldwidthSegments,\n heightSegments:\n heightSegments !== undefined ? heightSegments : oldheightSegments,\n width: width !== undefined ? width : oldwidth,\n height: height !== undefined ? height : oldheight,\n });\n }\n const oldFeatures = this.layer.getEncodedData();\n const res = this.styleAttributeService.createAttributesAndIndices(\n oldFeatures,\n this.planeGeometryTriangulation,\n );\n return res;\n }\n\n public updateTexture(mapTexture: string | undefined): void {\n const { createTexture2D } = this.rendererService;\n\n if (mapTexture) {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n this.texture = createTexture2D({\n data: img,\n width: img.width,\n height: img.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n img.src = mapTexture;\n } else {\n this.texture = createTexture2D({\n width: 0,\n height: 0,\n });\n }\n }\n\n protected getImageData(img: HTMLImageElement) {\n const canvas: HTMLCanvasElement = document.createElement('canvas');\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const { width, height } = img;\n canvas.width = width;\n canvas.height = height;\n\n ctx.drawImage(img, 0, 0, width, height);\n const imageData = ctx.getImageData(0, 0, width, height);\n\n return imageData;\n }\n\n protected translateVertex(\n positions: number[],\n indices: number[],\n image: HTMLImageElement,\n widthSegments: number,\n heightSegments: number,\n rgb2height: (r: number, g: number, b: number) => number,\n ) {\n const imgWidth = image.width;\n const imgHeight = image.height;\n const imageData = this.getImageData(image).data;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const widthStep = imgWidth / gridX;\n const heihgtStep = imgHeight / gridY;\n\n for (let iy = 0; iy < gridY1; iy++) {\n const imgIndexY = Math.floor(iy * heihgtStep);\n const imgLen = imgIndexY * imgWidth;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const imgIndexX = Math.floor(ix * widthStep);\n const imgDataIndex = (imgLen + imgIndexX) * 4;\n\n const r = imageData[imgDataIndex];\n const g = imageData[imgDataIndex + 1];\n const b = imageData[imgDataIndex + 2];\n\n const z = (iy * gridX1 + ix) * 5 + 2;\n positions[z] = rgb2height(r, g, b);\n }\n }\n\n const oldFeatures = this.layer.getEncodedData();\n const modelData = this.styleAttributeService.createAttributesAndIndices(\n oldFeatures,\n () => {\n return {\n vertices: positions,\n indices,\n size: 5,\n };\n },\n );\n this.layer.updateModelData(modelData as IAttrubuteAndElements);\n this.layerService.renderLayers();\n }\n\n /**\n * load terrain texture & offset attribute z\n */\n protected loadTerrainTexture(positions: number[], indices: number[]) {\n const {\n widthSegments = 1,\n heightSegments = 1,\n terrainTexture,\n rgb2height = (r: number, g: number, b: number) => r + g + b,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n if (this.terrainImage) {\n // 若当前已经存在 image,直接进行偏移计算(LOD)\n if (this.terrainImageLoaded) {\n this.translateVertex(\n positions,\n indices,\n this.terrainImage,\n widthSegments,\n heightSegments,\n rgb2height,\n );\n } else {\n this.terrainImage.onload = () => {\n this.translateVertex(\n positions,\n indices,\n this.terrainImage,\n widthSegments,\n heightSegments,\n rgb2height,\n );\n };\n }\n } else {\n // 加载地形贴图、根据地形贴图对 planeGeometry 进行偏移\n const terrainImage = new Image();\n this.terrainImage = terrainImage;\n terrainImage.crossOrigin = 'anonymous';\n terrainImage.onload = () => {\n this.terrainImageLoaded = true;\n // 图片加载完,触发事件,可以进行地形图的顶点计算存储\n setTimeout(() => this.layer.emit('terrainImageLoaded', null));\n this.translateVertex(\n positions,\n indices,\n terrainImage,\n widthSegments,\n heightSegments,\n rgb2height,\n );\n };\n terrainImage.src = terrainTexture as string;\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"plane.js"}
@@ -150,7 +150,9 @@ var CanvaModel = function (_BaseModel) {
150
150
  key: "clearModels",
151
151
  value: function clearModels() {
152
152
  if (this.canvas) {
153
- document.removeChild(this.canvas);
153
+ var _this$mapService$getC;
154
+
155
+ (_this$mapService$getC = this.mapService.getContainer()) === null || _this$mapService$getC === void 0 ? void 0 : _this$mapService$getC.removeChild(this.canvas);
154
156
  this.canvas = null;
155
157
  }
156
158
 
@@ -173,7 +175,7 @@ var CanvaModel = function (_BaseModel) {
173
175
  }, {
174
176
  key: "initCanvas",
175
177
  value: function initCanvas() {
176
- var _this$mapService$getC;
178
+ var _this$mapService$getC2;
177
179
 
178
180
  var _ref4 = this.layer.getLayerConfig(),
179
181
  zIndex = _ref4.zIndex;
@@ -200,7 +202,7 @@ var CanvaModel = function (_BaseModel) {
200
202
  canvas.style.top = '0';
201
203
  canvas.style.left = '0';
202
204
  canvas.style.zIndex = zIndex + '';
203
- (_this$mapService$getC = this.mapService.getContainer()) === null || _this$mapService$getC === void 0 ? void 0 : _this$mapService$getC.appendChild(canvas);
205
+ (_this$mapService$getC2 = this.mapService.getContainer()) === null || _this$mapService$getC2 === void 0 ? void 0 : _this$mapService$getC2.appendChild(canvas);
204
206
  var ctx = canvas.getContext('2d');
205
207
  this.ctx = ctx;
206
208
  }