@antv/l7-layers 2.8.32 → 2.8.35

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 (84) hide show
  1. package/es/Geometry/index.d.ts +1 -1
  2. package/es/Geometry/index.js +4 -1
  3. package/es/Geometry/index.js.map +1 -1
  4. package/es/Geometry/models/billboard.d.ts +29 -0
  5. package/es/Geometry/models/billboard.js +222 -0
  6. package/es/Geometry/models/billboard.js.map +1 -0
  7. package/es/Geometry/models/index.d.ts +1 -1
  8. package/es/Geometry/models/index.js +3 -1
  9. package/es/Geometry/models/index.js.map +1 -1
  10. package/es/Geometry/models/plane.d.ts +13 -11
  11. package/es/Geometry/models/plane.js +134 -110
  12. package/es/Geometry/models/plane.js.map +1 -1
  13. package/es/canvas/models/canvas.js +5 -3
  14. package/es/canvas/models/canvas.js.map +1 -1
  15. package/es/core/BaseLayer.d.ts +5 -1
  16. package/es/core/BaseLayer.js +47 -0
  17. package/es/core/BaseLayer.js.map +1 -1
  18. package/es/core/interface.d.ts +5 -0
  19. package/es/core/interface.js.map +1 -1
  20. package/es/heatmap/index.d.ts +2 -0
  21. package/es/heatmap/index.js +9 -0
  22. package/es/heatmap/index.js.map +1 -1
  23. package/es/heatmap/models/heatmap.js +1 -0
  24. package/es/heatmap/models/heatmap.js.map +1 -1
  25. package/es/index.js.map +1 -1
  26. package/es/line/index.d.ts +1 -1
  27. package/es/line/index.js +1 -0
  28. package/es/line/index.js.map +1 -1
  29. package/es/line/models/index.d.ts +1 -1
  30. package/es/line/models/index.js +3 -1
  31. package/es/line/models/index.js.map +1 -1
  32. package/es/line/models/line.js +1 -0
  33. package/es/line/models/line.js.map +1 -1
  34. package/es/line/models/linearline.d.ts +20 -0
  35. package/es/line/models/linearline.js +267 -0
  36. package/es/line/models/linearline.js.map +1 -0
  37. package/es/point/models/fill.js +1 -0
  38. package/es/point/models/fill.js.map +1 -1
  39. package/es/point/models/normal.js +1 -0
  40. package/es/point/models/normal.js.map +1 -1
  41. package/es/point/models/simplePoint.js +1 -0
  42. package/es/point/models/simplePoint.js.map +1 -1
  43. package/es/polygon/models/fill.js +1 -0
  44. package/es/polygon/models/fill.js.map +1 -1
  45. package/es/utils/layerData.d.ts +2 -0
  46. package/es/utils/layerData.js +152 -0
  47. package/es/utils/layerData.js.map +1 -0
  48. package/lib/Geometry/index.js +4 -1
  49. package/lib/Geometry/index.js.map +1 -1
  50. package/lib/Geometry/models/billboard.js +233 -0
  51. package/lib/Geometry/models/billboard.js.map +1 -0
  52. package/lib/Geometry/models/index.js +4 -1
  53. package/lib/Geometry/models/index.js.map +1 -1
  54. package/lib/Geometry/models/plane.js +133 -108
  55. package/lib/Geometry/models/plane.js.map +1 -1
  56. package/lib/canvas/models/canvas.js +5 -3
  57. package/lib/canvas/models/canvas.js.map +1 -1
  58. package/lib/core/BaseLayer.js +47 -0
  59. package/lib/core/BaseLayer.js.map +1 -1
  60. package/lib/core/interface.js.map +1 -1
  61. package/lib/heatmap/index.js +9 -0
  62. package/lib/heatmap/index.js.map +1 -1
  63. package/lib/heatmap/models/heatmap.js +1 -0
  64. package/lib/heatmap/models/heatmap.js.map +1 -1
  65. package/lib/index.js.map +1 -1
  66. package/lib/line/index.js +1 -0
  67. package/lib/line/index.js.map +1 -1
  68. package/lib/line/models/index.js +4 -1
  69. package/lib/line/models/index.js.map +1 -1
  70. package/lib/line/models/line.js +1 -0
  71. package/lib/line/models/line.js.map +1 -1
  72. package/lib/line/models/linearline.js +283 -0
  73. package/lib/line/models/linearline.js.map +1 -0
  74. package/lib/point/models/fill.js +1 -0
  75. package/lib/point/models/fill.js.map +1 -1
  76. package/lib/point/models/normal.js +1 -0
  77. package/lib/point/models/normal.js.map +1 -1
  78. package/lib/point/models/simplePoint.js +1 -0
  79. package/lib/point/models/simplePoint.js.map +1 -1
  80. package/lib/polygon/models/fill.js +1 -0
  81. package/lib/polygon/models/fill.js.map +1 -1
  82. package/lib/utils/layerData.js +163 -0
  83. package/lib/utils/layerData.js.map +1 -0
  84. package/package.json +5 -5
@@ -0,0 +1,233 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _l7Core = require("@antv/l7-core");
27
+
28
+ var _l7Utils = require("@antv/l7-utils");
29
+
30
+ var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
31
+
32
+ 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); }; }
33
+
34
+ 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; } }
35
+
36
+ var planeFrag = "\nuniform sampler2D u_texture;\nuniform float u_opacity;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\n\n#pragma include \"picking\"\nvoid main() {\n gl_FragColor = texture2D(u_texture, vec2(v_uv.x, 1.0 - v_uv.y));\n gl_FragColor.a *= u_opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
37
+ var planeVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform float u_raisingHeight: 0.0;\nuniform mat4 u_Mvp;\nuniform float u_opacity;\nuniform vec2 u_size: [1.0, 1.0];\nuniform mat2 u_RotateMatrix;\n\nattribute vec3 a_Extrude;\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nattribute vec3 a_Color;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\nvoid main() {\n vec3 extrude = a_Extrude;\n v_Color = a_Color;\n v_uv = a_Uv;\n\n float raiseHeight = u_raisingHeight;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raiseHeight = u_raisingHeight * mapboxZoomScale;\n }\n\n // \u8BA1\u7B97\u7ECF\u7EAC\u5EA6\u70B9\u4F4D\u5750\u6807\n vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n\n // \u8BA1\u7B97\u7ED5 z \u8F74\u65CB\u8F6C\u540E\u7684\u504F\u79FB\n vec2 offsetXY = project_pixel(u_RotateMatrix * vec2(extrude.x * u_size.x, 0.0));\n // \u7ED5 z \u8F74\u65CB\u8F6C\n float x = project_pos.x + offsetXY.x;\n float y = project_pos.y + offsetXY.y;\n // z \u8F74\u4E0D\u53C2\u4E0E\u65CB\u8F6C\n float z = project_pixel(extrude.y * u_size.y + raiseHeight);\n\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xy, a_Position.z, 1.0));\n gl_Position = u_Mvp * (vec4(x, y, z, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(x , y, z , 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
38
+
39
+ var BillBoardModel = function (_BaseModel) {
40
+ (0, _inherits2.default)(BillBoardModel, _BaseModel);
41
+
42
+ var _super = _createSuper(BillBoardModel);
43
+
44
+ function BillBoardModel() {
45
+ var _this;
46
+
47
+ (0, _classCallCheck2.default)(this, BillBoardModel);
48
+
49
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
50
+ args[_key] = arguments[_key];
51
+ }
52
+
53
+ _this = _super.call.apply(_super, [this].concat(args));
54
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
55
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImage", void 0);
56
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImageLoaded", false);
57
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mapTexture", void 0);
58
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "radian", 0);
59
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryTriangulation", function () {
60
+ var _ref = _this.layer.getLayerConfig(),
61
+ _ref$center = _ref.center,
62
+ center = _ref$center === void 0 ? [120, 30] : _ref$center;
63
+
64
+ return {
65
+ size: 4,
66
+ indices: [0, 1, 2, 2, 3, 0],
67
+ vertices: [].concat((0, _toConsumableArray2.default)(center), [1, 1], (0, _toConsumableArray2.default)(center), [0, 1], (0, _toConsumableArray2.default)(center), [0, 0], (0, _toConsumableArray2.default)(center), [1, 0])
68
+ };
69
+ });
70
+ return _this;
71
+ }
72
+
73
+ (0, _createClass2.default)(BillBoardModel, [{
74
+ key: "getUninforms",
75
+ value: function getUninforms() {
76
+ var _ref2 = this.layer.getLayerConfig(),
77
+ opacity = _ref2.opacity,
78
+ _ref2$width = _ref2.width,
79
+ width = _ref2$width === void 0 ? 1 : _ref2$width,
80
+ _ref2$height = _ref2.height,
81
+ height = _ref2$height === void 0 ? 1 : _ref2$height,
82
+ _ref2$raisingHeight = _ref2.raisingHeight,
83
+ raisingHeight = _ref2$raisingHeight === void 0 ? 0 : _ref2$raisingHeight;
84
+
85
+ var rotateFlag = 1;
86
+
87
+ if (this.mapService.version === 'GAODE2.x' || this.mapService.version === 'GAODE1.x') {
88
+ rotateFlag = -1;
89
+ }
90
+
91
+ this.radian = rotateFlag * Math.PI * (this.mapService.getRotation() % 360) / 180;
92
+ return {
93
+ u_raisingHeight: Number(raisingHeight),
94
+ u_RotateMatrix: new Float32Array([Math.cos(this.radian), Math.sin(this.radian), -Math.sin(this.radian), Math.cos(this.radian)]),
95
+ u_opacity: opacity || 1,
96
+ u_texture: this.texture,
97
+ u_size: [width, height]
98
+ };
99
+ }
100
+ }, {
101
+ key: "clearModels",
102
+ value: function clearModels() {
103
+ var _this$texture;
104
+
105
+ this.terrainImage = null;
106
+ (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
107
+ }
108
+ }, {
109
+ key: "initModels",
110
+ value: function initModels() {
111
+ var _ref3 = this.layer.getLayerConfig(),
112
+ _ref3$mask = _ref3.mask,
113
+ mask = _ref3$mask === void 0 ? false : _ref3$mask,
114
+ _ref3$maskInside = _ref3.maskInside,
115
+ maskInside = _ref3$maskInside === void 0 ? true : _ref3$maskInside,
116
+ mapTexture = _ref3.mapTexture,
117
+ drawCanvas = _ref3.drawCanvas;
118
+
119
+ this.mapTexture = mapTexture;
120
+ var createTexture2D = this.rendererService.createTexture2D;
121
+ this.texture = createTexture2D({
122
+ height: 0,
123
+ width: 0
124
+ });
125
+
126
+ if (drawCanvas) {
127
+ this.updateTexture(drawCanvas);
128
+ }
129
+
130
+ return [this.layer.buildLayerModel({
131
+ moduleName: 'geometry_billboard',
132
+ vertexShader: planeVert,
133
+ fragmentShader: planeFrag,
134
+ triangulation: this.planeGeometryTriangulation,
135
+ primitive: _l7Core.gl.TRIANGLES,
136
+ depth: {
137
+ enable: true
138
+ },
139
+ blend: this.getBlend(),
140
+ stencil: (0, _l7Utils.getMask)(mask, maskInside)
141
+ })];
142
+ }
143
+ }, {
144
+ key: "buildModels",
145
+ value: function buildModels() {
146
+ return this.initModels();
147
+ }
148
+ }, {
149
+ key: "updateTexture",
150
+ value: function updateTexture(drawCanvas) {
151
+ var createTexture2D = this.rendererService.createTexture2D;
152
+
153
+ var _ref4 = this.layer.getLayerConfig(),
154
+ _ref4$canvasWidth = _ref4.canvasWidth,
155
+ canvasWidth = _ref4$canvasWidth === void 0 ? 1 : _ref4$canvasWidth,
156
+ _ref4$canvasHeight = _ref4.canvasHeight,
157
+ canvasHeight = _ref4$canvasHeight === void 0 ? 1 : _ref4$canvasHeight;
158
+
159
+ var canvas = document.createElement('canvas');
160
+ canvas.width = canvasWidth;
161
+ canvas.height = canvasHeight;
162
+ var ctx = canvas.getContext('2d');
163
+
164
+ if (ctx) {
165
+ drawCanvas(canvas);
166
+ this.texture = createTexture2D({
167
+ data: canvas,
168
+ width: canvas.width,
169
+ height: canvas.height,
170
+ wrapS: _l7Core.gl.CLAMP_TO_EDGE,
171
+ wrapT: _l7Core.gl.CLAMP_TO_EDGE
172
+ });
173
+ this.layerService.updateLayerRenderList();
174
+ this.layerService.renderLayers();
175
+ }
176
+ }
177
+ }, {
178
+ key: "getConfigSchema",
179
+ value: function getConfigSchema() {
180
+ return {
181
+ properties: {
182
+ opacity: {
183
+ type: 'number',
184
+ minimum: 0,
185
+ maximum: 1
186
+ }
187
+ }
188
+ };
189
+ }
190
+ }, {
191
+ key: "registerBuiltinAttributes",
192
+ value: function registerBuiltinAttributes() {
193
+ this.styleAttributeService.registerStyleAttribute({
194
+ name: 'extrude',
195
+ type: _l7Core.AttributeType.Attribute,
196
+ descriptor: {
197
+ name: 'a_Extrude',
198
+ buffer: {
199
+ usage: _l7Core.gl.DYNAMIC_DRAW,
200
+ data: [],
201
+ type: _l7Core.gl.FLOAT
202
+ },
203
+ size: 3,
204
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
205
+ var extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];
206
+ var extrudeIndex = attributeIdx % 4 * 3;
207
+ return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
208
+ }
209
+ }
210
+ });
211
+ this.styleAttributeService.registerStyleAttribute({
212
+ name: 'uv',
213
+ type: _l7Core.AttributeType.Attribute,
214
+ descriptor: {
215
+ name: 'a_Uv',
216
+ buffer: {
217
+ usage: _l7Core.gl.DYNAMIC_DRAW,
218
+ data: [],
219
+ type: _l7Core.gl.FLOAT
220
+ },
221
+ size: 2,
222
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
223
+ return [vertex[2], vertex[3]];
224
+ }
225
+ }
226
+ });
227
+ }
228
+ }]);
229
+ return BillBoardModel;
230
+ }(_BaseModel2.default);
231
+
232
+ exports.default = BillBoardModel;
233
+ //# sourceMappingURL=billboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Geometry/models/billboard.ts"],"names":["BillBoardModel","layer","getLayerConfig","center","size","indices","vertices","opacity","width","height","raisingHeight","rotateFlag","mapService","version","radian","Math","PI","getRotation","u_raisingHeight","Number","u_RotateMatrix","Float32Array","cos","sin","u_opacity","u_texture","texture","u_size","terrainImage","destroy","mask","maskInside","mapTexture","drawCanvas","createTexture2D","rendererService","updateTexture","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","initModels","canvasWidth","canvasHeight","canvas","document","createElement","ctx","getContext","data","wrapS","CLAMP_TO_EDGE","wrapT","layerService","updateLayerRenderList","renderLayers","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx","extrude","extrudeIndex","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 { getMask, isMini } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport planeFrag from '../shaders/billboard_frag.glsl';\nimport planeVert from '../shaders/billboard_vert.glsl';\n\nexport default class BillBoardModel extends BaseModel {\n protected texture: ITexture2D;\n protected terrainImage: HTMLImageElement;\n protected terrainImageLoaded: boolean = false;\n protected mapTexture: string | undefined;\n private radian: number = 0; // 旋转的弧度\n\n public planeGeometryTriangulation = () => {\n const {\n center = [120, 30],\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n return {\n size: 4,\n indices: [0, 1, 2, 2, 3, 0],\n vertices: [\n ...center,\n ...[1, 1],\n ...center,\n ...[0, 1],\n ...center,\n ...[0, 0],\n ...center,\n ...[1, 0],\n ],\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n width = 1,\n height = 1,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian =\n (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\n\n return {\n u_raisingHeight: Number(raisingHeight),\n u_RotateMatrix: new Float32Array([\n // z\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_opacity: opacity || 1,\n u_texture: this.texture,\n u_size: [width, height],\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 drawCanvas,\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 if (drawCanvas) {\n this.updateTexture(drawCanvas);\n }\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'geometry_billboard',\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 }),\n ];\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public updateTexture(drawCanvas: (canvas: HTMLCanvasElement) => void): void {\n const { createTexture2D } = this.rendererService;\n\n const {\n canvasWidth = 1,\n canvasHeight = 1,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const canvas = document.createElement('canvas');\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n const ctx = canvas.getContext('2d');\n if (ctx) {\n drawCanvas(canvas);\n this.texture = createTexture2D({\n data: canvas,\n width: canvas.width,\n height: canvas.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\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 this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\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: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\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[2], vertex[3]];\n },\n },\n });\n }\n}\n"],"file":"billboard.js"}
@@ -7,13 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _billboard = _interopRequireDefault(require("./billboard"));
11
+
10
12
  var _plane = _interopRequireDefault(require("./plane"));
11
13
 
12
14
  var _sprite = _interopRequireDefault(require("./sprite"));
13
15
 
14
16
  var GeometryModels = {
15
17
  plane: _plane.default,
16
- sprite: _sprite.default
18
+ sprite: _sprite.default,
19
+ billboard: _billboard.default
17
20
  };
18
21
  var _default = GeometryModels;
19
22
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Geometry/models/index.ts"],"names":["GeometryModels","plane","PlaneModel","sprite","SpriteModel"],"mappings":";;;;;;;;;AAAA;;AACA;;AAGA,IAAMA,cAAmD,GAAG;AAC1DC,EAAAA,KAAK,EAAEC,cADmD;AAE1DC,EAAAA,MAAM,EAAEC;AAFkD,CAA5D;eAIeJ,c","sourcesContent":["import PlaneModel from './plane';\nimport SpriteModel from './sprite';\nexport type GeometryModelType = 'plane' | 'sprite';\n\nconst GeometryModels: { [key in GeometryModelType]: any } = {\n plane: PlaneModel,\n sprite: SpriteModel,\n};\nexport default GeometryModels;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/Geometry/models/index.ts"],"names":["GeometryModels","plane","PlaneModel","sprite","SpriteModel","billboard","BillBoardModel"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAGA,IAAMA,cAAmD,GAAG;AAC1DC,EAAAA,KAAK,EAAEC,cADmD;AAE1DC,EAAAA,MAAM,EAAEC,eAFkD;AAG1DC,EAAAA,SAAS,EAAEC;AAH+C,CAA5D;eAKeN,c","sourcesContent":["import BillBoardModel from './billboard';\nimport PlaneModel from './plane';\nimport SpriteModel from './sprite';\nexport type GeometryModelType = 'plane' | 'sprite' | 'billboard';\n\nconst GeometryModels: { [key in GeometryModelType]: any } = {\n plane: PlaneModel,\n sprite: SpriteModel,\n billboard: BillBoardModel,\n};\nexport default GeometryModels;\n"],"file":"index.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() {