@antv/l7-layers 2.17.3 → 2.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/es/Geometry/index.js +31 -9
  2. package/es/Geometry/models/billboard.js +89 -51
  3. package/es/Geometry/models/plane.js +143 -81
  4. package/es/Geometry/models/sprite.js +118 -60
  5. package/es/canvas/index.js +33 -10
  6. package/es/canvas/models/canvas.js +97 -41
  7. package/es/citybuliding/building.js +27 -8
  8. package/es/citybuliding/models/build.js +82 -57
  9. package/es/core/BaseLayer.js +478 -313
  10. package/es/core/BaseModel.js +80 -51
  11. package/es/core/CommonStyleAttribute.js +5 -2
  12. package/es/core/LayerPickService.js +32 -21
  13. package/es/core/TextureService.js +13 -0
  14. package/es/core/interface.js +24 -17
  15. package/es/core/shape/Path.js +20 -13
  16. package/es/core/shape/extrude.js +39 -27
  17. package/es/core/triangulation.js +136 -99
  18. package/es/earth/index.js +33 -9
  19. package/es/earth/models/atmosphere.js +54 -30
  20. package/es/earth/models/base.js +85 -47
  21. package/es/earth/models/bloomsphere.js +54 -30
  22. package/es/earth/utils.js +13 -9
  23. package/es/heatmap/index.js +40 -10
  24. package/es/heatmap/models/grid.js +52 -28
  25. package/es/heatmap/models/grid3d.js +52 -28
  26. package/es/heatmap/models/heatmap.js +149 -92
  27. package/es/heatmap/models/hexagon.js +52 -28
  28. package/es/heatmap/triangulation.js +4 -0
  29. package/es/image/index.js +28 -9
  30. package/es/image/models/image.js +100 -66
  31. package/es/index.js +17 -9
  32. package/es/line/index.js +35 -9
  33. package/es/line/models/arc.js +112 -63
  34. package/es/line/models/arc_3d.js +102 -58
  35. package/es/line/models/earthArc_3d.js +105 -60
  36. package/es/line/models/flow.js +60 -36
  37. package/es/line/models/great_circle.js +94 -53
  38. package/es/line/models/line.js +136 -85
  39. package/es/line/models/linearline.js +74 -42
  40. package/es/line/models/simpleLine.js +67 -38
  41. package/es/line/models/wall.js +92 -52
  42. package/es/mask/index.js +28 -9
  43. package/es/mask/models/fill.js +54 -29
  44. package/es/plugins/DataMappingPlugin.js +114 -78
  45. package/es/plugins/DataSourcePlugin.js +68 -45
  46. package/es/plugins/FeatureScalePlugin.js +122 -67
  47. package/es/plugins/LayerAnimateStylePlugin.js +5 -0
  48. package/es/plugins/LayerMaskPlugin.js +11 -3
  49. package/es/plugins/LayerModelPlugin.js +108 -69
  50. package/es/plugins/LayerStylePlugin.js +9 -3
  51. package/es/plugins/LightingPlugin.js +18 -12
  52. package/es/plugins/MultiPassRendererPlugin.js +16 -11
  53. package/es/plugins/PixelPickingPlugin.js +21 -12
  54. package/es/plugins/RegisterStyleAttributePlugin.js +12 -5
  55. package/es/plugins/ShaderUniformPlugin.js +27 -13
  56. package/es/plugins/UpdateModelPlugin.js +5 -0
  57. package/es/plugins/UpdateStyleAttributePlugin.js +11 -5
  58. package/es/point/index.js +78 -26
  59. package/es/point/models/earthExtrude.js +95 -58
  60. package/es/point/models/earthFill.js +80 -52
  61. package/es/point/models/extrude.js +94 -57
  62. package/es/point/models/fill.js +81 -56
  63. package/es/point/models/fillmage.js +100 -60
  64. package/es/point/models/image.js +83 -47
  65. package/es/point/models/index.js +2 -2
  66. package/es/point/models/normal.js +54 -30
  67. package/es/point/models/radar.js +63 -38
  68. package/es/point/models/simplePoint.js +62 -38
  69. package/es/point/models/text.js +296 -199
  70. package/es/point/shape/extrude.js +13 -4
  71. package/es/polygon/index.js +41 -11
  72. package/es/polygon/models/extrude.js +135 -87
  73. package/es/polygon/models/fill.js +79 -50
  74. package/es/polygon/models/index.js +2 -3
  75. package/es/polygon/models/ocean.js +76 -42
  76. package/es/polygon/models/water.js +71 -37
  77. package/es/raster/buffers/triangulation.js +4 -2
  78. package/es/raster/index.js +32 -9
  79. package/es/raster/models/raster.js +116 -80
  80. package/es/raster/models/rasterRgb.js +127 -84
  81. package/es/raster/models/rasterTerrainRgb.js +84 -56
  82. package/es/tile/interaction/getRasterData.js +20 -14
  83. package/es/tile/interaction/utils.js +9 -7
  84. package/es/tile/manager/base.js +96 -63
  85. package/es/tile/service/TileLayerService.js +55 -33
  86. package/es/tile/service/TilePickService.js +40 -26
  87. package/es/tile/service/TileSourceService.js +7 -3
  88. package/es/tile/tileFactory/DebugTile.js +46 -29
  89. package/es/tile/tileFactory/ImageTile.js +38 -20
  90. package/es/tile/tileFactory/MaskTile.js +43 -22
  91. package/es/tile/tileFactory/RasterRGBTile.js +42 -22
  92. package/es/tile/tileFactory/RasterTerrainRGBTile.js +38 -20
  93. package/es/tile/tileFactory/RasterTile.js +53 -30
  94. package/es/tile/tileFactory/Tile.js +97 -63
  95. package/es/tile/tileFactory/VectorTile.js +68 -41
  96. package/es/tile/tileFactory/index.js +11 -0
  97. package/es/tile/tileFactory/layers/TileDebugLayer.js +27 -6
  98. package/es/tile/tileFactory/util.js +3 -0
  99. package/es/tile/tileLayer/BaseLayer.js +146 -105
  100. package/es/tile/utils.js +1 -1
  101. package/es/utils/blend.js +2 -0
  102. package/es/utils/collision-index.js +16 -9
  103. package/es/utils/extrude_polyline.js +149 -101
  104. package/es/utils/grid-index.js +27 -2
  105. package/es/utils/identityScale.js +8 -0
  106. package/es/utils/layerData.js +44 -30
  107. package/es/utils/multiPassRender.js +13 -11
  108. package/es/utils/polylineNormal.js +37 -31
  109. package/es/utils/simpleLine.js +16 -2
  110. package/es/utils/stencil.js +3 -2
  111. package/es/utils/symbol-layout.js +53 -27
  112. package/es/wind/index.js +29 -9
  113. package/es/wind/models/utils.js +51 -26
  114. package/es/wind/models/wind.js +147 -101
  115. package/es/wind/models/windRender.js +66 -53
  116. package/lib/Geometry/index.js +38 -9
  117. package/lib/Geometry/models/billboard.js +97 -51
  118. package/lib/Geometry/models/index.js +5 -0
  119. package/lib/Geometry/models/plane.js +151 -79
  120. package/lib/Geometry/models/sprite.js +127 -60
  121. package/lib/canvas/index.js +40 -10
  122. package/lib/canvas/models/canvas.js +101 -41
  123. package/lib/canvas/models/index.js +3 -0
  124. package/lib/citybuliding/building.js +35 -8
  125. package/lib/citybuliding/models/build.js +92 -57
  126. package/lib/core/BaseLayer.js +469 -313
  127. package/lib/core/BaseModel.js +90 -51
  128. package/lib/core/CommonStyleAttribute.js +7 -2
  129. package/lib/core/LayerPickService.js +37 -21
  130. package/lib/core/TextureService.js +16 -0
  131. package/lib/core/interface.js +31 -21
  132. package/lib/core/schema.js +1 -0
  133. package/lib/core/shape/Path.js +31 -14
  134. package/lib/core/shape/extrude.js +62 -27
  135. package/lib/core/triangulation.js +177 -98
  136. package/lib/earth/index.js +43 -9
  137. package/lib/earth/models/atmosphere.js +63 -30
  138. package/lib/earth/models/base.js +90 -47
  139. package/lib/earth/models/bloomsphere.js +63 -30
  140. package/lib/earth/utils.js +31 -7
  141. package/lib/heatmap/index.js +48 -10
  142. package/lib/heatmap/models/grid.js +60 -28
  143. package/lib/heatmap/models/grid3d.js +60 -28
  144. package/lib/heatmap/models/heatmap.js +166 -92
  145. package/lib/heatmap/models/hexagon.js +60 -28
  146. package/lib/heatmap/models/index.js +6 -0
  147. package/lib/heatmap/triangulation.js +5 -0
  148. package/lib/image/index.js +36 -9
  149. package/lib/image/models/image.js +109 -66
  150. package/lib/image/models/index.js +3 -0
  151. package/lib/index.js +61 -7
  152. package/lib/line/index.js +40 -9
  153. package/lib/line/models/arc.js +122 -61
  154. package/lib/line/models/arc_3d.js +113 -56
  155. package/lib/line/models/earthArc_3d.js +115 -58
  156. package/lib/line/models/flow.js +70 -36
  157. package/lib/line/models/great_circle.js +104 -53
  158. package/lib/line/models/index.js +11 -0
  159. package/lib/line/models/line.js +144 -83
  160. package/lib/line/models/linearline.js +86 -42
  161. package/lib/line/models/simpleLine.js +77 -38
  162. package/lib/line/models/wall.js +103 -52
  163. package/lib/mask/index.js +36 -9
  164. package/lib/mask/models/fill.js +63 -29
  165. package/lib/mask/models/index.js +3 -0
  166. package/lib/plugins/DataMappingPlugin.js +125 -78
  167. package/lib/plugins/DataSourcePlugin.js +76 -45
  168. package/lib/plugins/FeatureScalePlugin.js +138 -67
  169. package/lib/plugins/LayerAnimateStylePlugin.js +10 -0
  170. package/lib/plugins/LayerMaskPlugin.js +17 -4
  171. package/lib/plugins/LayerModelPlugin.js +117 -70
  172. package/lib/plugins/LayerStylePlugin.js +14 -4
  173. package/lib/plugins/LightingPlugin.js +25 -12
  174. package/lib/plugins/MultiPassRendererPlugin.js +22 -11
  175. package/lib/plugins/PixelPickingPlugin.js +27 -12
  176. package/lib/plugins/RegisterStyleAttributePlugin.js +19 -5
  177. package/lib/plugins/ShaderUniformPlugin.js +34 -13
  178. package/lib/plugins/UpdateModelPlugin.js +10 -1
  179. package/lib/plugins/UpdateStyleAttributePlugin.js +16 -5
  180. package/lib/point/index.js +83 -26
  181. package/lib/point/models/earthExtrude.js +106 -58
  182. package/lib/point/models/earthFill.js +110 -52
  183. package/lib/point/models/extrude.js +103 -57
  184. package/lib/point/models/fill.js +90 -54
  185. package/lib/point/models/fillmage.js +107 -58
  186. package/lib/point/models/image.js +92 -47
  187. package/lib/point/models/index.js +12 -1
  188. package/lib/point/models/normal.js +64 -30
  189. package/lib/point/models/radar.js +72 -38
  190. package/lib/point/models/simplePoint.js +72 -38
  191. package/lib/point/models/text.js +305 -199
  192. package/lib/point/shape/extrude.js +20 -4
  193. package/lib/polygon/index.js +48 -11
  194. package/lib/polygon/models/extrude.js +146 -87
  195. package/lib/polygon/models/fill.js +89 -50
  196. package/lib/polygon/models/index.js +14 -2
  197. package/lib/polygon/models/ocean.js +88 -42
  198. package/lib/polygon/models/water.js +82 -37
  199. package/lib/raster/buffers/triangulation.js +7 -3
  200. package/lib/raster/index.js +40 -9
  201. package/lib/raster/models/index.js +5 -0
  202. package/lib/raster/models/raster.js +125 -80
  203. package/lib/raster/models/rasterRgb.js +139 -84
  204. package/lib/raster/models/rasterTerrainRgb.js +93 -56
  205. package/lib/tile/interaction/getRasterData.js +25 -14
  206. package/lib/tile/interaction/utils.js +19 -7
  207. package/lib/tile/manager/base.js +104 -63
  208. package/lib/tile/service/TileLayerService.js +60 -33
  209. package/lib/tile/service/TilePickService.js +48 -26
  210. package/lib/tile/service/TileSourceService.js +16 -2
  211. package/lib/tile/style/utils.js +3 -0
  212. package/lib/tile/tileFactory/DebugTile.js +54 -29
  213. package/lib/tile/tileFactory/ImageTile.js +46 -20
  214. package/lib/tile/tileFactory/MaskTile.js +51 -22
  215. package/lib/tile/tileFactory/RasterRGBTile.js +50 -22
  216. package/lib/tile/tileFactory/RasterTerrainRGBTile.js +46 -20
  217. package/lib/tile/tileFactory/RasterTile.js +63 -30
  218. package/lib/tile/tileFactory/Tile.js +102 -63
  219. package/lib/tile/tileFactory/VectorTile.js +76 -41
  220. package/lib/tile/tileFactory/index.js +25 -0
  221. package/lib/tile/tileFactory/layers/TileDebugLayer.js +32 -6
  222. package/lib/tile/tileFactory/util.js +9 -0
  223. package/lib/tile/tileLayer/BaseLayer.js +153 -105
  224. package/lib/tile/utils.js +5 -1
  225. package/lib/utils/blend.js +5 -0
  226. package/lib/utils/collision-index.js +25 -9
  227. package/lib/utils/extrude_polyline.js +181 -101
  228. package/lib/utils/grid-index.js +28 -2
  229. package/lib/utils/identityScale.js +9 -0
  230. package/lib/utils/layerData.js +49 -30
  231. package/lib/utils/multiPassRender.js +16 -11
  232. package/lib/utils/polylineNormal.js +66 -31
  233. package/lib/utils/simpleLine.js +21 -2
  234. package/lib/utils/stencil.js +4 -0
  235. package/lib/utils/symbol-layout.js +55 -27
  236. package/lib/wind/index.js +37 -9
  237. package/lib/wind/models/index.js +3 -0
  238. package/lib/wind/models/utils.js +62 -26
  239. package/lib/wind/models/wind.js +157 -101
  240. package/lib/wind/models/windRender.js +71 -53
  241. package/lib/wind/models/windShader.js +1 -0
  242. package/package.json +7 -7
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -12,60 +13,76 @@ exports.pentagon = pentagon;
12
13
  exports.polygonPath = polygonPath;
13
14
  exports.square = square;
14
15
  exports.triangle = triangle;
16
+
15
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
+
16
19
  var _geometryShape;
17
- var ShapeType3D = /*#__PURE__*/function (ShapeType3D) {
20
+
21
+ var ShapeType3D;
22
+ exports.ShapeType3D = ShapeType3D;
23
+
24
+ (function (ShapeType3D) {
18
25
  ShapeType3D["CYLINDER"] = "cylinder";
19
26
  ShapeType3D["SQUARECOLUMN"] = "squareColumn";
20
27
  ShapeType3D["TRIANGLECOLUMN"] = "triangleColumn";
21
28
  ShapeType3D["HEXAGONCOLUMN"] = "hexagonColumn";
22
29
  ShapeType3D["PENTAGONCOLUMN"] = "pentagonColumn";
23
- return ShapeType3D;
24
- }({});
25
- exports.ShapeType3D = ShapeType3D;
26
- var ShapeType2D = /*#__PURE__*/function (ShapeType2D) {
27
- ShapeType2D["CIRCLE"] = "circle";
28
- ShapeType2D["SQUARE"] = "square";
29
- ShapeType2D["TRIANGLE"] = "triangle";
30
- ShapeType2D["HEXAGON"] = "hexagon";
31
- ShapeType2D["PENTAGON"] = "pentagon";
32
- return ShapeType2D;
33
- }({});
30
+ })(ShapeType3D || (exports.ShapeType3D = ShapeType3D = {}));
31
+
32
+ var ShapeType2D;
34
33
  /**
35
34
  * 生成规则多边形顶点个数
36
35
  * @param pointCount 顶点个数 3 => 三角形
37
36
  * @param start 顶点起始角度 调整图形的方向
38
37
  */
38
+
39
39
  exports.ShapeType2D = ShapeType2D;
40
+
41
+ (function (ShapeType2D) {
42
+ ShapeType2D["CIRCLE"] = "circle";
43
+ ShapeType2D["SQUARE"] = "square";
44
+ ShapeType2D["TRIANGLE"] = "triangle";
45
+ ShapeType2D["HEXAGON"] = "hexagon";
46
+ ShapeType2D["PENTAGON"] = "pentagon";
47
+ })(ShapeType2D || (exports.ShapeType2D = ShapeType2D = {}));
48
+
40
49
  function polygonPath(pointCount) {
41
50
  var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
42
51
  var step = Math.PI * 2 / pointCount;
43
52
  var line = [];
53
+
44
54
  for (var i = 0; i < pointCount; i++) {
45
55
  line.push(step * i + start * Math.PI / 12);
46
56
  }
57
+
47
58
  var path = line.map(function (t) {
48
59
  var x = Math.sin(t + Math.PI / 4);
49
60
  var y = Math.cos(t + Math.PI / 4);
50
61
  return [x, y, 0];
51
- });
52
- // path.push(path[0]);
62
+ }); // path.push(path[0]);
63
+
53
64
  return path;
54
65
  }
66
+
55
67
  function circle() {
56
68
  return polygonPath(30);
57
69
  }
70
+
58
71
  function square() {
59
72
  return polygonPath(4);
60
73
  }
74
+
61
75
  function triangle() {
62
76
  return polygonPath(3);
63
77
  }
78
+
64
79
  function hexagon() {
65
80
  return polygonPath(6, 1);
66
81
  }
82
+
67
83
  function pentagon() {
68
84
  return polygonPath(5);
69
85
  }
86
+
70
87
  var geometryShape = (_geometryShape = {}, (0, _defineProperty2.default)(_geometryShape, ShapeType2D.CIRCLE, circle), (0, _defineProperty2.default)(_geometryShape, ShapeType2D.HEXAGON, hexagon), (0, _defineProperty2.default)(_geometryShape, ShapeType2D.TRIANGLE, triangle), (0, _defineProperty2.default)(_geometryShape, ShapeType2D.SQUARE, square), (0, _defineProperty2.default)(_geometryShape, ShapeType2D.PENTAGON, pentagon), (0, _defineProperty2.default)(_geometryShape, ShapeType3D.CYLINDER, circle), (0, _defineProperty2.default)(_geometryShape, ShapeType3D.HEXAGONCOLUMN, hexagon), (0, _defineProperty2.default)(_geometryShape, ShapeType3D.TRIANGLECOLUMN, triangle), (0, _defineProperty2.default)(_geometryShape, ShapeType3D.SQUARECOLUMN, square), (0, _defineProperty2.default)(_geometryShape, ShapeType3D.PENTAGONCOLUMN, pentagon), _geometryShape);
71
88
  exports.geometryShape = geometryShape;
@@ -1,16 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = extrudePolygon;
8
9
  exports.extrude_PolygonNormal = extrude_PolygonNormal;
9
10
  exports.fillPolygon = fillPolygon;
11
+
10
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
11
14
  var _l7Utils = require("@antv/l7-utils");
15
+
12
16
  var _earcut = _interopRequireDefault(require("earcut"));
17
+
13
18
  var _glMatrix = require("gl-matrix");
19
+
14
20
  /**
15
21
  * 拉伸多边形顶点,返回拉伸后的顶点信息
16
22
  * @param paths 路径数据组
@@ -19,16 +25,20 @@ var _glMatrix = require("gl-matrix");
19
25
  function extrudePolygon(path) {
20
26
  var p1 = path[0][0];
21
27
  var p2 = path[0][path[0].length - 1];
28
+
22
29
  if (p1[0] === p2[0] && p1[1] === p2[1]) {
23
30
  path[0] = path[0].slice(0, path[0].length - 1);
24
31
  }
32
+
25
33
  var n = path[0].length;
34
+
26
35
  var flattengeo = _earcut.default.flatten(path);
36
+
27
37
  var vertices = flattengeo.vertices,
28
- dimensions = flattengeo.dimensions;
38
+ dimensions = flattengeo.dimensions;
29
39
  var positions = [];
30
- var indexArray = [];
31
- // 设置顶部z值
40
+ var indexArray = []; // 设置顶部z值
41
+
32
42
  for (var j = 0; j < vertices.length / dimensions; j++) {
33
43
  if (dimensions === 2) {
34
44
  positions.push(vertices[j * 2], vertices[j * 2 + 1], 1);
@@ -36,80 +46,89 @@ function extrudePolygon(path) {
36
46
  positions.push(vertices[j * 3], vertices[j * 3 + 1], 1);
37
47
  }
38
48
  }
49
+
39
50
  var triangles = (0, _earcut.default)(flattengeo.vertices, flattengeo.holes, flattengeo.dimensions);
40
51
  indexArray.push.apply(indexArray, (0, _toConsumableArray2.default)(triangles));
41
- var _loop = function _loop() {
52
+
53
+ var _loop = function _loop(i) {
42
54
  var prePoint = flattengeo.vertices.slice(i * dimensions, (i + 1) * dimensions);
43
55
  var nextPoint = flattengeo.vertices.slice((i + 1) * dimensions, (i + 2) * dimensions);
56
+
44
57
  if (nextPoint.length === 0) {
45
58
  nextPoint = flattengeo.vertices.slice(0, dimensions);
46
59
  }
60
+
47
61
  var indexOffset = positions.length / 3;
48
62
  positions.push(prePoint[0], prePoint[1], 1, nextPoint[0], nextPoint[1], 1, prePoint[0], prePoint[1], 0, nextPoint[0], nextPoint[1], 0);
49
63
  indexArray.push.apply(indexArray, (0, _toConsumableArray2.default)([0, 2, 1, 2, 3, 1].map(function (v) {
50
64
  return v + indexOffset;
51
65
  })));
52
66
  };
67
+
53
68
  for (var i = 0; i < n; i++) {
54
- _loop();
69
+ _loop(i);
55
70
  }
71
+
56
72
  return {
57
73
  positions: positions,
58
74
  index: indexArray
59
75
  };
60
76
  }
77
+
61
78
  function fillPolygon(points) {
62
79
  var flattengeo = _earcut.default.flatten(points);
80
+
63
81
  var triangles = (0, _earcut.default)(flattengeo.vertices, flattengeo.holes, flattengeo.dimensions);
64
82
  return {
65
83
  positions: flattengeo.vertices,
66
84
  index: triangles
67
85
  };
68
86
  }
87
+
69
88
  function extrude_PolygonNormal(path) {
70
89
  var needFlat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
71
90
  var p1 = path[0][0];
72
91
  var p2 = path[0][path[0].length - 1];
92
+
73
93
  if (p1[0] === p2[0] && p1[1] === p2[1]) {
74
94
  path[0] = path[0].slice(0, path[0].length - 1);
75
95
  }
96
+
76
97
  var n = path[0].length;
98
+
77
99
  var flattengeo = _earcut.default.flatten(path);
100
+
78
101
  var vertices = flattengeo.vertices,
79
- dimensions = flattengeo.dimensions;
102
+ dimensions = flattengeo.dimensions;
80
103
  var positions = [];
81
104
  var indexArray = [];
82
- var normals = [];
83
- // 设置顶部z值 position uv
105
+ var normals = []; // 设置顶部z值 position uv
106
+
84
107
  for (var j = 0; j < vertices.length / dimensions; j++) {
85
- positions.push(vertices[j * dimensions],
86
- // x
87
- vertices[j * dimensions + 1],
88
- // y
89
- 1,
90
- // z
91
- -1,
92
- // 顶部uv
108
+ positions.push(vertices[j * dimensions], // x
109
+ vertices[j * dimensions + 1], // y
110
+ 1, // z
111
+ -1, // 顶部uv
93
112
  -1 // 顶部uv
94
113
  );
95
-
96
114
  normals.push(0, 0, 1);
97
115
  }
116
+
98
117
  var triangles = (0, _earcut.default)(flattengeo.vertices, flattengeo.holes, flattengeo.dimensions);
99
- indexArray.push.apply(indexArray, (0, _toConsumableArray2.default)(triangles));
100
- // 设置侧面
101
- var _loop2 = function _loop2() {
118
+ indexArray.push.apply(indexArray, (0, _toConsumableArray2.default)(triangles)); // 设置侧面
119
+
120
+ var _loop2 = function _loop2(i) {
102
121
  var prePoint = flattengeo.vertices.slice(i * dimensions, (i + 1) * dimensions);
103
122
  var nextPoint = flattengeo.vertices.slice((i + 1) * dimensions, (i + 2) * dimensions);
123
+
104
124
  if (nextPoint.length === 0) {
105
125
  nextPoint = flattengeo.vertices.slice(0, dimensions);
106
126
  }
107
- var indexOffset = positions.length / 5;
108
- // 侧面四顶点
109
- positions.push(prePoint[0], prePoint[1], 1, 0, 0, nextPoint[0], nextPoint[1], 1, 0.1,
110
- // 侧面 低uv
111
- 0,
112
- // 侧面低 uv
127
+
128
+ var indexOffset = positions.length / 5; // 侧面四顶点
129
+
130
+ positions.push(prePoint[0], prePoint[1], 1, 0, 0, nextPoint[0], nextPoint[1], 1, 0.1, // 侧面 低uv
131
+ 0, // 侧面低 uv
113
132
  prePoint[0], prePoint[1], 0, 0, 0.8, nextPoint[0], nextPoint[1], 0, 0.1, 0.8);
114
133
  var normal = computeVertexNormals([nextPoint[0], nextPoint[1], 1], [prePoint[0], prePoint[1], 0], [prePoint[0], prePoint[1], 1], needFlat);
115
134
  normals.push.apply(normals, (0, _toConsumableArray2.default)(normal).concat((0, _toConsumableArray2.default)(normal), (0, _toConsumableArray2.default)(normal), (0, _toConsumableArray2.default)(normal)));
@@ -117,32 +136,48 @@ function extrude_PolygonNormal(path) {
117
136
  return v + indexOffset;
118
137
  })));
119
138
  };
139
+
120
140
  for (var i = 0; i < n; i++) {
121
- _loop2();
141
+ _loop2(i);
122
142
  }
143
+
123
144
  return {
124
145
  positions: positions,
125
146
  index: indexArray,
126
147
  normals: normals
127
148
  };
128
149
  }
150
+
129
151
  function computeVertexNormals(p1, p2, p3) {
130
152
  var needFlat = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
153
+
131
154
  var cb = _glMatrix.vec3.create();
155
+
132
156
  var ab = _glMatrix.vec3.create();
157
+
133
158
  var normal = _glMatrix.vec3.create();
159
+
134
160
  if (needFlat) {
135
161
  p1 = (0, _l7Utils.lngLatToMeters)(p1);
136
162
  p2 = (0, _l7Utils.lngLatToMeters)(p2);
137
163
  p3 = (0, _l7Utils.lngLatToMeters)(p3);
138
164
  }
165
+
139
166
  var pA = _glMatrix.vec3.fromValues.apply(_glMatrix.vec3, (0, _toConsumableArray2.default)(p1));
167
+
140
168
  var pB = _glMatrix.vec3.fromValues.apply(_glMatrix.vec3, (0, _toConsumableArray2.default)(p2));
169
+
141
170
  var pC = _glMatrix.vec3.fromValues.apply(_glMatrix.vec3, (0, _toConsumableArray2.default)(p3));
171
+
142
172
  _glMatrix.vec3.sub(cb, pC, pB);
173
+
143
174
  _glMatrix.vec3.sub(ab, pA, pB);
175
+
144
176
  _glMatrix.vec3.cross(normal, cb, ab);
177
+
145
178
  var newNormal = _glMatrix.vec3.create();
179
+
146
180
  _glMatrix.vec3.normalize(newNormal, normal);
181
+
147
182
  return newNormal;
148
183
  }