@antv/l7-layers 2.8.27 → 2.8.30

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 (40) hide show
  1. package/es/Geometry/index.d.ts +1 -1
  2. package/es/Geometry/index.js +14 -2
  3. package/es/Geometry/index.js.map +1 -1
  4. package/es/Geometry/models/index.d.ts +1 -1
  5. package/es/Geometry/models/index.js +3 -1
  6. package/es/Geometry/models/index.js.map +1 -1
  7. package/es/Geometry/models/sprite.d.ts +47 -0
  8. package/es/Geometry/models/sprite.js +305 -0
  9. package/es/Geometry/models/sprite.js.map +1 -0
  10. package/es/core/BaseLayer.d.ts +1 -0
  11. package/es/core/BaseLayer.js +10 -0
  12. package/es/core/BaseLayer.js.map +1 -1
  13. package/es/core/interface.d.ts +11 -1
  14. package/es/core/interface.js.map +1 -1
  15. package/es/line/models/line.js +8 -6
  16. package/es/line/models/line.js.map +1 -1
  17. package/es/line/models/wall.js +3 -7
  18. package/es/line/models/wall.js.map +1 -1
  19. package/es/point/models/extrude.js +1 -1
  20. package/es/point/models/fill.js +6 -3
  21. package/es/point/models/fill.js.map +1 -1
  22. package/es/polygon/models/extrude.js +1 -1
  23. package/lib/Geometry/index.js +14 -2
  24. package/lib/Geometry/index.js.map +1 -1
  25. package/lib/Geometry/models/index.js +4 -1
  26. package/lib/Geometry/models/index.js.map +1 -1
  27. package/lib/Geometry/models/sprite.js +312 -0
  28. package/lib/Geometry/models/sprite.js.map +1 -0
  29. package/lib/core/BaseLayer.js +10 -0
  30. package/lib/core/BaseLayer.js.map +1 -1
  31. package/lib/core/interface.js.map +1 -1
  32. package/lib/line/models/line.js +8 -6
  33. package/lib/line/models/line.js.map +1 -1
  34. package/lib/line/models/wall.js +3 -7
  35. package/lib/line/models/wall.js.map +1 -1
  36. package/lib/point/models/extrude.js +1 -1
  37. package/lib/point/models/fill.js +6 -3
  38. package/lib/point/models/fill.js.map +1 -1
  39. package/lib/polygon/models/extrude.js +1 -1
  40. package/package.json +5 -5
@@ -0,0 +1,312 @@
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
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 _l7Maps = require("@antv/l7-maps");
31
+
32
+ var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
33
+
34
+ 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); }; }
35
+
36
+ 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; } }
37
+
38
+ var spriteFrag = "\nuniform sampler2D u_texture;\nuniform float u_mapFlag;\nuniform float u_opacity;\n\nvarying vec3 v_Color;\nvarying float v_d;\n\n#pragma include \"picking\"\nvoid main() {\n\n if(v_d < 0.0) {\n discard;\n }\n\n if(u_mapFlag > 0.0) {\n gl_FragColor = texture2D(u_texture, gl_PointCoord);\n gl_FragColor.a *= u_opacity;\n } else {\n gl_FragColor = vec4(v_Color, u_opacity);\n }\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
39
+ var spriteVert = "precision highp float;\n\nattribute vec3 a_Position;\nattribute vec3 a_Color;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_opacity;\nuniform float u_Scale;\nvarying vec3 v_Color;\nvarying float v_d;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\nvoid main() {\n v_Color = a_Color;\n \n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n v_d = a_Position.z;\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 } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, a_Position.z, 1.0));\n }\n\n gl_PointSize = pow((u_Zoom - 1.0), 2.0) * u_Scale;\n\n setPickingColor(a_PickingColor);\n}\n";
40
+ var SPRITE_ANIMATE_DIR;
41
+
42
+ (function (SPRITE_ANIMATE_DIR) {
43
+ SPRITE_ANIMATE_DIR["UP"] = "up";
44
+ SPRITE_ANIMATE_DIR["DOWN"] = "down";
45
+ })(SPRITE_ANIMATE_DIR || (SPRITE_ANIMATE_DIR = {}));
46
+
47
+ var SpriteModel = function (_BaseModel) {
48
+ (0, _inherits2.default)(SpriteModel, _BaseModel);
49
+
50
+ var _super = _createSuper(SpriteModel);
51
+
52
+ function SpriteModel() {
53
+ var _this;
54
+
55
+ (0, _classCallCheck2.default)(this, SpriteModel);
56
+
57
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
58
+ args[_key] = arguments[_key];
59
+ }
60
+
61
+ _this = _super.call.apply(_super, [this].concat(args));
62
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mapTexture", void 0);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "positions", void 0);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "indices", void 0);
66
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "timer", void 0);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "spriteTop", void 0);
68
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "spriteUpdate", void 0);
69
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "spriteAnimate", void 0);
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryUpdateTriangulation", function () {
71
+ var updateZ = _this.spriteUpdate;
72
+ var bottomZ = -100000;
73
+ var topZ = _this.spriteTop;
74
+
75
+ for (var i = 0; i < _this.positions.length; i += 5) {
76
+ if (_this.spriteAnimate === SPRITE_ANIMATE_DIR.UP) {
77
+ _this.positions[i + 2] += updateZ;
78
+
79
+ if (_this.positions[i + 2] > topZ) {
80
+ _this.positions[i + 2] = bottomZ;
81
+ }
82
+ } else {
83
+ _this.positions[i + 2] -= updateZ;
84
+
85
+ if (_this.positions[i + 2] < bottomZ) {
86
+ _this.positions[i + 2] = topZ;
87
+ }
88
+ }
89
+ }
90
+
91
+ return {
92
+ vertices: _this.positions,
93
+ indices: _this.indices,
94
+ size: 5
95
+ };
96
+ });
97
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateModel", function () {
98
+ var attributes = _this.layer.createAttrubutes({
99
+ triangulation: _this.planeGeometryUpdateTriangulation
100
+ });
101
+
102
+ _this.layer.models.map(function (m) {
103
+ m.updateAttributes(attributes);
104
+ });
105
+
106
+ _this.layer.renderLayers();
107
+
108
+ _this.timer = requestAnimationFrame(_this.updateModel);
109
+ });
110
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryTriangulation", function () {
111
+ var _this2;
112
+
113
+ var _ref = _this.layer.getLayerConfig(),
114
+ _ref$center = _ref.center,
115
+ center = _ref$center === void 0 ? [120, 30] : _ref$center,
116
+ _ref$spriteCount = _ref.spriteCount,
117
+ spriteCount = _ref$spriteCount === void 0 ? 100 : _ref$spriteCount,
118
+ _ref$spriteRadius = _ref.spriteRadius,
119
+ spriteRadius = _ref$spriteRadius === void 0 ? 10 : _ref$spriteRadius;
120
+
121
+ var _this$initSprite = (_this2 = _this).initSprite.apply(_this2, [spriteRadius, spriteCount].concat((0, _toConsumableArray2.default)(center))),
122
+ indices = _this$initSprite.indices,
123
+ positions = _this$initSprite.positions;
124
+
125
+ _this.positions = positions;
126
+ _this.indices = indices;
127
+ return {
128
+ vertices: positions,
129
+ indices: indices,
130
+ size: 5
131
+ };
132
+ });
133
+ return _this;
134
+ }
135
+
136
+ (0, _createClass2.default)(SpriteModel, [{
137
+ key: "initSprite",
138
+ value: function initSprite() {
139
+ var radius = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
140
+ var spriteCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
141
+ var lng = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 120;
142
+ var lat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 30;
143
+ var indices = [];
144
+ var positions = [];
145
+ var mapService = this.mapService;
146
+ var heightLimit = this.spriteAnimate === SPRITE_ANIMATE_DIR.UP ? -this.spriteTop : this.spriteTop;
147
+
148
+ for (var i = 0; i < spriteCount; i++) {
149
+ var height = Math.random() * heightLimit;
150
+ positions.push.apply(positions, (0, _toConsumableArray2.default)(getPos(height)));
151
+ }
152
+
153
+ for (var _i = 0; _i < spriteCount; _i++) {
154
+ indices.push(_i);
155
+ }
156
+
157
+ function getPos(z) {
158
+ var randomX = radius * Math.random();
159
+ var randomY = radius * Math.random();
160
+ var x = -radius / 2 + randomX;
161
+ var y = -radius / 2 + randomY;
162
+
163
+ if (mapService.version === _l7Maps.Version['GAODE2.x']) {
164
+ var _ref2 = mapService.lngLatToCoord([x + lng, -y + lat]),
165
+ _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
166
+ a = _ref3[0],
167
+ b = _ref3[1];
168
+
169
+ return [a, b, z, 0, 0];
170
+ } else {
171
+ return [x + lng, -y + lat, z, 0, 0];
172
+ }
173
+ }
174
+
175
+ return {
176
+ indices: indices,
177
+ positions: positions
178
+ };
179
+ }
180
+ }, {
181
+ key: "getUninforms",
182
+ value: function getUninforms() {
183
+ var _ref4 = this.layer.getLayerConfig(),
184
+ opacity = _ref4.opacity,
185
+ mapTexture = _ref4.mapTexture,
186
+ _ref4$spriteScale = _ref4.spriteScale,
187
+ spriteScale = _ref4$spriteScale === void 0 ? 1 : _ref4$spriteScale;
188
+
189
+ if (this.mapTexture !== mapTexture) {
190
+ var _this$texture;
191
+
192
+ this.mapTexture = mapTexture;
193
+ (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
194
+ this.updateTexture(mapTexture);
195
+ }
196
+
197
+ return {
198
+ u_opacity: opacity || 1,
199
+ u_mapFlag: mapTexture ? 1 : 0,
200
+ u_texture: this.texture,
201
+ u_Scale: spriteScale
202
+ };
203
+ }
204
+ }, {
205
+ key: "clearModels",
206
+ value: function clearModels() {
207
+ var _this$texture2;
208
+
209
+ cancelAnimationFrame(this.timer);
210
+ (_this$texture2 = this.texture) === null || _this$texture2 === void 0 ? void 0 : _this$texture2.destroy();
211
+ }
212
+ }, {
213
+ key: "initModels",
214
+ value: function initModels() {
215
+ var _this3 = this;
216
+
217
+ var _ref5 = this.layer.getLayerConfig(),
218
+ mapTexture = _ref5.mapTexture,
219
+ _ref5$spriteTop = _ref5.spriteTop,
220
+ spriteTop = _ref5$spriteTop === void 0 ? 5000000 : _ref5$spriteTop,
221
+ _ref5$spriteUpdate = _ref5.spriteUpdate,
222
+ spriteUpdate = _ref5$spriteUpdate === void 0 ? 10000 : _ref5$spriteUpdate,
223
+ _ref5$spriteAnimate = _ref5.spriteAnimate,
224
+ spriteAnimate = _ref5$spriteAnimate === void 0 ? SPRITE_ANIMATE_DIR.DOWN : _ref5$spriteAnimate;
225
+
226
+ this.mapTexture = mapTexture;
227
+ this.spriteTop = spriteTop;
228
+ this.spriteUpdate = spriteUpdate;
229
+ spriteAnimate === 'up' ? this.spriteAnimate = SPRITE_ANIMATE_DIR.UP : this.spriteAnimate = SPRITE_ANIMATE_DIR.DOWN;
230
+ var createTexture2D = this.rendererService.createTexture2D;
231
+ this.texture = createTexture2D({
232
+ height: 0,
233
+ width: 0
234
+ });
235
+ this.updateTexture(mapTexture);
236
+ setTimeout(function () {
237
+ _this3.updateModel();
238
+ }, 100);
239
+ return [this.layer.buildLayerModel({
240
+ moduleName: 'geometry_sprite',
241
+ vertexShader: spriteVert,
242
+ fragmentShader: spriteFrag,
243
+ triangulation: this.planeGeometryTriangulation,
244
+ primitive: _l7Core.gl.POINTS,
245
+ depth: {
246
+ enable: false
247
+ },
248
+ blend: this.getBlend()
249
+ })];
250
+ }
251
+ }, {
252
+ key: "buildModels",
253
+ value: function buildModels() {
254
+ return this.initModels();
255
+ }
256
+ }, {
257
+ key: "updateTexture",
258
+ value: function updateTexture(mapTexture) {
259
+ var _this4 = this;
260
+
261
+ var createTexture2D = this.rendererService.createTexture2D;
262
+
263
+ if (mapTexture) {
264
+ var img = new Image();
265
+ img.crossOrigin = 'anonymous';
266
+
267
+ img.onload = function () {
268
+ _this4.texture = createTexture2D({
269
+ data: img,
270
+ width: img.width,
271
+ height: img.height,
272
+ wrapS: _l7Core.gl.CLAMP_TO_EDGE,
273
+ wrapT: _l7Core.gl.CLAMP_TO_EDGE
274
+ });
275
+
276
+ _this4.layerService.updateLayerRenderList();
277
+
278
+ _this4.layerService.renderLayers();
279
+ };
280
+
281
+ img.src = mapTexture;
282
+ } else {
283
+ this.texture = createTexture2D({
284
+ width: 0,
285
+ height: 0
286
+ });
287
+ }
288
+ }
289
+ }, {
290
+ key: "getConfigSchema",
291
+ value: function getConfigSchema() {
292
+ return {
293
+ properties: {
294
+ opacity: {
295
+ type: 'number',
296
+ minimum: 0,
297
+ maximum: 1
298
+ }
299
+ }
300
+ };
301
+ }
302
+ }, {
303
+ key: "registerBuiltinAttributes",
304
+ value: function registerBuiltinAttributes() {
305
+ return '';
306
+ }
307
+ }]);
308
+ return SpriteModel;
309
+ }(_BaseModel2.default);
310
+
311
+ exports.default = SpriteModel;
312
+ //# sourceMappingURL=sprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Geometry/models/sprite.ts"],"names":["SPRITE_ANIMATE_DIR","SpriteModel","updateZ","spriteUpdate","bottomZ","topZ","spriteTop","i","positions","length","spriteAnimate","UP","vertices","indices","size","attributes","layer","createAttrubutes","triangulation","planeGeometryUpdateTriangulation","models","map","m","updateAttributes","renderLayers","timer","requestAnimationFrame","updateModel","getLayerConfig","center","spriteCount","spriteRadius","initSprite","radius","lng","lat","mapService","heightLimit","height","Math","random","push","getPos","z","randomX","randomY","x","y","version","Version","lngLatToCoord","a","b","opacity","mapTexture","spriteScale","texture","destroy","updateTexture","u_opacity","u_mapFlag","u_texture","u_Scale","cancelAnimationFrame","DOWN","createTexture2D","rendererService","width","setTimeout","buildLayerModel","moduleName","vertexShader","spriteVert","fragmentShader","spriteFrag","planeGeometryTriangulation","primitive","gl","POINTS","depth","enable","blend","getBlend","initModels","img","Image","crossOrigin","onload","data","wrapS","CLAMP_TO_EDGE","wrapT","layerService","updateLayerRenderList","src","properties","type","minimum","maximum","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n ILayerConfig,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\n\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport spriteFrag from '../shaders/sprite_frag.glsl';\nimport spriteVert from '../shaders/sprite_vert.glsl';\n\nenum SPRITE_ANIMATE_DIR {\n 'UP' = 'up',\n 'DOWN' = 'down',\n}\n\nexport default class SpriteModel extends BaseModel {\n protected texture: ITexture2D;\n protected mapTexture: string | undefined;\n protected positions: number[];\n protected indices: number[];\n protected timer: number;\n protected spriteTop: number;\n protected spriteUpdate: number;\n protected spriteAnimate: SPRITE_ANIMATE_DIR;\n\n public initSprite(radius = 10, spriteCount = 100, lng = 120, lat = 30) {\n const indices = [];\n const positions = [];\n const mapService = this.mapService;\n const heightLimit =\n this.spriteAnimate === SPRITE_ANIMATE_DIR.UP\n ? -this.spriteTop\n : this.spriteTop;\n for (let i = 0; i < spriteCount; i++) {\n const height = Math.random() * heightLimit;\n positions.push(...getPos(height));\n }\n for (let i = 0; i < spriteCount; i++) {\n indices.push(i);\n }\n\n function getPos(z: number) {\n const randomX = radius * Math.random();\n const randomY = radius * Math.random();\n const x = -radius / 2 + randomX;\n const y = -radius / 2 + randomY;\n if (mapService.version === Version['GAODE2.x']) {\n // @ts-ignore\n const [a, b] = mapService.lngLatToCoord([x + lng, -y + lat]) as [\n number,\n number,\n ];\n return [a, b, z, 0, 0];\n } else {\n return [x + lng, -y + lat, z, 0, 0];\n }\n }\n\n return { indices, positions };\n }\n\n public planeGeometryUpdateTriangulation = () => {\n const updateZ = this.spriteUpdate;\n const bottomZ = -100000;\n const topZ = this.spriteTop;\n\n for (let i = 0; i < this.positions.length; i += 5) {\n if (this.spriteAnimate === SPRITE_ANIMATE_DIR.UP) {\n this.positions[i + 2] += updateZ;\n if (this.positions[i + 2] > topZ) {\n this.positions[i + 2] = bottomZ;\n }\n } else {\n this.positions[i + 2] -= updateZ;\n if (this.positions[i + 2] < bottomZ) {\n this.positions[i + 2] = topZ;\n }\n }\n }\n\n return {\n vertices: this.positions,\n indices: this.indices,\n size: 5,\n };\n };\n\n public updateModel = () => {\n // @ts-ignore\n const attributes = this.layer.createAttrubutes({\n triangulation: this.planeGeometryUpdateTriangulation,\n });\n this.layer.models.map((m) => {\n m.updateAttributes(attributes);\n });\n this.layer.renderLayers();\n\n this.timer = requestAnimationFrame(this.updateModel);\n };\n\n public planeGeometryTriangulation = () => {\n const {\n center = [120, 30],\n spriteCount = 100,\n spriteRadius = 10,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n const { indices, positions } = this.initSprite(\n spriteRadius,\n spriteCount,\n ...center,\n );\n this.positions = positions;\n this.indices = indices;\n return {\n vertices: positions,\n indices,\n size: 5,\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n mapTexture,\n spriteScale = 1,\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_texture: this.texture,\n u_Scale: spriteScale,\n };\n }\n\n public clearModels(): void {\n cancelAnimationFrame(this.timer);\n this.texture?.destroy();\n }\n\n public initModels() {\n const {\n mapTexture,\n spriteTop = 5000000,\n spriteUpdate = 10000,\n spriteAnimate = SPRITE_ANIMATE_DIR.DOWN,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n this.mapTexture = mapTexture;\n this.spriteTop = spriteTop;\n this.spriteUpdate = spriteUpdate;\n spriteAnimate === 'up'\n ? (this.spriteAnimate = SPRITE_ANIMATE_DIR.UP)\n : (this.spriteAnimate = SPRITE_ANIMATE_DIR.DOWN);\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n this.updateTexture(mapTexture);\n\n setTimeout(() => {\n this.updateModel();\n }, 100);\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'geometry_sprite',\n vertexShader: spriteVert,\n fragmentShader: spriteFrag,\n triangulation: this.planeGeometryTriangulation,\n primitive: gl.POINTS,\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\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 return '';\n }\n}\n"],"file":"sprite.js"}
@@ -1019,6 +1019,16 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
1019
1019
  blend: _blend.BlendTypes[_l7Core.BlendType.normal]
1020
1020
  }, rest));
1021
1021
  }
1022
+ }, {
1023
+ key: "createAttrubutes",
1024
+ value: function createAttrubutes(options) {
1025
+ var triangulation = options.triangulation;
1026
+
1027
+ var _this$styleAttributeS5 = this.styleAttributeService.createAttributes(this.encodedData, triangulation),
1028
+ attributes = _this$styleAttributeS5.attributes;
1029
+
1030
+ return attributes;
1031
+ }
1022
1032
  }, {
1023
1033
  key: "getTime",
1024
1034
  value: function getTime() {