@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.
- package/es/Geometry/index.d.ts +1 -1
- package/es/Geometry/index.js +14 -2
- package/es/Geometry/index.js.map +1 -1
- package/es/Geometry/models/index.d.ts +1 -1
- package/es/Geometry/models/index.js +3 -1
- package/es/Geometry/models/index.js.map +1 -1
- package/es/Geometry/models/sprite.d.ts +47 -0
- package/es/Geometry/models/sprite.js +305 -0
- package/es/Geometry/models/sprite.js.map +1 -0
- package/es/core/BaseLayer.d.ts +1 -0
- package/es/core/BaseLayer.js +10 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/interface.d.ts +11 -1
- package/es/core/interface.js.map +1 -1
- package/es/line/models/line.js +8 -6
- package/es/line/models/line.js.map +1 -1
- package/es/line/models/wall.js +3 -7
- package/es/line/models/wall.js.map +1 -1
- package/es/point/models/extrude.js +1 -1
- package/es/point/models/fill.js +6 -3
- package/es/point/models/fill.js.map +1 -1
- package/es/polygon/models/extrude.js +1 -1
- package/lib/Geometry/index.js +14 -2
- package/lib/Geometry/index.js.map +1 -1
- package/lib/Geometry/models/index.js +4 -1
- package/lib/Geometry/models/index.js.map +1 -1
- package/lib/Geometry/models/sprite.js +312 -0
- package/lib/Geometry/models/sprite.js.map +1 -0
- package/lib/core/BaseLayer.js +10 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/interface.js.map +1 -1
- package/lib/line/models/line.js +8 -6
- package/lib/line/models/line.js.map +1 -1
- package/lib/line/models/wall.js +3 -7
- package/lib/line/models/wall.js.map +1 -1
- package/lib/point/models/extrude.js +1 -1
- package/lib/point/models/fill.js +6 -3
- package/lib/point/models/fill.js.map +1 -1
- package/lib/polygon/models/extrude.js +1 -1
- 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"}
|
package/lib/core/BaseLayer.js
CHANGED
|
@@ -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() {
|