@antv/l7-layers 2.8.9 → 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.
@@ -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\n } else {\n // gl_FragColor = vec4(v_uv, 0.0, u_opacity);\n gl_FragColor = vec4(v_Color, u_opacity);\n }\n gl_FragColor = filterColor(gl_FragColor);\n}\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, 0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0., 1.0));\n }\n\n setPickingColor(a_PickingColor);\n\n gl_PointSize = 10.0;\n}\n";
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 _initPlane = initPlane.apply(void 0, [width, height, widthSegments, heightSegments].concat((0, _toConsumableArray2.default)(center))),
116
- indices = _initPlane.indices,
117
- positions = _initPlane.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 _ref2 = this.layer.getLayerConfig(),
132
- opacity = _ref2.opacity,
133
- mapTexture = _ref2.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 _ref3 = this.layer.getLayerConfig(),
156
- _ref3$mask = _ref3.mask,
157
- mask = _ref3$mask === void 0 ? false : _ref3$mask,
158
- _ref3$maskInside = _ref3.maskInside,
159
- maskInside = _ref3$maskInside === void 0 ? true : _ref3$maskInside,
160
- mapTexture = _ref3.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: false
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 _this2 = this;
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
- _this2.texture = createTexture2D({
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
- _this2.layerService.updateLayerRenderList();
330
+ _this4.layerService.updateLayerRenderList();
208
331
 
209
- _this2.layerService.renderLayers();
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/canvas/models/canvas.ts"],"names":["CanvaModel","CanvasUpdateType","ALWAYS","layer","getLayerConfig","zIndex","update","animateOption","enable","duration","canvas","style","updateMode","unBindListener","bindListener","renderCanvas","mapService","off","clearCanvas","on","ctx","rendererService","getViewportSize","w","width","h","height","clearRect","viewWidth","viewHeight","prevSize","size","getSize","drawingOnCanvas","document","removeChild","initCanvas","getContainer","createElement","pointerEvents","position","top","left","appendChild","getContext","initModels","BaseModel"],"mappings":"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","sourcesContent":["import { IModelUniform } from '@antv/l7-core';\nimport BaseModel from '../../core/BaseModel';\nimport {\n CanvasUpdateType,\n ICanvasLayerStyleOptions,\n IDrawingOnCanvas,\n} from '../../core/interface';\n\nexport default class CanvaModel extends BaseModel {\n protected updateMode: CanvasUpdateType = CanvasUpdateType.ALWAYS;\n protected canvas: HTMLCanvasElement;\n protected ctx: CanvasRenderingContext2D;\n protected prevSize: [number, number];\n\n public renderUpdate = () => {\n const {\n zIndex = 10,\n update = CanvasUpdateType.ALWAYS,\n animateOption = { enable: false, duration: 20 },\n } = this.layer.getLayerConfig() as ICanvasLayerStyleOptions;\n if (+this.canvas.style.zIndex === zIndex) {\n this.canvas.style.zIndex = zIndex + '';\n }\n if (this.updateMode !== update) {\n this.updateMode = update as CanvasUpdateType;\n this.unBindListener();\n this.bindListener();\n }\n if (this.updateMode === CanvasUpdateType.ALWAYS && animateOption.enable) {\n this.renderCanvas();\n }\n };\n\n public unBindListener = () => {\n this.mapService.off('mapchange', this.renderCanvas);\n this.mapService.off('zoomstart', this.clearCanvas);\n this.mapService.off('zoomend', this.renderCanvas);\n this.mapService.off('movestart', this.clearCanvas);\n this.mapService.off('moveend', this.renderCanvas);\n };\n\n public bindListener = () => {\n if (this.updateMode === CanvasUpdateType.ALWAYS) {\n this.mapService.on('mapchange', this.renderCanvas);\n } else {\n this.mapService.on('zoomstart', this.clearCanvas);\n this.mapService.on('zoomend', this.renderCanvas);\n this.mapService.on('movestart', this.clearCanvas);\n this.mapService.on('moveend', this.renderCanvas);\n }\n };\n\n public clearModels(): void {\n if (this.canvas) {\n document.removeChild(this.canvas);\n // @ts-ignore\n this.canvas = null;\n }\n this.unBindListener();\n }\n\n public initModels() {\n const {\n update = CanvasUpdateType.ALWAYS,\n } = this.layer.getLayerConfig() as ICanvasLayerStyleOptions;\n this.updateMode = update as CanvasUpdateType;\n this.initCanvas();\n\n this.renderCanvas();\n\n this.bindListener();\n\n this.mapService.getContainer();\n return [];\n }\n\n public initCanvas(): void {\n const { zIndex } = this.layer.getLayerConfig() as ICanvasLayerStyleOptions;\n const size = this.mapService.getSize();\n const [width, height] = size;\n const {\n width: viewWidth,\n height: viewHeight,\n } = this.rendererService.getViewportSize();\n this.prevSize = [viewWidth, viewHeight];\n\n const canvas = document.createElement('canvas');\n this.canvas = canvas;\n canvas.width = viewWidth;\n canvas.height = viewHeight;\n canvas.style.pointerEvents = 'none';\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n canvas.style.position = 'absolute';\n canvas.style.top = '0';\n canvas.style.left = '0';\n canvas.style.zIndex = zIndex + '';\n this.mapService.getContainer()?.appendChild(canvas);\n\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n this.ctx = ctx;\n }\n\n public clearCanvas = () => {\n if (this.ctx) {\n const { width: w, height: h } = this.rendererService.getViewportSize();\n this.ctx.clearRect(0, 0, w, h);\n }\n };\n\n public renderCanvas = () => {\n const {\n width: viewWidth,\n height: viewHeight,\n } = this.rendererService.getViewportSize();\n if (this.prevSize[0] !== viewWidth || this.prevSize[1] !== viewHeight) {\n this.prevSize = [viewWidth, viewHeight];\n const size = this.mapService.getSize();\n const [width, height] = size;\n this.canvas.width = viewWidth;\n this.canvas.height = viewHeight;\n this.canvas.style.width = width + 'px';\n this.canvas.style.height = height + 'px';\n }\n\n const {\n drawingOnCanvas,\n } = this.layer.getLayerConfig() as ICanvasLayerStyleOptions;\n\n if (this.ctx) {\n drawingOnCanvas({\n canvas: this.canvas,\n ctx: this.ctx,\n mapService: this.mapService,\n size: [viewWidth, viewHeight],\n });\n }\n };\n\n public buildModels() {\n return this.initModels();\n }\n\n protected registerBuiltinAttributes() {\n return;\n }\n}\n"],"file":"canvas.js"}
1
+ {"version":3,"sources":["../../../src/canvas/models/canvas.ts"],"names":["CanvaModel","CanvasUpdateType","ALWAYS","layer","getLayerConfig","zIndex","update","animateOption","enable","duration","canvas","style","updateMode","unBindListener","bindListener","renderCanvas","mapService","off","clearCanvas","on","ctx","rendererService","getViewportSize","w","width","h","height","clearRect","viewWidth","viewHeight","prevSize","size","getSize","drawingOnCanvas","document","removeChild","initCanvas","getContainer","createElement","pointerEvents","position","top","left","appendChild","getContext","initModels","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;IAMqBA,U;;;;;;;;;;;;;;;6FACsBC,4BAAiBC,M;;;;+FAKpC,YAAM;AAC1B,iBAII,MAAKC,KAAL,CAAWC,cAAX,EAJJ;AAAA,6BACEC,MADF;AAAA,UACEA,MADF,4BACW,EADX;AAAA,6BAEEC,MAFF;AAAA,UAEEA,MAFF,4BAEWL,4BAAiBC,MAF5B;AAAA,oCAGEK,aAHF;AAAA,UAGEA,aAHF,mCAGkB;AAAEC,QAAAA,MAAM,EAAE,KAAV;AAAiBC,QAAAA,QAAQ,EAAE;AAA3B,OAHlB;;AAOA,UAAI,CAAC,MAAKC,MAAL,CAAYC,KAAZ,CAAkBN,MAAnB,KAA8BA,MAAlC,EAA0C;AACxC,cAAKK,MAAL,CAAYC,KAAZ,CAAkBN,MAAlB,GAA2BA,MAAM,GAAG,EAApC;AACD;;AACD,UAAI,MAAKO,UAAL,KAAoBN,MAAxB,EAAgC;AAC9B,cAAKM,UAAL,GAAkBN,MAAlB;;AACA,cAAKO,cAAL;;AACA,cAAKC,YAAL;AACD;;AACD,UAAI,MAAKF,UAAL,KAAoBX,4BAAiBC,MAArC,IAA+CK,aAAa,CAACC,MAAjE,EAAyE;AACvE,cAAKO,YAAL;AACD;AACF,K;iGAEuB,YAAM;AAC5B,YAAKC,UAAL,CAAgBC,GAAhB,CAAoB,WAApB,EAAiC,MAAKF,YAAtC;;AACA,YAAKC,UAAL,CAAgBC,GAAhB,CAAoB,WAApB,EAAiC,MAAKC,WAAtC;;AACA,YAAKF,UAAL,CAAgBC,GAAhB,CAAoB,SAApB,EAA+B,MAAKF,YAApC;;AACA,YAAKC,UAAL,CAAgBC,GAAhB,CAAoB,WAApB,EAAiC,MAAKC,WAAtC;;AACA,YAAKF,UAAL,CAAgBC,GAAhB,CAAoB,SAApB,EAA+B,MAAKF,YAApC;AACD,K;+FAEqB,YAAM;AAC1B,UAAI,MAAKH,UAAL,KAAoBX,4BAAiBC,MAAzC,EAAiD;AAC/C,cAAKc,UAAL,CAAgBG,EAAhB,CAAmB,WAAnB,EAAgC,MAAKJ,YAArC;AACD,OAFD,MAEO;AACL,cAAKC,UAAL,CAAgBG,EAAhB,CAAmB,WAAnB,EAAgC,MAAKD,WAArC;;AACA,cAAKF,UAAL,CAAgBG,EAAhB,CAAmB,SAAnB,EAA8B,MAAKJ,YAAnC;;AACA,cAAKC,UAAL,CAAgBG,EAAhB,CAAmB,WAAnB,EAAgC,MAAKD,WAArC;;AACA,cAAKF,UAAL,CAAgBG,EAAhB,CAAmB,SAAnB,EAA8B,MAAKJ,YAAnC;AACD;AACF,K;8FAqDoB,YAAM;AACzB,UAAI,MAAKK,GAAT,EAAc;AACZ,oCAAgC,MAAKC,eAAL,CAAqBC,eAArB,EAAhC;AAAA,YAAeC,CAAf,yBAAQC,KAAR;AAAA,YAA0BC,CAA1B,yBAAkBC,MAAlB;;AACA,cAAKN,GAAL,CAASO,SAAT,CAAmB,CAAnB,EAAsB,CAAtB,EAAyBJ,CAAzB,EAA4BE,CAA5B;AACD;AACF,K;+FAEqB,YAAM;AAC1B,mCAGI,MAAKJ,eAAL,CAAqBC,eAArB,EAHJ;AAAA,UACSM,SADT,0BACEJ,KADF;AAAA,UAEUK,UAFV,0BAEEH,MAFF;;AAIA,UAAI,MAAKI,QAAL,CAAc,CAAd,MAAqBF,SAArB,IAAkC,MAAKE,QAAL,CAAc,CAAd,MAAqBD,UAA3D,EAAuE;AACrE,cAAKC,QAAL,GAAgB,CAACF,SAAD,EAAYC,UAAZ,CAAhB;;AACA,YAAME,IAAI,GAAG,MAAKf,UAAL,CAAgBgB,OAAhB,EAAb;;AACA,iDAAwBD,IAAxB;AAAA,YAAOP,KAAP;AAAA,YAAcE,MAAd;;AACA,cAAKhB,MAAL,CAAYc,KAAZ,GAAoBI,SAApB;AACA,cAAKlB,MAAL,CAAYgB,MAAZ,GAAqBG,UAArB;AACA,cAAKnB,MAAL,CAAYC,KAAZ,CAAkBa,KAAlB,GAA0BA,KAAK,GAAG,IAAlC;AACA,cAAKd,MAAL,CAAYC,KAAZ,CAAkBe,MAAlB,GAA2BA,MAAM,GAAG,IAApC;AACD;;AAED,kBAEI,MAAKvB,KAAL,CAAWC,cAAX,EAFJ;AAAA,UACE6B,eADF,SACEA,eADF;;AAIA,UAAI,MAAKb,GAAT,EAAc;AACZa,QAAAA,eAAe,CAAC;AACdvB,UAAAA,MAAM,EAAE,MAAKA,MADC;AAEdU,UAAAA,GAAG,EAAE,MAAKA,GAFI;AAGdJ,UAAAA,UAAU,EAAE,MAAKA,UAHH;AAIde,UAAAA,IAAI,EAAE,CAACH,SAAD,EAAYC,UAAZ;AAJQ,SAAD,CAAf;AAMD;AACF,K;;;;;;WArFD,uBAA2B;AACzB,UAAI,KAAKnB,MAAT,EAAiB;AACfwB,QAAAA,QAAQ,CAACC,WAAT,CAAqB,KAAKzB,MAA1B;AAEA,aAAKA,MAAL,GAAc,IAAd;AACD;;AACD,WAAKG,cAAL;AACD;;;WAED,sBAAoB;AAClB,kBAEI,KAAKV,KAAL,CAAWC,cAAX,EAFJ;AAAA,+BACEE,MADF;AAAA,UACEA,MADF,6BACWL,4BAAiBC,MAD5B;;AAGA,WAAKU,UAAL,GAAkBN,MAAlB;AACA,WAAK8B,UAAL;AAEA,WAAKrB,YAAL;AAEA,WAAKD,YAAL;AAEA,WAAKE,UAAL,CAAgBqB,YAAhB;AACA,aAAO,EAAP;AACD;;;WAED,sBAA0B;AAAA;;AACxB,kBAAmB,KAAKlC,KAAL,CAAWC,cAAX,EAAnB;AAAA,UAAQC,MAAR,SAAQA,MAAR;;AACA,UAAM0B,IAAI,GAAG,KAAKf,UAAL,CAAgBgB,OAAhB,EAAb;;AACA,gDAAwBD,IAAxB;AAAA,UAAOP,KAAP;AAAA,UAAcE,MAAd;;AACA,mCAGI,KAAKL,eAAL,CAAqBC,eAArB,EAHJ;AAAA,UACSM,SADT,0BACEJ,KADF;AAAA,UAEUK,UAFV,0BAEEH,MAFF;;AAIA,WAAKI,QAAL,GAAgB,CAACF,SAAD,EAAYC,UAAZ,CAAhB;AAEA,UAAMnB,MAAM,GAAGwB,QAAQ,CAACI,aAAT,CAAuB,QAAvB,CAAf;AACA,WAAK5B,MAAL,GAAcA,MAAd;AACAA,MAAAA,MAAM,CAACc,KAAP,GAAeI,SAAf;AACAlB,MAAAA,MAAM,CAACgB,MAAP,GAAgBG,UAAhB;AACAnB,MAAAA,MAAM,CAACC,KAAP,CAAa4B,aAAb,GAA6B,MAA7B;AACA7B,MAAAA,MAAM,CAACC,KAAP,CAAaa,KAAb,GAAqBA,KAAK,GAAG,IAA7B;AACAd,MAAAA,MAAM,CAACC,KAAP,CAAae,MAAb,GAAsBA,MAAM,GAAG,IAA/B;AACAhB,MAAAA,MAAM,CAACC,KAAP,CAAa6B,QAAb,GAAwB,UAAxB;AACA9B,MAAAA,MAAM,CAACC,KAAP,CAAa8B,GAAb,GAAmB,GAAnB;AACA/B,MAAAA,MAAM,CAACC,KAAP,CAAa+B,IAAb,GAAoB,GAApB;AACAhC,MAAAA,MAAM,CAACC,KAAP,CAAaN,MAAb,GAAsBA,MAAM,GAAG,EAA/B;AACA,oCAAKW,UAAL,CAAgBqB,YAAhB,kFAAgCM,WAAhC,CAA4CjC,MAA5C;AAEA,UAAMU,GAAG,GAAGV,MAAM,CAACkC,UAAP,CAAkB,IAAlB,CAAZ;AACA,WAAKxB,GAAL,GAAWA,GAAX;AACD;;;WAsCD,uBAAqB;AACnB,aAAO,KAAKyB,UAAL,EAAP;AACD;;;WAED,qCAAsC;AACpC;AACD;;;EA3IqCC,mB","sourcesContent":["import { ILayerConfig, IModelUniform } from '@antv/l7-core';\nimport BaseModel from '../../core/BaseModel';\nimport {\n CanvasUpdateType,\n ICanvasLayerStyleOptions,\n IDrawingOnCanvas,\n} from '../../core/interface';\n\nexport default class CanvaModel extends BaseModel {\n protected updateMode: CanvasUpdateType = CanvasUpdateType.ALWAYS;\n protected canvas: HTMLCanvasElement;\n protected ctx: CanvasRenderingContext2D;\n protected prevSize: [number, number];\n\n public renderUpdate = () => {\n const {\n zIndex = 10,\n update = CanvasUpdateType.ALWAYS,\n animateOption = { enable: false, duration: 20 },\n } = this.layer.getLayerConfig() as Partial<\n ICanvasLayerStyleOptions & ILayerConfig\n >;\n if (+this.canvas.style.zIndex === zIndex) {\n this.canvas.style.zIndex = zIndex + '';\n }\n if (this.updateMode !== update) {\n this.updateMode = update as CanvasUpdateType;\n this.unBindListener();\n this.bindListener();\n }\n if (this.updateMode === CanvasUpdateType.ALWAYS && animateOption.enable) {\n this.renderCanvas();\n }\n };\n\n public unBindListener = () => {\n this.mapService.off('mapchange', this.renderCanvas);\n this.mapService.off('zoomstart', this.clearCanvas);\n this.mapService.off('zoomend', this.renderCanvas);\n this.mapService.off('movestart', this.clearCanvas);\n this.mapService.off('moveend', this.renderCanvas);\n };\n\n public bindListener = () => {\n if (this.updateMode === CanvasUpdateType.ALWAYS) {\n this.mapService.on('mapchange', this.renderCanvas);\n } else {\n this.mapService.on('zoomstart', this.clearCanvas);\n this.mapService.on('zoomend', this.renderCanvas);\n this.mapService.on('movestart', this.clearCanvas);\n this.mapService.on('moveend', this.renderCanvas);\n }\n };\n\n public clearModels(): void {\n if (this.canvas) {\n document.removeChild(this.canvas);\n // @ts-ignore\n this.canvas = null;\n }\n this.unBindListener();\n }\n\n public initModels() {\n const {\n update = CanvasUpdateType.ALWAYS,\n } = this.layer.getLayerConfig() as ICanvasLayerStyleOptions;\n this.updateMode = update as CanvasUpdateType;\n this.initCanvas();\n\n this.renderCanvas();\n\n this.bindListener();\n\n this.mapService.getContainer();\n return [];\n }\n\n public initCanvas(): void {\n const { zIndex } = this.layer.getLayerConfig() as ICanvasLayerStyleOptions;\n const size = this.mapService.getSize();\n const [width, height] = size;\n const {\n width: viewWidth,\n height: viewHeight,\n } = this.rendererService.getViewportSize();\n this.prevSize = [viewWidth, viewHeight];\n\n const canvas = document.createElement('canvas');\n this.canvas = canvas;\n canvas.width = viewWidth;\n canvas.height = viewHeight;\n canvas.style.pointerEvents = 'none';\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n canvas.style.position = 'absolute';\n canvas.style.top = '0';\n canvas.style.left = '0';\n canvas.style.zIndex = zIndex + '';\n this.mapService.getContainer()?.appendChild(canvas);\n\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n this.ctx = ctx;\n }\n\n public clearCanvas = () => {\n if (this.ctx) {\n const { width: w, height: h } = this.rendererService.getViewportSize();\n this.ctx.clearRect(0, 0, w, h);\n }\n };\n\n public renderCanvas = () => {\n const {\n width: viewWidth,\n height: viewHeight,\n } = this.rendererService.getViewportSize();\n if (this.prevSize[0] !== viewWidth || this.prevSize[1] !== viewHeight) {\n this.prevSize = [viewWidth, viewHeight];\n const size = this.mapService.getSize();\n const [width, height] = size;\n this.canvas.width = viewWidth;\n this.canvas.height = viewHeight;\n this.canvas.style.width = width + 'px';\n this.canvas.style.height = height + 'px';\n }\n\n const {\n drawingOnCanvas,\n } = this.layer.getLayerConfig() as ICanvasLayerStyleOptions;\n\n if (this.ctx) {\n drawingOnCanvas({\n canvas: this.canvas,\n ctx: this.ctx,\n mapService: this.mapService,\n size: [viewWidth, viewHeight],\n });\n }\n };\n\n public buildModels() {\n return this.initModels();\n }\n\n protected registerBuiltinAttributes() {\n return;\n }\n}\n"],"file":"canvas.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType","CanvasUpdateType"],"mappings":";;;;;;IASYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a;;IAmHAC,gB;;;WAAAA,gB;AAAAA,EAAAA,gB;AAAAA,EAAAA,gB;GAAAA,gB,gCAAAA,gB","sourcesContent":["import { IAnimateOption, IMapService } from '@antv/l7-core';\nimport { generateColorRamp, getMask, IColorRamp } from '@antv/l7-utils';\nimport { styleColor, styleOffset, styleSingle } from '../core/BaseModel';\nimport {\n anchorType,\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} 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 animateOption: IAnimateOption;\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\n // planeGeometry\n center?: [number, number];\n width?: number;\n height?: number;\n\n widthSegments?: number;\n heightSegments?: 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 animateOption: IAnimateOption;\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"}
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"}
@@ -23,6 +23,8 @@ var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
23
23
 
24
24
  var _l7Core = require("@antv/l7-core");
25
25
 
26
+ var _l7Maps = require("@antv/l7-maps");
27
+
26
28
  var _l7Utils = require("@antv/l7-utils");
27
29
 
28
30
  var _inversify = require("inversify");
@@ -149,28 +151,75 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
149
151
  });
150
152
  return encodeRecord;
151
153
  });
154
+ this.adjustData2Amap2Coordinates(mappedData);
155
+ this.adjustData2SimpleCoordinates(mappedData);
156
+ return mappedData;
157
+ }
158
+ }, {
159
+ key: "adjustData2Amap2Coordinates",
160
+ value: function adjustData2Amap2Coordinates(mappedData) {
161
+ var _this4 = this;
152
162
 
153
- if (mappedData.length > 0 && this.mapService.version === 'GAODE2.x') {
163
+ if (mappedData.length > 0 && this.mapService.version === _l7Maps.Version['GAODE2.x']) {
154
164
  if (typeof mappedData[0].coordinates[0] === 'number') {
155
165
  mappedData.filter(function (d) {
156
166
  return !d.originCoordinates;
157
167
  }).map(function (d) {
158
- d.version = 'GAODE2.x';
168
+ d.version = _l7Maps.Version['GAODE2.x'];
159
169
  d.originCoordinates = (0, _cloneDeep2.default)(d.coordinates);
160
- d.coordinates = _this3.mapService.lngLatToCoord(d.coordinates);
170
+ d.coordinates = _this4.mapService.lngLatToCoord(d.coordinates);
161
171
  });
162
172
  } else {
163
173
  mappedData.filter(function (d) {
164
174
  return !d.originCoordinates;
165
175
  }).map(function (d) {
166
- d.version = 'GAODE2.x';
176
+ d.version = _l7Maps.Version['GAODE2.x'];
167
177
  d.originCoordinates = (0, _cloneDeep2.default)(d.coordinates);
168
- d.coordinates = _this3.mapService.lngLatToCoords(d.coordinates);
178
+ d.coordinates = _this4.mapService.lngLatToCoords(d.coordinates);
169
179
  });
170
180
  }
171
181
  }
182
+ }
183
+ }, {
184
+ key: "adjustData2SimpleCoordinates",
185
+ value: function adjustData2SimpleCoordinates(mappedData) {
186
+ var _this5 = this;
187
+
188
+ if (mappedData.length > 0 && this.mapService.version === _l7Maps.Version.SIMPLE) {
189
+ mappedData.map(function (d) {
190
+ if (!d.simpleCoordinate) {
191
+ d.coordinates = _this5.unProjectCoordinates(d.coordinates);
192
+ d.simpleCoordinate = true;
193
+ }
194
+ });
195
+ }
196
+ }
197
+ }, {
198
+ key: "unProjectCoordinates",
199
+ value: function unProjectCoordinates(coordinates) {
200
+ var _this6 = this;
172
201
 
173
- return mappedData;
202
+ if (typeof coordinates[0] === 'number') {
203
+ return this.mapService.simpleMapCoord.unproject(coordinates);
204
+ }
205
+
206
+ if (coordinates[0] && coordinates[0][0] instanceof Array) {
207
+ var coords = [];
208
+ coordinates.map(function (coord) {
209
+ var c1 = [];
210
+ coord.map(function (co) {
211
+ c1.push(_this6.mapService.simpleMapCoord.unproject(co));
212
+ });
213
+ coords.push(c1);
214
+ });
215
+ return coords;
216
+ } else {
217
+ var _coords = [];
218
+ coordinates.map(function (coord) {
219
+ _coords.push(_this6.mapService.simpleMapCoord.unproject(coord));
220
+ });
221
+ return _coords;
222
+ }
174
223
  }
175
224
  }, {
176
225
  key: "applyAttributeMapping",