@antv/l7-layers 2.8.11 → 2.8.12
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/models/plane.d.ts +16 -0
- package/es/Geometry/models/plane.js +190 -66
- package/es/Geometry/models/plane.js.map +1 -1
- package/es/core/interface.d.ts +3 -0
- package/es/core/interface.js.map +1 -1
- package/es/plugins/DataMappingPlugin.js +2 -2
- package/es/plugins/DataMappingPlugin.js.map +1 -1
- package/lib/Geometry/models/plane.js +189 -66
- package/lib/Geometry/models/plane.js.map +1 -1
- package/lib/core/interface.js.map +1 -1
- package/lib/plugins/DataMappingPlugin.js +2 -2
- package/lib/plugins/DataMappingPlugin.js.map +1 -1
- package/package.json +5 -5
|
@@ -3,14 +3,30 @@ import BaseModel from '../../core/BaseModel';
|
|
|
3
3
|
export default class PlaneModel extends BaseModel {
|
|
4
4
|
protected texture: ITexture2D;
|
|
5
5
|
protected mapTexture: string | undefined;
|
|
6
|
+
protected positions: number[];
|
|
7
|
+
protected indices: number[];
|
|
8
|
+
initPlane(width?: number, height?: number, widthSegments?: number, heightSegments?: number, lng?: number, lat?: number): {
|
|
9
|
+
indices: number[];
|
|
10
|
+
positions: number[];
|
|
11
|
+
};
|
|
6
12
|
planeGeometryTriangulation: () => {
|
|
7
13
|
vertices: number[];
|
|
8
14
|
indices: number[];
|
|
9
15
|
size: number;
|
|
10
16
|
};
|
|
17
|
+
planeGeometryUpdateTriangulation: () => {
|
|
18
|
+
vertices: number[];
|
|
19
|
+
indices: number[];
|
|
20
|
+
size: number;
|
|
21
|
+
};
|
|
11
22
|
getUninforms(): IModelUniform;
|
|
12
23
|
clearModels(): void;
|
|
13
24
|
initModels(): import("@antv/l7-core").IModel[];
|
|
25
|
+
getImageData(img: HTMLImageElement): ImageData;
|
|
26
|
+
/**
|
|
27
|
+
* load terrain texture & offset attribute z
|
|
28
|
+
*/
|
|
29
|
+
loadTerrainTexture(): void;
|
|
14
30
|
buildModels(): import("@antv/l7-core").IModel[];
|
|
15
31
|
updateTexture(mapTexture: string | undefined): void;
|
|
16
32
|
protected getConfigSchema(): {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
2
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
3
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
4
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
@@ -12,56 +13,11 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
12
13
|
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; } }
|
|
13
14
|
|
|
14
15
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
16
|
+
import { Version } from '@antv/l7-maps';
|
|
15
17
|
import { getMask } from '@antv/l7-utils';
|
|
16
18
|
import BaseModel from '../../core/BaseModel';
|
|
17
|
-
var planeFrag = "\nuniform sampler2D u_texture;\nuniform float u_mapFlag;\nuniform float u_opacity;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\n\n#pragma include \"picking\"\nvoid main() {\n // gl_FragColor = vec4(v_Color, u_opacity);\n if(u_mapFlag > 0.0) {\n gl_FragColor = texture2D(u_texture, vec2(v_uv.x, 1.0 - v_uv.y));\n gl_FragColor.a *= u_opacity;\n
|
|
18
|
-
var planeVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\nuniform mat4 u_Mvp;\n\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 v_Color = a_Color;\n v_uv = a_Uv;\n \n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n\n // float x = 1.0;\n // float y = 0.0;\n // float z = 0.0;\n // mat3 translateMatrix = mat3(\n // 1.0, 0.0, 0.0 \n // 0.0, 1.0, 0.0\n // -project_pos.x, -project_pos.y, 1.0\n // );\n // mat4 translateMatrix = mat4(\n // 1.0, 0.0, 0.0, 0.0 ,\n // 0.0, 1.0, 0.0, 0.0,\n // 0.0, 0.0, 1.0, 0.0,\n // 1.0, 0.0, 0.0, 1.0\n // );\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,
|
|
19
|
-
|
|
20
|
-
function initPlane() {
|
|
21
|
-
var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
22
|
-
var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
23
|
-
var widthSegments = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
24
|
-
var heightSegments = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
25
|
-
var lng = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 120;
|
|
26
|
-
var lat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 30;
|
|
27
|
-
var widthHalf = width / 2;
|
|
28
|
-
var heightHalf = height / 2;
|
|
29
|
-
var gridX = Math.floor(widthSegments);
|
|
30
|
-
var gridY = Math.floor(heightSegments);
|
|
31
|
-
var gridX1 = gridX + 1;
|
|
32
|
-
var gridY1 = gridY + 1;
|
|
33
|
-
var segmentWidth = width / gridX;
|
|
34
|
-
var segmentHeight = height / gridY;
|
|
35
|
-
var indices = [];
|
|
36
|
-
var positions = [];
|
|
37
|
-
|
|
38
|
-
for (var iy = 0; iy < gridY1; iy++) {
|
|
39
|
-
var y = iy * segmentHeight - heightHalf;
|
|
40
|
-
|
|
41
|
-
for (var ix = 0; ix < gridX1; ix++) {
|
|
42
|
-
var x = ix * segmentWidth - widthHalf;
|
|
43
|
-
positions.push(x + lng, -y + lat, 0);
|
|
44
|
-
positions.push(ix / gridX);
|
|
45
|
-
positions.push(1 - iy / gridY);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
for (var _iy = 0; _iy < gridY; _iy++) {
|
|
50
|
-
for (var _ix = 0; _ix < gridX; _ix++) {
|
|
51
|
-
var a = _ix + gridX1 * _iy;
|
|
52
|
-
var b = _ix + gridX1 * (_iy + 1);
|
|
53
|
-
var c = _ix + 1 + gridX1 * (_iy + 1);
|
|
54
|
-
var d = _ix + 1 + gridX1 * _iy;
|
|
55
|
-
indices.push(a, b, d);
|
|
56
|
-
indices.push(b, c, d);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return {
|
|
61
|
-
indices: indices,
|
|
62
|
-
positions: positions
|
|
63
|
-
};
|
|
64
|
-
}
|
|
19
|
+
var planeFrag = "\nuniform sampler2D u_texture;\nuniform float u_mapFlag;\nuniform float u_opacity;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\nvarying float v_clip;\n\n#pragma include \"picking\"\nvoid main() {\n // gl_FragColor = vec4(v_Color, u_opacity);\n if(u_mapFlag > 0.0) {\n gl_FragColor = texture2D(u_texture, vec2(v_uv.x, 1.0 - v_uv.y));\n gl_FragColor.a *= u_opacity;\n } else {\n // gl_FragColor = vec4(v_uv, 0.0, u_opacity);\n gl_FragColor = vec4(v_Color, u_opacity);\n }\n gl_FragColor.a *= v_clip;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
20
|
+
var planeVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\nuniform mat4 u_Mvp;\nuniform float u_opacity;\nuniform float u_terrainClipHeight;\n\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nattribute vec3 a_Color;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\nvarying float v_clip;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\nvoid main() {\n v_Color = a_Color;\n v_uv = a_Uv;\n \n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n v_clip = 1.0;\n if(a_Position.z < u_terrainClipHeight) {\n v_clip = 0.0;\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n\n // float x = 1.0;\n // float y = 0.0;\n // float z = 0.0;\n // mat3 translateMatrix = mat3(\n // 1.0, 0.0, 0.0 \n // 0.0, 1.0, 0.0\n // -project_pos.x, -project_pos.y, 1.0\n // );\n // mat4 translateMatrix = mat4(\n // 1.0, 0.0, 0.0, 0.0 ,\n // 0.0, 1.0, 0.0, 0.0,\n // 0.0, 0.0, 1.0, 0.0,\n // 1.0, 0.0, 0.0, 1.0\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 } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, a_Position.z, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
65
21
|
|
|
66
22
|
var PlaneModel = function (_BaseModel) {
|
|
67
23
|
_inherits(PlaneModel, _BaseModel);
|
|
@@ -83,7 +39,13 @@ var PlaneModel = function (_BaseModel) {
|
|
|
83
39
|
|
|
84
40
|
_defineProperty(_assertThisInitialized(_this), "mapTexture", void 0);
|
|
85
41
|
|
|
42
|
+
_defineProperty(_assertThisInitialized(_this), "positions", void 0);
|
|
43
|
+
|
|
44
|
+
_defineProperty(_assertThisInitialized(_this), "indices", void 0);
|
|
45
|
+
|
|
86
46
|
_defineProperty(_assertThisInitialized(_this), "planeGeometryTriangulation", function () {
|
|
47
|
+
var _this2;
|
|
48
|
+
|
|
87
49
|
var _ref = _this.layer.getLayerConfig(),
|
|
88
50
|
_ref$width = _ref.width,
|
|
89
51
|
width = _ref$width === void 0 ? 1 : _ref$width,
|
|
@@ -94,11 +56,19 @@ var PlaneModel = function (_BaseModel) {
|
|
|
94
56
|
_ref$heightSegments = _ref.heightSegments,
|
|
95
57
|
heightSegments = _ref$heightSegments === void 0 ? 1 : _ref$heightSegments,
|
|
96
58
|
_ref$center = _ref.center,
|
|
97
|
-
center = _ref$center === void 0 ? [120, 30] : _ref$center
|
|
59
|
+
center = _ref$center === void 0 ? [120, 30] : _ref$center,
|
|
60
|
+
terrainTexture = _ref.terrainTexture;
|
|
61
|
+
|
|
62
|
+
var _this$initPlane = (_this2 = _this).initPlane.apply(_this2, [width, height, widthSegments, heightSegments].concat(_toConsumableArray(center))),
|
|
63
|
+
indices = _this$initPlane.indices,
|
|
64
|
+
positions = _this$initPlane.positions;
|
|
65
|
+
|
|
66
|
+
_this.positions = positions;
|
|
67
|
+
_this.indices = indices;
|
|
98
68
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
69
|
+
if (terrainTexture) {
|
|
70
|
+
_this.loadTerrainTexture();
|
|
71
|
+
}
|
|
102
72
|
|
|
103
73
|
return {
|
|
104
74
|
vertices: positions,
|
|
@@ -107,15 +77,86 @@ var PlaneModel = function (_BaseModel) {
|
|
|
107
77
|
};
|
|
108
78
|
});
|
|
109
79
|
|
|
80
|
+
_defineProperty(_assertThisInitialized(_this), "planeGeometryUpdateTriangulation", function () {
|
|
81
|
+
return {
|
|
82
|
+
vertices: _this.positions,
|
|
83
|
+
indices: _this.indices,
|
|
84
|
+
size: 5
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
|
|
110
88
|
return _this;
|
|
111
89
|
}
|
|
112
90
|
|
|
113
91
|
_createClass(PlaneModel, [{
|
|
92
|
+
key: "initPlane",
|
|
93
|
+
value: function initPlane() {
|
|
94
|
+
var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
95
|
+
var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
96
|
+
var widthSegments = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
97
|
+
var heightSegments = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
98
|
+
var lng = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 120;
|
|
99
|
+
var lat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 30;
|
|
100
|
+
var widthHalf = width / 2;
|
|
101
|
+
var heightHalf = height / 2;
|
|
102
|
+
var gridX = Math.floor(widthSegments);
|
|
103
|
+
var gridY = Math.floor(heightSegments);
|
|
104
|
+
var gridX1 = gridX + 1;
|
|
105
|
+
var gridY1 = gridY + 1;
|
|
106
|
+
var segmentWidth = width / gridX;
|
|
107
|
+
var segmentHeight = height / gridY;
|
|
108
|
+
var indices = [];
|
|
109
|
+
var positions = [];
|
|
110
|
+
|
|
111
|
+
for (var iy = 0; iy < gridY1; iy++) {
|
|
112
|
+
var y = iy * segmentHeight - heightHalf;
|
|
113
|
+
|
|
114
|
+
for (var ix = 0; ix < gridX1; ix++) {
|
|
115
|
+
var x = ix * segmentWidth - widthHalf;
|
|
116
|
+
|
|
117
|
+
if (this.mapService.version === Version['GAODE2.x']) {
|
|
118
|
+
var _ref2 = this.mapService.lngLatToCoord([x + lng, -y + lat]),
|
|
119
|
+
_ref3 = _slicedToArray(_ref2, 2),
|
|
120
|
+
a = _ref3[0],
|
|
121
|
+
b = _ref3[1];
|
|
122
|
+
|
|
123
|
+
positions.push(a, b, 0);
|
|
124
|
+
} else {
|
|
125
|
+
positions.push(x + lng, -y + lat, 0);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
positions.push(ix / gridX);
|
|
129
|
+
positions.push(1 - iy / gridY);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
for (var _iy = 0; _iy < gridY; _iy++) {
|
|
134
|
+
for (var _ix = 0; _ix < gridX; _ix++) {
|
|
135
|
+
var _a = _ix + gridX1 * _iy;
|
|
136
|
+
|
|
137
|
+
var _b = _ix + gridX1 * (_iy + 1);
|
|
138
|
+
|
|
139
|
+
var c = _ix + 1 + gridX1 * (_iy + 1);
|
|
140
|
+
var d = _ix + 1 + gridX1 * _iy;
|
|
141
|
+
indices.push(_a, _b, d);
|
|
142
|
+
indices.push(_b, c, d);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return {
|
|
147
|
+
indices: indices,
|
|
148
|
+
positions: positions
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}, {
|
|
114
152
|
key: "getUninforms",
|
|
115
153
|
value: function getUninforms() {
|
|
116
|
-
var
|
|
117
|
-
opacity =
|
|
118
|
-
mapTexture =
|
|
154
|
+
var _ref4 = this.layer.getLayerConfig(),
|
|
155
|
+
opacity = _ref4.opacity,
|
|
156
|
+
mapTexture = _ref4.mapTexture,
|
|
157
|
+
_ref4$terrainClipHeig = _ref4.terrainClipHeight,
|
|
158
|
+
terrainClipHeight = _ref4$terrainClipHeig === void 0 ? 0 : _ref4$terrainClipHeig,
|
|
159
|
+
terrainTexture = _ref4.terrainTexture;
|
|
119
160
|
|
|
120
161
|
if (this.mapTexture !== mapTexture) {
|
|
121
162
|
this.mapTexture = mapTexture;
|
|
@@ -126,6 +167,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
126
167
|
return {
|
|
127
168
|
u_opacity: opacity || 1,
|
|
128
169
|
u_mapFlag: mapTexture ? 1 : 0,
|
|
170
|
+
u_terrainClipHeight: terrainTexture ? terrainClipHeight : -1,
|
|
129
171
|
u_texture: this.texture
|
|
130
172
|
};
|
|
131
173
|
}
|
|
@@ -137,12 +179,12 @@ var PlaneModel = function (_BaseModel) {
|
|
|
137
179
|
}, {
|
|
138
180
|
key: "initModels",
|
|
139
181
|
value: function initModels() {
|
|
140
|
-
var
|
|
141
|
-
|
|
142
|
-
mask =
|
|
143
|
-
|
|
144
|
-
maskInside =
|
|
145
|
-
mapTexture =
|
|
182
|
+
var _ref5 = this.layer.getLayerConfig(),
|
|
183
|
+
_ref5$mask = _ref5.mask,
|
|
184
|
+
mask = _ref5$mask === void 0 ? false : _ref5$mask,
|
|
185
|
+
_ref5$maskInside = _ref5.maskInside,
|
|
186
|
+
maskInside = _ref5$maskInside === void 0 ? true : _ref5$maskInside,
|
|
187
|
+
mapTexture = _ref5.mapTexture;
|
|
146
188
|
|
|
147
189
|
this.mapTexture = mapTexture;
|
|
148
190
|
var createTexture2D = this.rendererService.createTexture2D;
|
|
@@ -158,12 +200,94 @@ var PlaneModel = function (_BaseModel) {
|
|
|
158
200
|
triangulation: this.planeGeometryTriangulation,
|
|
159
201
|
primitive: gl.TRIANGLES,
|
|
160
202
|
depth: {
|
|
161
|
-
enable:
|
|
203
|
+
enable: true
|
|
162
204
|
},
|
|
163
205
|
blend: this.getBlend(),
|
|
164
206
|
stencil: getMask(mask, maskInside)
|
|
165
207
|
})];
|
|
166
208
|
}
|
|
209
|
+
}, {
|
|
210
|
+
key: "getImageData",
|
|
211
|
+
value: function getImageData(img) {
|
|
212
|
+
var canvas = document.createElement('canvas');
|
|
213
|
+
var ctx = canvas.getContext('2d');
|
|
214
|
+
var width = img.width,
|
|
215
|
+
height = img.height;
|
|
216
|
+
canvas.width = width;
|
|
217
|
+
canvas.height = height;
|
|
218
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
219
|
+
var imageData = ctx.getImageData(0, 0, width, height);
|
|
220
|
+
return imageData;
|
|
221
|
+
}
|
|
222
|
+
}, {
|
|
223
|
+
key: "loadTerrainTexture",
|
|
224
|
+
value: function loadTerrainTexture() {
|
|
225
|
+
var _this3 = this;
|
|
226
|
+
|
|
227
|
+
var _ref6 = this.layer.getLayerConfig(),
|
|
228
|
+
_ref6$mask = _ref6.mask,
|
|
229
|
+
mask = _ref6$mask === void 0 ? false : _ref6$mask,
|
|
230
|
+
_ref6$maskInside = _ref6.maskInside,
|
|
231
|
+
maskInside = _ref6$maskInside === void 0 ? true : _ref6$maskInside,
|
|
232
|
+
_ref6$widthSegments = _ref6.widthSegments,
|
|
233
|
+
widthSegments = _ref6$widthSegments === void 0 ? 1 : _ref6$widthSegments,
|
|
234
|
+
_ref6$heightSegments = _ref6.heightSegments,
|
|
235
|
+
heightSegments = _ref6$heightSegments === void 0 ? 1 : _ref6$heightSegments,
|
|
236
|
+
terrainTexture = _ref6.terrainTexture,
|
|
237
|
+
_ref6$rgb2height = _ref6.rgb2height,
|
|
238
|
+
rgb2height = _ref6$rgb2height === void 0 ? function (r, g, b) {
|
|
239
|
+
return r + g + b;
|
|
240
|
+
} : _ref6$rgb2height;
|
|
241
|
+
|
|
242
|
+
var terrainImage = new Image();
|
|
243
|
+
terrainImage.crossOrigin = 'anonymous';
|
|
244
|
+
|
|
245
|
+
terrainImage.onload = function () {
|
|
246
|
+
var imgWidth = terrainImage.width;
|
|
247
|
+
var imgHeight = terrainImage.height;
|
|
248
|
+
|
|
249
|
+
var imageData = _this3.getImageData(terrainImage).data;
|
|
250
|
+
|
|
251
|
+
var gridX = Math.floor(widthSegments);
|
|
252
|
+
var gridY = Math.floor(heightSegments);
|
|
253
|
+
var gridX1 = gridX + 1;
|
|
254
|
+
var gridY1 = gridY + 1;
|
|
255
|
+
var widthStep = imgWidth / gridX;
|
|
256
|
+
var heihgtStep = imgHeight / gridY;
|
|
257
|
+
|
|
258
|
+
for (var iy = 0; iy < gridY1; iy++) {
|
|
259
|
+
var imgIndexY = Math.floor(iy * heihgtStep);
|
|
260
|
+
var imgLen = imgIndexY * imgWidth;
|
|
261
|
+
|
|
262
|
+
for (var ix = 0; ix < gridX1; ix++) {
|
|
263
|
+
var imgIndexX = Math.floor(ix * widthStep);
|
|
264
|
+
var imgDataIndex = (imgLen + imgIndexX) * 4;
|
|
265
|
+
var r = imageData[imgDataIndex];
|
|
266
|
+
var g = imageData[imgDataIndex + 1];
|
|
267
|
+
var b = imageData[imgDataIndex + 2];
|
|
268
|
+
var z = (iy * gridX1 + ix) * 5 + 2;
|
|
269
|
+
_this3.positions[z] = rgb2height(r, g, b);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
_this3.layer.models = [_this3.layer.buildLayerModel({
|
|
274
|
+
moduleName: 'geometry_plane',
|
|
275
|
+
vertexShader: planeVert,
|
|
276
|
+
fragmentShader: planeFrag,
|
|
277
|
+
triangulation: _this3.planeGeometryUpdateTriangulation,
|
|
278
|
+
primitive: gl.TRIANGLES,
|
|
279
|
+
depth: {
|
|
280
|
+
enable: true
|
|
281
|
+
},
|
|
282
|
+
blend: _this3.getBlend(),
|
|
283
|
+
stencil: getMask(mask, maskInside)
|
|
284
|
+
})];
|
|
285
|
+
|
|
286
|
+
_this3.layerService.renderLayers();
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
terrainImage.src = terrainTexture;
|
|
290
|
+
}
|
|
167
291
|
}, {
|
|
168
292
|
key: "buildModels",
|
|
169
293
|
value: function buildModels() {
|
|
@@ -172,7 +296,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
172
296
|
}, {
|
|
173
297
|
key: "updateTexture",
|
|
174
298
|
value: function updateTexture(mapTexture) {
|
|
175
|
-
var
|
|
299
|
+
var _this4 = this;
|
|
176
300
|
|
|
177
301
|
var createTexture2D = this.rendererService.createTexture2D;
|
|
178
302
|
|
|
@@ -181,7 +305,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
181
305
|
img.crossOrigin = 'anonymous';
|
|
182
306
|
|
|
183
307
|
img.onload = function () {
|
|
184
|
-
|
|
308
|
+
_this4.texture = createTexture2D({
|
|
185
309
|
data: img,
|
|
186
310
|
width: img.width,
|
|
187
311
|
height: img.height,
|
|
@@ -189,9 +313,9 @@ var PlaneModel = function (_BaseModel) {
|
|
|
189
313
|
wrapT: gl.CLAMP_TO_EDGE
|
|
190
314
|
});
|
|
191
315
|
|
|
192
|
-
|
|
316
|
+
_this4.layerService.updateLayerRenderList();
|
|
193
317
|
|
|
194
|
-
|
|
318
|
+
_this4.layerService.renderLayers();
|
|
195
319
|
};
|
|
196
320
|
|
|
197
321
|
img.src = mapTexture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Geometry/models/plane.ts"],"names":["AttributeType","gl","getMask","BaseModel","initPlane","width","height","widthSegments","heightSegments","lng","lat","widthHalf","heightHalf","gridX","Math","floor","gridY","gridX1","gridY1","segmentWidth","segmentHeight","indices","positions","iy","y","ix","x","push","a","b","c","d","PlaneModel","layer","getLayerConfig","center","vertices","size","opacity","mapTexture","texture","destroy","updateTexture","u_opacity","u_mapFlag","u_texture","mask","maskInside","createTexture2D","rendererService","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","TRIANGLES","depth","enable","blend","getBlend","stencil","initModels","img","Image","crossOrigin","onload","data","wrapS","CLAMP_TO_EDGE","wrapT","layerService","updateLayerRenderList","renderLayers","src","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\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\nfunction 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\n positions.push(x + lng, -y + lat, 0);\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\nexport default class PlaneModel extends BaseModel {\n protected texture: ITexture2D;\n protected mapTexture: string | undefined;\n public planeGeometryTriangulation = () => {\n const {\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n center = [120, 30],\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const { indices, positions } = initPlane(\n width,\n height,\n widthSegments,\n heightSegments,\n ...center,\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 } = 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\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 rotateZ(): mat4 {\n // const res = mat4.create()\n // const roZero = mat4.translate(mat4.create(), mat4.create(), [-120, 0, -30])\n // const rotate = mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // const roOrigin = mat4.translate(mat4.create(), mat4.create(), [120, 0, 30])\n // mat4.multiply(res, res, roZero)\n // mat4.multiply(res, res, rotate)\n // mat4.multiply(res, res, roOrigin)\n // return res\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 // primitive: gl.POINTS,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\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 // 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":["AttributeType","gl","Version","getMask","BaseModel","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","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","TRIANGLES","depth","enable","blend","getBlend","stencil","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","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx"],"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 }),\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 }),\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"}
|
package/es/core/interface.d.ts
CHANGED
|
@@ -84,11 +84,14 @@ export interface IGeometryLayerStyleOptions {
|
|
|
84
84
|
mask?: boolean;
|
|
85
85
|
maskInside?: boolean;
|
|
86
86
|
mapTexture?: string;
|
|
87
|
+
terrainTexture?: string;
|
|
87
88
|
center?: [number, number];
|
|
88
89
|
width?: number;
|
|
89
90
|
height?: number;
|
|
90
91
|
widthSegments?: number;
|
|
91
92
|
heightSegments?: number;
|
|
93
|
+
terrainClipHeight?: number;
|
|
94
|
+
rgb2height?: (r: number, g: number, b: number) => number;
|
|
92
95
|
}
|
|
93
96
|
export declare enum CanvasUpdateType {
|
|
94
97
|
'ALWAYS' = "always",
|
package/es/core/interface.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType","CanvasUpdateType"],"mappings":"AAIA,WAAYA,aAAZ;;WAAYA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,KAAAA,a;;
|
|
1
|
+
{"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType","CanvasUpdateType"],"mappings":"AAIA,WAAYA,aAAZ;;WAAYA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,KAAAA,a;;AAsHZ,WAAYC,gBAAZ;;WAAYA,gB;AAAAA,EAAAA,gB;AAAAA,EAAAA,gB;GAAAA,gB,KAAAA,gB","sourcesContent":["import { IMapService } from '@antv/l7-core';\nimport { IColorRamp } from '@antv/l7-utils';\nimport { styleOffset, styleSingle } from '../core/BaseModel';\nimport { anchorType } from '../utils/symbol-layout';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n iconStepCount?: number; // 可选参数、纹理贴图间隔\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n\n heightfixed?: boolean; // 可选参数 高度是否固定\n\n mask?: boolean; // 可选参数 时候允许蒙层\n maskInside?: boolean; // 可选参数 控制图层是否显示在蒙层的内部\n}\n\nexport interface IPointLayerStyleOptions {\n opacity: number;\n strokeOpacity: number;\n strokeWidth: number;\n stroke: string;\n\n textOffset?: [number, number];\n textAnchor?: anchorType;\n spacing?: number;\n padding?: [number, number];\n halo?: number;\n gamma?: number;\n fontWeight?: string;\n fontFamily?: string;\n textAllowOverlap?: boolean;\n\n // cylinder\n pickLight?: boolean;\n depth?: boolean;\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n lightEnable: boolean;\n heightfixed?: boolean; // 圆柱体高度是否固定(不随 zoom 发生变化)\n\n offsets?: styleOffset;\n blend?: string;\n unit?: string;\n mask?: boolean;\n maskInside?: boolean;\n\n rotation?: number; // angle\n speed?: number;\n}\n\nexport interface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n\n opacityLinear: {\n enable: boolean;\n dir: string;\n };\n\n heightfixed?: boolean; // 挤出几何体高度是否固定(不随 zoom 发生变化)\n\n pickLight: boolean;\n mask?: boolean;\n maskInside?: boolean;\n\n // water\n waterTexture?: string;\n speed?: number;\n // ocean\n watercolor?: string;\n watercolor2?: string;\n}\n\nexport interface IImageLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IGeometryLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n\n mapTexture?: string;\n terrainTexture?: string;\n\n // planeGeometry\n center?: [number, number];\n width?: number;\n height?: number;\n\n widthSegments?: number;\n heightSegments?: number;\n\n terrainClipHeight?: number;\n rgb2height?: (r: number, g: number, b: number) => number;\n}\n\nexport enum CanvasUpdateType {\n 'ALWAYS' = 'always',\n 'DRAGEND' = 'dragend',\n}\n\nexport interface IDrawingOnCanvas {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n mapService: IMapService;\n size: [number, number];\n}\nexport interface ICanvasLayerStyleOptions {\n zIndex: number;\n update: CanvasUpdateType | string;\n drawingOnCanvas: (option: IDrawingOnCanvas) => void;\n}\n\nexport interface IHeatMapLayerStyleOptions {\n opacity: number;\n intensity: number;\n radius: number;\n angle: number;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n\n coverage?: number;\n}\n\nexport interface IRasterLayerStyleOptions {\n opacity: number;\n domain: [number, number];\n noDataValue: number;\n clampLow: boolean;\n clampHigh: boolean;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n}\n"],"file":"interface.js"}
|
|
@@ -148,7 +148,7 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IGlobalConfig
|
|
|
148
148
|
mappedData.filter(function (d) {
|
|
149
149
|
return !d.originCoordinates;
|
|
150
150
|
}).map(function (d) {
|
|
151
|
-
d.version = 'GAODE2.x';
|
|
151
|
+
d.version = Version['GAODE2.x'];
|
|
152
152
|
d.originCoordinates = _cloneDeep(d.coordinates);
|
|
153
153
|
d.coordinates = _this4.mapService.lngLatToCoord(d.coordinates);
|
|
154
154
|
});
|
|
@@ -156,7 +156,7 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IGlobalConfig
|
|
|
156
156
|
mappedData.filter(function (d) {
|
|
157
157
|
return !d.originCoordinates;
|
|
158
158
|
}).map(function (d) {
|
|
159
|
-
d.version = 'GAODE2.x';
|
|
159
|
+
d.version = Version['GAODE2.x'];
|
|
160
160
|
d.originCoordinates = _cloneDeep(d.coordinates);
|
|
161
161
|
d.coordinates = _this4.mapService.lngLatToCoords(d.coordinates);
|
|
162
162
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/DataMappingPlugin.ts"],"names":["TYPES","Version","isColor","rgb2arr","inject","injectable","DataMappingPlugin","IGlobalConfigService","IMapService","IFontService","layer","styleAttributeService","hooks","init","tap","generateMaping","beforeRenderData","dataState","dataMappingNeedUpdate","beforeRender","layerModelNeedUpdate","bottomColor","getBottomColor","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","dataArray","getSource","data","attributesToRemapping","attribute","needRemapping","filterData","scale","record","applyAttributeMapping","length","setEncodedData","mapping","undefined","getEncodedData","emit","predata","minimumColor","mappedData","map","i","preRecord","encodeRecord","id","_id","coordinates","forEach","values","name","c","Array","isArray","shape","fontService","getIconFontKey","adjustData2Amap2Coordinates","adjustData2SimpleCoordinates","mapService","version","d","originCoordinates","lngLatToCoord","lngLatToCoords","SIMPLE","simpleCoordinate","unProjectCoordinates","simpleMapCoord","unproject","coords","coord","c1","co","push","scalers","params","field","hasOwnProperty","type","mappingResult"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n IParseDataItem,\n IStyleAttribute,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { isColor, rgb2arr, unProjectFlat } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport { cloneDeep } from 'lodash';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataMappingPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n @inject(TYPES.IFontService)\n private readonly fontService: IFontService;\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('DataMappingPlugin', () => {\n // 初始化重新生成 map\n this.generateMaping(layer, { styleAttributeService });\n });\n\n layer.hooks.beforeRenderData.tap('DataMappingPlugin', () => {\n layer.dataState.dataMappingNeedUpdate = false;\n this.generateMaping(layer, { styleAttributeService });\n return true;\n });\n\n // remapping before render\n layer.hooks.beforeRender.tap('DataMappingPlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n const attributesToRemapping = attributes.filter(\n (attribute) => attribute.needRemapping, // 如果filter变化\n );\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.needRemapping && filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n if (attributesToRemapping.length) {\n // 过滤数据\n if (filter?.needRemapping) {\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n filter.needRemapping = false;\n } else {\n layer.setEncodedData(\n this.mapping(\n attributesToRemapping,\n filterData,\n layer.getEncodedData(),\n bottomColor,\n ),\n );\n }\n // 处理文本更新\n layer.emit('remapping', null);\n }\n });\n }\n private generateMaping(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n }\n\n private mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n predata?: IEncodeFeature[],\n minimumColor?: string,\n ): IEncodeFeature[] {\n // console.log('data', data)\n const mappedData = data.map((record: IParseDataItem, i) => {\n const preRecord = predata ? predata[i] : {};\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n ...preRecord,\n };\n // console.log('attributes', attributes)\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n // console.log('attribute', attribute)\n // console.log('record', record)\n let values = this.applyAttributeMapping(\n attribute,\n record,\n minimumColor,\n );\n // console.log('values', values)\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n // console.log('attribute', attribute)\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 = this.fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n return encodeRecord;\n }) as IEncodeFeature[];\n // console.log('mappedData', mappedData)\n\n // 调整数据兼容 Amap2.0\n this.adjustData2Amap2Coordinates(mappedData);\n\n // 调整数据兼容 SimpleCoordinates\n this.adjustData2SimpleCoordinates(mappedData);\n // console.log('mappedData', mappedData)\n return mappedData;\n }\n\n private adjustData2Amap2Coordinates(mappedData: IEncodeFeature[]) {\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (\n mappedData.length > 0 &&\n this.mapService.version === Version['GAODE2.x']\n ) {\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 = '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 = '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\n private adjustData2SimpleCoordinates(mappedData: IEncodeFeature[]) {\n if (mappedData.length > 0 && this.mapService.version === Version.SIMPLE) {\n mappedData.map((d) => {\n if (!d.simpleCoordinate) {\n d.coordinates = this.unProjectCoordinates(d.coordinates);\n d.simpleCoordinate = true;\n }\n });\n }\n }\n\n private unProjectCoordinates(coordinates: any) {\n if (typeof coordinates[0] === 'number') {\n return this.mapService.simpleMapCoord.unproject(\n coordinates as [number, number],\n );\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(\n this.mapService.simpleMapCoord.unproject(co as [number, number]),\n );\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 this.mapService.simpleMapCoord.unproject(coord as [number, number]),\n );\n });\n // @ts-ignore\n return coords;\n }\n }\n\n private 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 (\n record.hasOwnProperty(field) ||\n attribute.scale?.type === 'variable'\n ) {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n // console.log('params', params)\n // console.log('attribute', attribute)\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 // return attribute.mapping ? attribute.mapping(params) : [];\n }\n}\n"],"file":"DataMappingPlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/DataMappingPlugin.ts"],"names":["TYPES","Version","isColor","rgb2arr","inject","injectable","DataMappingPlugin","IGlobalConfigService","IMapService","IFontService","layer","styleAttributeService","hooks","init","tap","generateMaping","beforeRenderData","dataState","dataMappingNeedUpdate","beforeRender","layerModelNeedUpdate","bottomColor","getBottomColor","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","dataArray","getSource","data","attributesToRemapping","attribute","needRemapping","filterData","scale","record","applyAttributeMapping","length","setEncodedData","mapping","undefined","getEncodedData","emit","predata","minimumColor","mappedData","map","i","preRecord","encodeRecord","id","_id","coordinates","forEach","values","name","c","Array","isArray","shape","fontService","getIconFontKey","adjustData2Amap2Coordinates","adjustData2SimpleCoordinates","mapService","version","d","originCoordinates","lngLatToCoord","lngLatToCoords","SIMPLE","simpleCoordinate","unProjectCoordinates","simpleMapCoord","unproject","coords","coord","c1","co","push","scalers","params","field","hasOwnProperty","type","mappingResult"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n IParseDataItem,\n IStyleAttribute,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { isColor, rgb2arr, unProjectFlat } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport { cloneDeep } from 'lodash';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataMappingPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n @inject(TYPES.IFontService)\n private readonly fontService: IFontService;\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('DataMappingPlugin', () => {\n // 初始化重新生成 map\n this.generateMaping(layer, { styleAttributeService });\n });\n\n layer.hooks.beforeRenderData.tap('DataMappingPlugin', () => {\n layer.dataState.dataMappingNeedUpdate = false;\n this.generateMaping(layer, { styleAttributeService });\n return true;\n });\n\n // remapping before render\n layer.hooks.beforeRender.tap('DataMappingPlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n const attributesToRemapping = attributes.filter(\n (attribute) => attribute.needRemapping, // 如果filter变化\n );\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.needRemapping && filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n if (attributesToRemapping.length) {\n // 过滤数据\n if (filter?.needRemapping) {\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n filter.needRemapping = false;\n } else {\n layer.setEncodedData(\n this.mapping(\n attributesToRemapping,\n filterData,\n layer.getEncodedData(),\n bottomColor,\n ),\n );\n }\n // 处理文本更新\n layer.emit('remapping', null);\n }\n });\n }\n private generateMaping(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n }\n\n private mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n predata?: IEncodeFeature[],\n minimumColor?: string,\n ): IEncodeFeature[] {\n // console.log('data', data)\n const mappedData = data.map((record: IParseDataItem, i) => {\n const preRecord = predata ? predata[i] : {};\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n ...preRecord,\n };\n // console.log('attributes', attributes)\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n // console.log('attribute', attribute)\n // console.log('record', record)\n let values = this.applyAttributeMapping(\n attribute,\n record,\n minimumColor,\n );\n // console.log('values', values)\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n // console.log('attribute', attribute)\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 = this.fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n return encodeRecord;\n }) as IEncodeFeature[];\n // console.log('mappedData', mappedData)\n\n // 调整数据兼容 Amap2.0\n this.adjustData2Amap2Coordinates(mappedData);\n\n // 调整数据兼容 SimpleCoordinates\n this.adjustData2SimpleCoordinates(mappedData);\n // console.log('mappedData', mappedData)\n return mappedData;\n }\n\n private adjustData2Amap2Coordinates(mappedData: IEncodeFeature[]) {\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (\n mappedData.length > 0 &&\n this.mapService.version === Version['GAODE2.x']\n ) {\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\n private adjustData2SimpleCoordinates(mappedData: IEncodeFeature[]) {\n if (mappedData.length > 0 && this.mapService.version === Version.SIMPLE) {\n mappedData.map((d) => {\n if (!d.simpleCoordinate) {\n d.coordinates = this.unProjectCoordinates(d.coordinates);\n d.simpleCoordinate = true;\n }\n });\n }\n }\n\n private unProjectCoordinates(coordinates: any) {\n if (typeof coordinates[0] === 'number') {\n return this.mapService.simpleMapCoord.unproject(\n coordinates as [number, number],\n );\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(\n this.mapService.simpleMapCoord.unproject(co as [number, number]),\n );\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 this.mapService.simpleMapCoord.unproject(coord as [number, number]),\n );\n });\n // @ts-ignore\n return coords;\n }\n }\n\n private 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 (\n record.hasOwnProperty(field) ||\n attribute.scale?.type === 'variable'\n ) {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n // console.log('params', params)\n // console.log('attribute', attribute)\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 // return attribute.mapping ? attribute.mapping(params) : [];\n }\n}\n"],"file":"DataMappingPlugin.js"}
|
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
10
12
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
13
|
|
|
12
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -25,6 +27,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
25
27
|
|
|
26
28
|
var _l7Core = require("@antv/l7-core");
|
|
27
29
|
|
|
30
|
+
var _l7Maps = require("@antv/l7-maps");
|
|
31
|
+
|
|
28
32
|
var _l7Utils = require("@antv/l7-utils");
|
|
29
33
|
|
|
30
34
|
var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
|
|
@@ -33,54 +37,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
33
37
|
|
|
34
38
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
35
39
|
|
|
36
|
-
var planeFrag = "\nuniform sampler2D u_texture;\nuniform float u_mapFlag;\nuniform float u_opacity;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\n\n#pragma include \"picking\"\nvoid main() {\n // gl_FragColor = vec4(v_Color, u_opacity);\n if(u_mapFlag > 0.0) {\n gl_FragColor = texture2D(u_texture, vec2(v_uv.x, 1.0 - v_uv.y));\n gl_FragColor.a *= u_opacity;\n
|
|
37
|
-
var planeVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\nuniform mat4 u_Mvp;\n\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 v_Color = a_Color;\n v_uv = a_Uv;\n \n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n\n // float x = 1.0;\n // float y = 0.0;\n // float z = 0.0;\n // mat3 translateMatrix = mat3(\n // 1.0, 0.0, 0.0 \n // 0.0, 1.0, 0.0\n // -project_pos.x, -project_pos.y, 1.0\n // );\n // mat4 translateMatrix = mat4(\n // 1.0, 0.0, 0.0, 0.0 ,\n // 0.0, 1.0, 0.0, 0.0,\n // 0.0, 0.0, 1.0, 0.0,\n // 1.0, 0.0, 0.0, 1.0\n // );\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,
|
|
38
|
-
|
|
39
|
-
function initPlane() {
|
|
40
|
-
var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
41
|
-
var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
42
|
-
var widthSegments = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
43
|
-
var heightSegments = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
44
|
-
var lng = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 120;
|
|
45
|
-
var lat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 30;
|
|
46
|
-
var widthHalf = width / 2;
|
|
47
|
-
var heightHalf = height / 2;
|
|
48
|
-
var gridX = Math.floor(widthSegments);
|
|
49
|
-
var gridY = Math.floor(heightSegments);
|
|
50
|
-
var gridX1 = gridX + 1;
|
|
51
|
-
var gridY1 = gridY + 1;
|
|
52
|
-
var segmentWidth = width / gridX;
|
|
53
|
-
var segmentHeight = height / gridY;
|
|
54
|
-
var indices = [];
|
|
55
|
-
var positions = [];
|
|
56
|
-
|
|
57
|
-
for (var iy = 0; iy < gridY1; iy++) {
|
|
58
|
-
var y = iy * segmentHeight - heightHalf;
|
|
59
|
-
|
|
60
|
-
for (var ix = 0; ix < gridX1; ix++) {
|
|
61
|
-
var x = ix * segmentWidth - widthHalf;
|
|
62
|
-
positions.push(x + lng, -y + lat, 0);
|
|
63
|
-
positions.push(ix / gridX);
|
|
64
|
-
positions.push(1 - iy / gridY);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
for (var _iy = 0; _iy < gridY; _iy++) {
|
|
69
|
-
for (var _ix = 0; _ix < gridX; _ix++) {
|
|
70
|
-
var a = _ix + gridX1 * _iy;
|
|
71
|
-
var b = _ix + gridX1 * (_iy + 1);
|
|
72
|
-
var c = _ix + 1 + gridX1 * (_iy + 1);
|
|
73
|
-
var d = _ix + 1 + gridX1 * _iy;
|
|
74
|
-
indices.push(a, b, d);
|
|
75
|
-
indices.push(b, c, d);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return {
|
|
80
|
-
indices: indices,
|
|
81
|
-
positions: positions
|
|
82
|
-
};
|
|
83
|
-
}
|
|
40
|
+
var planeFrag = "\nuniform sampler2D u_texture;\nuniform float u_mapFlag;\nuniform float u_opacity;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\nvarying float v_clip;\n\n#pragma include \"picking\"\nvoid main() {\n // gl_FragColor = vec4(v_Color, u_opacity);\n if(u_mapFlag > 0.0) {\n gl_FragColor = texture2D(u_texture, vec2(v_uv.x, 1.0 - v_uv.y));\n gl_FragColor.a *= u_opacity;\n } else {\n // gl_FragColor = vec4(v_uv, 0.0, u_opacity);\n gl_FragColor = vec4(v_Color, u_opacity);\n }\n gl_FragColor.a *= v_clip;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
41
|
+
var planeVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\nuniform mat4 u_Mvp;\nuniform float u_opacity;\nuniform float u_terrainClipHeight;\n\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nattribute vec3 a_Color;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\nvarying float v_clip;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\nvoid main() {\n v_Color = a_Color;\n v_uv = a_Uv;\n \n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n v_clip = 1.0;\n if(a_Position.z < u_terrainClipHeight) {\n v_clip = 0.0;\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n\n // float x = 1.0;\n // float y = 0.0;\n // float z = 0.0;\n // mat3 translateMatrix = mat3(\n // 1.0, 0.0, 0.0 \n // 0.0, 1.0, 0.0\n // -project_pos.x, -project_pos.y, 1.0\n // );\n // mat4 translateMatrix = mat4(\n // 1.0, 0.0, 0.0, 0.0 ,\n // 0.0, 1.0, 0.0, 0.0,\n // 0.0, 0.0, 1.0, 0.0,\n // 1.0, 0.0, 0.0, 1.0\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 } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, a_Position.z, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
84
42
|
|
|
85
43
|
var PlaneModel = function (_BaseModel) {
|
|
86
44
|
(0, _inherits2.default)(PlaneModel, _BaseModel);
|
|
@@ -99,7 +57,11 @@ var PlaneModel = function (_BaseModel) {
|
|
|
99
57
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
100
58
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
|
|
101
59
|
(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);
|
|
102
62
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryTriangulation", function () {
|
|
63
|
+
var _this2;
|
|
64
|
+
|
|
103
65
|
var _ref = _this.layer.getLayerConfig(),
|
|
104
66
|
_ref$width = _ref.width,
|
|
105
67
|
width = _ref$width === void 0 ? 1 : _ref$width,
|
|
@@ -110,11 +72,19 @@ var PlaneModel = function (_BaseModel) {
|
|
|
110
72
|
_ref$heightSegments = _ref.heightSegments,
|
|
111
73
|
heightSegments = _ref$heightSegments === void 0 ? 1 : _ref$heightSegments,
|
|
112
74
|
_ref$center = _ref.center,
|
|
113
|
-
center = _ref$center === void 0 ? [120, 30] : _ref$center
|
|
75
|
+
center = _ref$center === void 0 ? [120, 30] : _ref$center,
|
|
76
|
+
terrainTexture = _ref.terrainTexture;
|
|
114
77
|
|
|
115
|
-
var
|
|
116
|
-
indices =
|
|
117
|
-
positions =
|
|
78
|
+
var _this$initPlane = (_this2 = _this).initPlane.apply(_this2, [width, height, widthSegments, heightSegments].concat((0, _toConsumableArray2.default)(center))),
|
|
79
|
+
indices = _this$initPlane.indices,
|
|
80
|
+
positions = _this$initPlane.positions;
|
|
81
|
+
|
|
82
|
+
_this.positions = positions;
|
|
83
|
+
_this.indices = indices;
|
|
84
|
+
|
|
85
|
+
if (terrainTexture) {
|
|
86
|
+
_this.loadTerrainTexture();
|
|
87
|
+
}
|
|
118
88
|
|
|
119
89
|
return {
|
|
120
90
|
vertices: positions,
|
|
@@ -122,15 +92,85 @@ var PlaneModel = function (_BaseModel) {
|
|
|
122
92
|
size: 5
|
|
123
93
|
};
|
|
124
94
|
});
|
|
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
|
+
});
|
|
125
102
|
return _this;
|
|
126
103
|
}
|
|
127
104
|
|
|
128
105
|
(0, _createClass2.default)(PlaneModel, [{
|
|
106
|
+
key: "initPlane",
|
|
107
|
+
value: function initPlane() {
|
|
108
|
+
var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
109
|
+
var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
110
|
+
var widthSegments = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
111
|
+
var heightSegments = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
112
|
+
var lng = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 120;
|
|
113
|
+
var lat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 30;
|
|
114
|
+
var widthHalf = width / 2;
|
|
115
|
+
var heightHalf = height / 2;
|
|
116
|
+
var gridX = Math.floor(widthSegments);
|
|
117
|
+
var gridY = Math.floor(heightSegments);
|
|
118
|
+
var gridX1 = gridX + 1;
|
|
119
|
+
var gridY1 = gridY + 1;
|
|
120
|
+
var segmentWidth = width / gridX;
|
|
121
|
+
var segmentHeight = height / gridY;
|
|
122
|
+
var indices = [];
|
|
123
|
+
var positions = [];
|
|
124
|
+
|
|
125
|
+
for (var iy = 0; iy < gridY1; iy++) {
|
|
126
|
+
var y = iy * segmentHeight - heightHalf;
|
|
127
|
+
|
|
128
|
+
for (var ix = 0; ix < gridX1; ix++) {
|
|
129
|
+
var x = ix * segmentWidth - widthHalf;
|
|
130
|
+
|
|
131
|
+
if (this.mapService.version === _l7Maps.Version['GAODE2.x']) {
|
|
132
|
+
var _ref2 = this.mapService.lngLatToCoord([x + lng, -y + lat]),
|
|
133
|
+
_ref3 = (0, _slicedToArray2.default)(_ref2, 2),
|
|
134
|
+
a = _ref3[0],
|
|
135
|
+
b = _ref3[1];
|
|
136
|
+
|
|
137
|
+
positions.push(a, b, 0);
|
|
138
|
+
} else {
|
|
139
|
+
positions.push(x + lng, -y + lat, 0);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
positions.push(ix / gridX);
|
|
143
|
+
positions.push(1 - iy / gridY);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
for (var _iy = 0; _iy < gridY; _iy++) {
|
|
148
|
+
for (var _ix = 0; _ix < gridX; _ix++) {
|
|
149
|
+
var _a = _ix + gridX1 * _iy;
|
|
150
|
+
|
|
151
|
+
var _b = _ix + gridX1 * (_iy + 1);
|
|
152
|
+
|
|
153
|
+
var c = _ix + 1 + gridX1 * (_iy + 1);
|
|
154
|
+
var d = _ix + 1 + gridX1 * _iy;
|
|
155
|
+
indices.push(_a, _b, d);
|
|
156
|
+
indices.push(_b, c, d);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return {
|
|
161
|
+
indices: indices,
|
|
162
|
+
positions: positions
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
}, {
|
|
129
166
|
key: "getUninforms",
|
|
130
167
|
value: function getUninforms() {
|
|
131
|
-
var
|
|
132
|
-
opacity =
|
|
133
|
-
mapTexture =
|
|
168
|
+
var _ref4 = this.layer.getLayerConfig(),
|
|
169
|
+
opacity = _ref4.opacity,
|
|
170
|
+
mapTexture = _ref4.mapTexture,
|
|
171
|
+
_ref4$terrainClipHeig = _ref4.terrainClipHeight,
|
|
172
|
+
terrainClipHeight = _ref4$terrainClipHeig === void 0 ? 0 : _ref4$terrainClipHeig,
|
|
173
|
+
terrainTexture = _ref4.terrainTexture;
|
|
134
174
|
|
|
135
175
|
if (this.mapTexture !== mapTexture) {
|
|
136
176
|
this.mapTexture = mapTexture;
|
|
@@ -141,6 +181,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
141
181
|
return {
|
|
142
182
|
u_opacity: opacity || 1,
|
|
143
183
|
u_mapFlag: mapTexture ? 1 : 0,
|
|
184
|
+
u_terrainClipHeight: terrainTexture ? terrainClipHeight : -1,
|
|
144
185
|
u_texture: this.texture
|
|
145
186
|
};
|
|
146
187
|
}
|
|
@@ -152,12 +193,12 @@ var PlaneModel = function (_BaseModel) {
|
|
|
152
193
|
}, {
|
|
153
194
|
key: "initModels",
|
|
154
195
|
value: function initModels() {
|
|
155
|
-
var
|
|
156
|
-
|
|
157
|
-
mask =
|
|
158
|
-
|
|
159
|
-
maskInside =
|
|
160
|
-
mapTexture =
|
|
196
|
+
var _ref5 = this.layer.getLayerConfig(),
|
|
197
|
+
_ref5$mask = _ref5.mask,
|
|
198
|
+
mask = _ref5$mask === void 0 ? false : _ref5$mask,
|
|
199
|
+
_ref5$maskInside = _ref5.maskInside,
|
|
200
|
+
maskInside = _ref5$maskInside === void 0 ? true : _ref5$maskInside,
|
|
201
|
+
mapTexture = _ref5.mapTexture;
|
|
161
202
|
|
|
162
203
|
this.mapTexture = mapTexture;
|
|
163
204
|
var createTexture2D = this.rendererService.createTexture2D;
|
|
@@ -173,12 +214,94 @@ var PlaneModel = function (_BaseModel) {
|
|
|
173
214
|
triangulation: this.planeGeometryTriangulation,
|
|
174
215
|
primitive: _l7Core.gl.TRIANGLES,
|
|
175
216
|
depth: {
|
|
176
|
-
enable:
|
|
217
|
+
enable: true
|
|
177
218
|
},
|
|
178
219
|
blend: this.getBlend(),
|
|
179
220
|
stencil: (0, _l7Utils.getMask)(mask, maskInside)
|
|
180
221
|
})];
|
|
181
222
|
}
|
|
223
|
+
}, {
|
|
224
|
+
key: "getImageData",
|
|
225
|
+
value: function getImageData(img) {
|
|
226
|
+
var canvas = document.createElement('canvas');
|
|
227
|
+
var ctx = canvas.getContext('2d');
|
|
228
|
+
var width = img.width,
|
|
229
|
+
height = img.height;
|
|
230
|
+
canvas.width = width;
|
|
231
|
+
canvas.height = height;
|
|
232
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
233
|
+
var imageData = ctx.getImageData(0, 0, width, height);
|
|
234
|
+
return imageData;
|
|
235
|
+
}
|
|
236
|
+
}, {
|
|
237
|
+
key: "loadTerrainTexture",
|
|
238
|
+
value: function loadTerrainTexture() {
|
|
239
|
+
var _this3 = this;
|
|
240
|
+
|
|
241
|
+
var _ref6 = this.layer.getLayerConfig(),
|
|
242
|
+
_ref6$mask = _ref6.mask,
|
|
243
|
+
mask = _ref6$mask === void 0 ? false : _ref6$mask,
|
|
244
|
+
_ref6$maskInside = _ref6.maskInside,
|
|
245
|
+
maskInside = _ref6$maskInside === void 0 ? true : _ref6$maskInside,
|
|
246
|
+
_ref6$widthSegments = _ref6.widthSegments,
|
|
247
|
+
widthSegments = _ref6$widthSegments === void 0 ? 1 : _ref6$widthSegments,
|
|
248
|
+
_ref6$heightSegments = _ref6.heightSegments,
|
|
249
|
+
heightSegments = _ref6$heightSegments === void 0 ? 1 : _ref6$heightSegments,
|
|
250
|
+
terrainTexture = _ref6.terrainTexture,
|
|
251
|
+
_ref6$rgb2height = _ref6.rgb2height,
|
|
252
|
+
rgb2height = _ref6$rgb2height === void 0 ? function (r, g, b) {
|
|
253
|
+
return r + g + b;
|
|
254
|
+
} : _ref6$rgb2height;
|
|
255
|
+
|
|
256
|
+
var terrainImage = new Image();
|
|
257
|
+
terrainImage.crossOrigin = 'anonymous';
|
|
258
|
+
|
|
259
|
+
terrainImage.onload = function () {
|
|
260
|
+
var imgWidth = terrainImage.width;
|
|
261
|
+
var imgHeight = terrainImage.height;
|
|
262
|
+
|
|
263
|
+
var imageData = _this3.getImageData(terrainImage).data;
|
|
264
|
+
|
|
265
|
+
var gridX = Math.floor(widthSegments);
|
|
266
|
+
var gridY = Math.floor(heightSegments);
|
|
267
|
+
var gridX1 = gridX + 1;
|
|
268
|
+
var gridY1 = gridY + 1;
|
|
269
|
+
var widthStep = imgWidth / gridX;
|
|
270
|
+
var heihgtStep = imgHeight / gridY;
|
|
271
|
+
|
|
272
|
+
for (var iy = 0; iy < gridY1; iy++) {
|
|
273
|
+
var imgIndexY = Math.floor(iy * heihgtStep);
|
|
274
|
+
var imgLen = imgIndexY * imgWidth;
|
|
275
|
+
|
|
276
|
+
for (var ix = 0; ix < gridX1; ix++) {
|
|
277
|
+
var imgIndexX = Math.floor(ix * widthStep);
|
|
278
|
+
var imgDataIndex = (imgLen + imgIndexX) * 4;
|
|
279
|
+
var r = imageData[imgDataIndex];
|
|
280
|
+
var g = imageData[imgDataIndex + 1];
|
|
281
|
+
var b = imageData[imgDataIndex + 2];
|
|
282
|
+
var z = (iy * gridX1 + ix) * 5 + 2;
|
|
283
|
+
_this3.positions[z] = rgb2height(r, g, b);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
_this3.layer.models = [_this3.layer.buildLayerModel({
|
|
288
|
+
moduleName: 'geometry_plane',
|
|
289
|
+
vertexShader: planeVert,
|
|
290
|
+
fragmentShader: planeFrag,
|
|
291
|
+
triangulation: _this3.planeGeometryUpdateTriangulation,
|
|
292
|
+
primitive: _l7Core.gl.TRIANGLES,
|
|
293
|
+
depth: {
|
|
294
|
+
enable: true
|
|
295
|
+
},
|
|
296
|
+
blend: _this3.getBlend(),
|
|
297
|
+
stencil: (0, _l7Utils.getMask)(mask, maskInside)
|
|
298
|
+
})];
|
|
299
|
+
|
|
300
|
+
_this3.layerService.renderLayers();
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
terrainImage.src = terrainTexture;
|
|
304
|
+
}
|
|
182
305
|
}, {
|
|
183
306
|
key: "buildModels",
|
|
184
307
|
value: function buildModels() {
|
|
@@ -187,7 +310,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
187
310
|
}, {
|
|
188
311
|
key: "updateTexture",
|
|
189
312
|
value: function updateTexture(mapTexture) {
|
|
190
|
-
var
|
|
313
|
+
var _this4 = this;
|
|
191
314
|
|
|
192
315
|
var createTexture2D = this.rendererService.createTexture2D;
|
|
193
316
|
|
|
@@ -196,7 +319,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
196
319
|
img.crossOrigin = 'anonymous';
|
|
197
320
|
|
|
198
321
|
img.onload = function () {
|
|
199
|
-
|
|
322
|
+
_this4.texture = createTexture2D({
|
|
200
323
|
data: img,
|
|
201
324
|
width: img.width,
|
|
202
325
|
height: img.height,
|
|
@@ -204,9 +327,9 @@ var PlaneModel = function (_BaseModel) {
|
|
|
204
327
|
wrapT: _l7Core.gl.CLAMP_TO_EDGE
|
|
205
328
|
});
|
|
206
329
|
|
|
207
|
-
|
|
330
|
+
_this4.layerService.updateLayerRenderList();
|
|
208
331
|
|
|
209
|
-
|
|
332
|
+
_this4.layerService.renderLayers();
|
|
210
333
|
};
|
|
211
334
|
|
|
212
335
|
img.src = mapTexture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Geometry/models/plane.ts"],"names":["initPlane","width","height","widthSegments","heightSegments","lng","lat","widthHalf","heightHalf","gridX","Math","floor","gridY","gridX1","gridY1","segmentWidth","segmentHeight","indices","positions","iy","y","ix","x","push","a","b","c","d","PlaneModel","layer","getLayerConfig","center","vertices","size","opacity","mapTexture","texture","destroy","updateTexture","u_opacity","u_mapFlag","u_texture","mask","maskInside","createTexture2D","rendererService","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","initModels","img","Image","crossOrigin","onload","data","wrapS","CLAMP_TO_EDGE","wrapT","layerService","updateLayerRenderList","renderLayers","src","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 { 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\nfunction 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\n positions.push(x + lng, -y + lat, 0);\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\nexport default class PlaneModel extends BaseModel {\n protected texture: ITexture2D;\n protected mapTexture: string | undefined;\n public planeGeometryTriangulation = () => {\n const {\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n center = [120, 30],\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const { indices, positions } = initPlane(\n width,\n height,\n widthSegments,\n heightSegments,\n ...center,\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 } = 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\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 rotateZ(): mat4 {\n // const res = mat4.create()\n // const roZero = mat4.translate(mat4.create(), mat4.create(), [-120, 0, -30])\n // const rotate = mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // const roOrigin = mat4.translate(mat4.create(), mat4.create(), [120, 0, 30])\n // mat4.multiply(res, res, roZero)\n // mat4.multiply(res, res, rotate)\n // mat4.multiply(res, res, roOrigin)\n // return res\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 // primitive: gl.POINTS,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\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 // 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","mask","maskInside","createTexture2D","rendererService","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","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 }),\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 }),\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType","CanvasUpdateType"],"mappings":";;;;;;IAIYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a;;
|
|
1
|
+
{"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType","CanvasUpdateType"],"mappings":";;;;;;IAIYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a;;IAsHAC,gB;;;WAAAA,gB;AAAAA,EAAAA,gB;AAAAA,EAAAA,gB;GAAAA,gB,gCAAAA,gB","sourcesContent":["import { IMapService } from '@antv/l7-core';\nimport { IColorRamp } from '@antv/l7-utils';\nimport { styleOffset, styleSingle } from '../core/BaseModel';\nimport { anchorType } from '../utils/symbol-layout';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n iconStepCount?: number; // 可选参数、纹理贴图间隔\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n\n heightfixed?: boolean; // 可选参数 高度是否固定\n\n mask?: boolean; // 可选参数 时候允许蒙层\n maskInside?: boolean; // 可选参数 控制图层是否显示在蒙层的内部\n}\n\nexport interface IPointLayerStyleOptions {\n opacity: number;\n strokeOpacity: number;\n strokeWidth: number;\n stroke: string;\n\n textOffset?: [number, number];\n textAnchor?: anchorType;\n spacing?: number;\n padding?: [number, number];\n halo?: number;\n gamma?: number;\n fontWeight?: string;\n fontFamily?: string;\n textAllowOverlap?: boolean;\n\n // cylinder\n pickLight?: boolean;\n depth?: boolean;\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n lightEnable: boolean;\n heightfixed?: boolean; // 圆柱体高度是否固定(不随 zoom 发生变化)\n\n offsets?: styleOffset;\n blend?: string;\n unit?: string;\n mask?: boolean;\n maskInside?: boolean;\n\n rotation?: number; // angle\n speed?: number;\n}\n\nexport interface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n\n opacityLinear: {\n enable: boolean;\n dir: string;\n };\n\n heightfixed?: boolean; // 挤出几何体高度是否固定(不随 zoom 发生变化)\n\n pickLight: boolean;\n mask?: boolean;\n maskInside?: boolean;\n\n // water\n waterTexture?: string;\n speed?: number;\n // ocean\n watercolor?: string;\n watercolor2?: string;\n}\n\nexport interface IImageLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IGeometryLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n\n mapTexture?: string;\n terrainTexture?: string;\n\n // planeGeometry\n center?: [number, number];\n width?: number;\n height?: number;\n\n widthSegments?: number;\n heightSegments?: number;\n\n terrainClipHeight?: number;\n rgb2height?: (r: number, g: number, b: number) => number;\n}\n\nexport enum CanvasUpdateType {\n 'ALWAYS' = 'always',\n 'DRAGEND' = 'dragend',\n}\n\nexport interface IDrawingOnCanvas {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n mapService: IMapService;\n size: [number, number];\n}\nexport interface ICanvasLayerStyleOptions {\n zIndex: number;\n update: CanvasUpdateType | string;\n drawingOnCanvas: (option: IDrawingOnCanvas) => void;\n}\n\nexport interface IHeatMapLayerStyleOptions {\n opacity: number;\n intensity: number;\n radius: number;\n angle: number;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n\n coverage?: number;\n}\n\nexport interface IRasterLayerStyleOptions {\n opacity: number;\n domain: [number, number];\n noDataValue: number;\n clampLow: boolean;\n clampHigh: boolean;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n}\n"],"file":"interface.js"}
|
|
@@ -165,7 +165,7 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
|
|
|
165
165
|
mappedData.filter(function (d) {
|
|
166
166
|
return !d.originCoordinates;
|
|
167
167
|
}).map(function (d) {
|
|
168
|
-
d.version = 'GAODE2.x';
|
|
168
|
+
d.version = _l7Maps.Version['GAODE2.x'];
|
|
169
169
|
d.originCoordinates = (0, _cloneDeep2.default)(d.coordinates);
|
|
170
170
|
d.coordinates = _this4.mapService.lngLatToCoord(d.coordinates);
|
|
171
171
|
});
|
|
@@ -173,7 +173,7 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
|
|
|
173
173
|
mappedData.filter(function (d) {
|
|
174
174
|
return !d.originCoordinates;
|
|
175
175
|
}).map(function (d) {
|
|
176
|
-
d.version = 'GAODE2.x';
|
|
176
|
+
d.version = _l7Maps.Version['GAODE2.x'];
|
|
177
177
|
d.originCoordinates = (0, _cloneDeep2.default)(d.coordinates);
|
|
178
178
|
d.coordinates = _this4.mapService.lngLatToCoords(d.coordinates);
|
|
179
179
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/DataMappingPlugin.ts"],"names":["DataMappingPlugin","TYPES","IGlobalConfigService","IMapService","IFontService","layer","styleAttributeService","hooks","init","tap","generateMaping","beforeRenderData","dataState","dataMappingNeedUpdate","beforeRender","layerModelNeedUpdate","bottomColor","getBottomColor","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","dataArray","getSource","data","attributesToRemapping","attribute","needRemapping","filterData","scale","record","applyAttributeMapping","length","setEncodedData","mapping","undefined","getEncodedData","emit","predata","minimumColor","mappedData","map","i","preRecord","encodeRecord","id","_id","coordinates","forEach","values","name","c","Array","isArray","shape","fontService","getIconFontKey","adjustData2Amap2Coordinates","adjustData2SimpleCoordinates","mapService","version","Version","d","originCoordinates","lngLatToCoord","lngLatToCoords","SIMPLE","simpleCoordinate","unProjectCoordinates","simpleMapCoord","unproject","coords","coord","c1","co","push","scalers","params","field","hasOwnProperty","type","mappingResult"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n IParseDataItem,\n IStyleAttribute,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { isColor, rgb2arr, unProjectFlat } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport { cloneDeep } from 'lodash';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataMappingPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n @inject(TYPES.IFontService)\n private readonly fontService: IFontService;\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('DataMappingPlugin', () => {\n // 初始化重新生成 map\n this.generateMaping(layer, { styleAttributeService });\n });\n\n layer.hooks.beforeRenderData.tap('DataMappingPlugin', () => {\n layer.dataState.dataMappingNeedUpdate = false;\n this.generateMaping(layer, { styleAttributeService });\n return true;\n });\n\n // remapping before render\n layer.hooks.beforeRender.tap('DataMappingPlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n const attributesToRemapping = attributes.filter(\n (attribute) => attribute.needRemapping, // 如果filter变化\n );\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.needRemapping && filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n if (attributesToRemapping.length) {\n // 过滤数据\n if (filter?.needRemapping) {\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n filter.needRemapping = false;\n } else {\n layer.setEncodedData(\n this.mapping(\n attributesToRemapping,\n filterData,\n layer.getEncodedData(),\n bottomColor,\n ),\n );\n }\n // 处理文本更新\n layer.emit('remapping', null);\n }\n });\n }\n private generateMaping(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n }\n\n private mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n predata?: IEncodeFeature[],\n minimumColor?: string,\n ): IEncodeFeature[] {\n // console.log('data', data)\n const mappedData = data.map((record: IParseDataItem, i) => {\n const preRecord = predata ? predata[i] : {};\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n ...preRecord,\n };\n // console.log('attributes', attributes)\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n // console.log('attribute', attribute)\n // console.log('record', record)\n let values = this.applyAttributeMapping(\n attribute,\n record,\n minimumColor,\n );\n // console.log('values', values)\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n // console.log('attribute', attribute)\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 = this.fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n return encodeRecord;\n }) as IEncodeFeature[];\n // console.log('mappedData', mappedData)\n\n // 调整数据兼容 Amap2.0\n this.adjustData2Amap2Coordinates(mappedData);\n\n // 调整数据兼容 SimpleCoordinates\n this.adjustData2SimpleCoordinates(mappedData);\n // console.log('mappedData', mappedData)\n return mappedData;\n }\n\n private adjustData2Amap2Coordinates(mappedData: IEncodeFeature[]) {\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (\n mappedData.length > 0 &&\n this.mapService.version === Version['GAODE2.x']\n ) {\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 = '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 = '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\n private adjustData2SimpleCoordinates(mappedData: IEncodeFeature[]) {\n if (mappedData.length > 0 && this.mapService.version === Version.SIMPLE) {\n mappedData.map((d) => {\n if (!d.simpleCoordinate) {\n d.coordinates = this.unProjectCoordinates(d.coordinates);\n d.simpleCoordinate = true;\n }\n });\n }\n }\n\n private unProjectCoordinates(coordinates: any) {\n if (typeof coordinates[0] === 'number') {\n return this.mapService.simpleMapCoord.unproject(\n coordinates as [number, number],\n );\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(\n this.mapService.simpleMapCoord.unproject(co as [number, number]),\n );\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 this.mapService.simpleMapCoord.unproject(coord as [number, number]),\n );\n });\n // @ts-ignore\n return coords;\n }\n }\n\n private 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 (\n record.hasOwnProperty(field) ||\n attribute.scale?.type === 'variable'\n ) {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n // console.log('params', params)\n // console.log('attribute', attribute)\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 // return attribute.mapping ? attribute.mapping(params) : [];\n }\n}\n"],"file":"DataMappingPlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/DataMappingPlugin.ts"],"names":["DataMappingPlugin","TYPES","IGlobalConfigService","IMapService","IFontService","layer","styleAttributeService","hooks","init","tap","generateMaping","beforeRenderData","dataState","dataMappingNeedUpdate","beforeRender","layerModelNeedUpdate","bottomColor","getBottomColor","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","dataArray","getSource","data","attributesToRemapping","attribute","needRemapping","filterData","scale","record","applyAttributeMapping","length","setEncodedData","mapping","undefined","getEncodedData","emit","predata","minimumColor","mappedData","map","i","preRecord","encodeRecord","id","_id","coordinates","forEach","values","name","c","Array","isArray","shape","fontService","getIconFontKey","adjustData2Amap2Coordinates","adjustData2SimpleCoordinates","mapService","version","Version","d","originCoordinates","lngLatToCoord","lngLatToCoords","SIMPLE","simpleCoordinate","unProjectCoordinates","simpleMapCoord","unproject","coords","coord","c1","co","push","scalers","params","field","hasOwnProperty","type","mappingResult"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n IParseDataItem,\n IStyleAttribute,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { isColor, rgb2arr, unProjectFlat } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport { cloneDeep } from 'lodash';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataMappingPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n @inject(TYPES.IFontService)\n private readonly fontService: IFontService;\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('DataMappingPlugin', () => {\n // 初始化重新生成 map\n this.generateMaping(layer, { styleAttributeService });\n });\n\n layer.hooks.beforeRenderData.tap('DataMappingPlugin', () => {\n layer.dataState.dataMappingNeedUpdate = false;\n this.generateMaping(layer, { styleAttributeService });\n return true;\n });\n\n // remapping before render\n layer.hooks.beforeRender.tap('DataMappingPlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n const attributesToRemapping = attributes.filter(\n (attribute) => attribute.needRemapping, // 如果filter变化\n );\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.needRemapping && filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n if (attributesToRemapping.length) {\n // 过滤数据\n if (filter?.needRemapping) {\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n filter.needRemapping = false;\n } else {\n layer.setEncodedData(\n this.mapping(\n attributesToRemapping,\n filterData,\n layer.getEncodedData(),\n bottomColor,\n ),\n );\n }\n // 处理文本更新\n layer.emit('remapping', null);\n }\n });\n }\n private generateMaping(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n }\n\n private mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n predata?: IEncodeFeature[],\n minimumColor?: string,\n ): IEncodeFeature[] {\n // console.log('data', data)\n const mappedData = data.map((record: IParseDataItem, i) => {\n const preRecord = predata ? predata[i] : {};\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n ...preRecord,\n };\n // console.log('attributes', attributes)\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n // console.log('attribute', attribute)\n // console.log('record', record)\n let values = this.applyAttributeMapping(\n attribute,\n record,\n minimumColor,\n );\n // console.log('values', values)\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n // console.log('attribute', attribute)\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 = this.fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n return encodeRecord;\n }) as IEncodeFeature[];\n // console.log('mappedData', mappedData)\n\n // 调整数据兼容 Amap2.0\n this.adjustData2Amap2Coordinates(mappedData);\n\n // 调整数据兼容 SimpleCoordinates\n this.adjustData2SimpleCoordinates(mappedData);\n // console.log('mappedData', mappedData)\n return mappedData;\n }\n\n private adjustData2Amap2Coordinates(mappedData: IEncodeFeature[]) {\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (\n mappedData.length > 0 &&\n this.mapService.version === Version['GAODE2.x']\n ) {\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\n private adjustData2SimpleCoordinates(mappedData: IEncodeFeature[]) {\n if (mappedData.length > 0 && this.mapService.version === Version.SIMPLE) {\n mappedData.map((d) => {\n if (!d.simpleCoordinate) {\n d.coordinates = this.unProjectCoordinates(d.coordinates);\n d.simpleCoordinate = true;\n }\n });\n }\n }\n\n private unProjectCoordinates(coordinates: any) {\n if (typeof coordinates[0] === 'number') {\n return this.mapService.simpleMapCoord.unproject(\n coordinates as [number, number],\n );\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(\n this.mapService.simpleMapCoord.unproject(co as [number, number]),\n );\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 this.mapService.simpleMapCoord.unproject(coord as [number, number]),\n );\n });\n // @ts-ignore\n return coords;\n }\n }\n\n private 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 (\n record.hasOwnProperty(field) ||\n attribute.scale?.type === 'variable'\n ) {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n // console.log('params', params)\n // console.log('attribute', attribute)\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 // return attribute.mapping ? attribute.mapping(params) : [];\n }\n}\n"],"file":"DataMappingPlugin.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/l7-layers",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.12",
|
|
4
4
|
"description": "L7's collection of built-in layers",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"license": "ISC",
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@antv/geo-coord": "^1.0.8",
|
|
27
|
-
"@antv/l7-core": "^2.8.
|
|
28
|
-
"@antv/l7-source": "^2.8.
|
|
29
|
-
"@antv/l7-utils": "^2.8.
|
|
27
|
+
"@antv/l7-core": "^2.8.12",
|
|
28
|
+
"@antv/l7-source": "^2.8.12",
|
|
29
|
+
"@antv/l7-utils": "^2.8.12",
|
|
30
30
|
"@babel/runtime": "^7.7.7",
|
|
31
31
|
"@mapbox/martini": "^0.2.0",
|
|
32
32
|
"@turf/meta": "^6.0.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/gl-matrix": "^2.4.5",
|
|
53
53
|
"@types/lodash": "^4.14.138"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "67120bde32b50b2113260345b705614c5aabdd81",
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
}
|