@antv/l7-layers 2.15.5 → 2.16.1

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 (243) 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 +486 -321
  10. package/es/core/BaseModel.js +126 -97
  11. package/es/core/LayerPickService.js +32 -21
  12. package/es/core/TextureService.js +13 -0
  13. package/es/core/interface.js +24 -17
  14. package/es/core/shape/Path.js +20 -13
  15. package/es/core/shape/extrude.js +31 -10
  16. package/es/core/triangulation.js +114 -54
  17. package/es/earth/index.js +33 -9
  18. package/es/earth/models/atmosphere.js +54 -30
  19. package/es/earth/models/base.js +85 -47
  20. package/es/earth/models/bloomsphere.js +54 -30
  21. package/es/earth/utils.js +13 -9
  22. package/es/heatmap/index.js +40 -10
  23. package/es/heatmap/models/grid.js +52 -28
  24. package/es/heatmap/models/grid3d.js +52 -28
  25. package/es/heatmap/models/heatmap.js +146 -91
  26. package/es/heatmap/models/hexagon.js +52 -28
  27. package/es/heatmap/triangulation.js +4 -0
  28. package/es/image/index.js +28 -9
  29. package/es/image/models/image.js +100 -66
  30. package/es/index.js +17 -9
  31. package/es/line/index.js +34 -9
  32. package/es/line/models/arc.js +118 -66
  33. package/es/line/models/arc_3d.js +108 -60
  34. package/es/line/models/earthArc_3d.js +111 -63
  35. package/es/line/models/great_circle.js +100 -56
  36. package/es/line/models/half.js +77 -46
  37. package/es/line/models/line.js +148 -94
  38. package/es/line/models/linearline.js +80 -45
  39. package/es/line/models/simpleLine.js +74 -41
  40. package/es/line/models/wall.js +92 -52
  41. package/es/mask/index.js +28 -9
  42. package/es/mask/models/fill.js +54 -29
  43. package/es/plugins/DataMappingPlugin.js +117 -80
  44. package/es/plugins/DataSourcePlugin.js +68 -45
  45. package/es/plugins/FeatureScalePlugin.js +122 -67
  46. package/es/plugins/LayerAnimateStylePlugin.js +5 -0
  47. package/es/plugins/LayerMaskPlugin.js +11 -3
  48. package/es/plugins/LayerModelPlugin.js +104 -67
  49. package/es/plugins/LayerStylePlugin.js +9 -3
  50. package/es/plugins/LightingPlugin.js +18 -12
  51. package/es/plugins/MultiPassRendererPlugin.js +16 -11
  52. package/es/plugins/PixelPickingPlugin.js +21 -12
  53. package/es/plugins/RegisterStyleAttributePlugin.js +12 -5
  54. package/es/plugins/ShaderUniformPlugin.js +27 -13
  55. package/es/plugins/UpdateModelPlugin.js +5 -0
  56. package/es/plugins/UpdateStyleAttributePlugin.js +11 -5
  57. package/es/point/index.js +77 -26
  58. package/es/point/models/earthExtrude.js +102 -61
  59. package/es/point/models/earthFill.js +87 -57
  60. package/es/point/models/extrude.js +101 -60
  61. package/es/point/models/fill.js +100 -70
  62. package/es/point/models/fillmage.js +107 -63
  63. package/es/point/models/image.js +88 -48
  64. package/es/point/models/index.js +2 -2
  65. package/es/point/models/normal.js +54 -30
  66. package/es/point/models/radar.js +64 -40
  67. package/es/point/models/simplePoint.js +69 -41
  68. package/es/point/models/text.d.ts +2 -1
  69. package/es/point/models/text.js +305 -201
  70. package/es/point/shape/extrude.js +13 -4
  71. package/es/polygon/index.js +40 -11
  72. package/es/polygon/models/extrude.js +92 -48
  73. package/es/polygon/models/fill.js +88 -54
  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/dataMappingStyle.js +18 -8
  104. package/es/utils/extrude_polyline.js +149 -101
  105. package/es/utils/grid-index.js +27 -2
  106. package/es/utils/identityScale.js +8 -0
  107. package/es/utils/layerData.js +44 -30
  108. package/es/utils/multiPassRender.js +13 -11
  109. package/es/utils/polylineNormal.js +37 -31
  110. package/es/utils/simpleLine.js +16 -2
  111. package/es/utils/stencil.js +3 -2
  112. package/es/utils/symbol-layout.js +53 -27
  113. package/es/wind/index.js +29 -9
  114. package/es/wind/models/utils.js +51 -26
  115. package/es/wind/models/wind.js +147 -101
  116. package/es/wind/models/windRender.js +66 -53
  117. package/lib/Geometry/index.js +38 -9
  118. package/lib/Geometry/models/billboard.js +97 -51
  119. package/lib/Geometry/models/index.js +5 -0
  120. package/lib/Geometry/models/plane.js +151 -79
  121. package/lib/Geometry/models/sprite.js +127 -60
  122. package/lib/canvas/index.js +40 -10
  123. package/lib/canvas/models/canvas.js +101 -41
  124. package/lib/canvas/models/index.js +3 -0
  125. package/lib/citybuliding/building.js +35 -8
  126. package/lib/citybuliding/models/build.js +92 -57
  127. package/lib/core/BaseLayer.js +480 -321
  128. package/lib/core/BaseModel.js +139 -97
  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 +54 -10
  135. package/lib/core/triangulation.js +153 -53
  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 +162 -91
  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 +128 -64
  154. package/lib/line/models/arc_3d.js +119 -58
  155. package/lib/line/models/earthArc_3d.js +122 -61
  156. package/lib/line/models/great_circle.js +111 -56
  157. package/lib/line/models/half.js +87 -46
  158. package/lib/line/models/index.js +11 -0
  159. package/lib/line/models/line.js +156 -92
  160. package/lib/line/models/linearline.js +92 -45
  161. package/lib/line/models/simpleLine.js +84 -41
  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 +128 -80
  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 +113 -68
  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 +113 -61
  182. package/lib/point/models/earthFill.js +117 -57
  183. package/lib/point/models/extrude.js +111 -60
  184. package/lib/point/models/fill.js +109 -68
  185. package/lib/point/models/fillmage.js +115 -61
  186. package/lib/point/models/image.js +98 -48
  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 +74 -40
  190. package/lib/point/models/simplePoint.js +79 -41
  191. package/lib/point/models/text.js +314 -202
  192. package/lib/point/shape/extrude.js +20 -4
  193. package/lib/polygon/index.js +48 -11
  194. package/lib/polygon/models/extrude.js +103 -48
  195. package/lib/polygon/models/fill.js +98 -54
  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/dataMappingStyle.js +19 -8
  228. package/lib/utils/extrude_polyline.js +181 -101
  229. package/lib/utils/grid-index.js +28 -2
  230. package/lib/utils/identityScale.js +9 -0
  231. package/lib/utils/layerData.js +49 -30
  232. package/lib/utils/multiPassRender.js +16 -11
  233. package/lib/utils/polylineNormal.js +66 -31
  234. package/lib/utils/simpleLine.js +21 -2
  235. package/lib/utils/stencil.js +4 -0
  236. package/lib/utils/symbol-layout.js +55 -27
  237. package/lib/wind/index.js +37 -9
  238. package/lib/wind/models/index.js +3 -0
  239. package/lib/wind/models/utils.js +62 -26
  240. package/lib/wind/models/wind.js +157 -101
  241. package/lib/wind/models/windRender.js +71 -53
  242. package/lib/wind/models/windShader.js +1 -0
  243. package/package.json +7 -7
@@ -7,57 +7,73 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConst
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
8
8
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
9
9
  import _regeneratorRuntime from "@babel/runtime/regenerator";
10
+
10
11
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
12
+
11
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; } }
14
+
12
15
  import { AttributeType, gl } from '@antv/l7-core';
13
16
  import { calculateCentroid, getCullFace, rgb2arr } from '@antv/l7-utils';
14
17
  import { isNumber } from 'lodash';
15
18
  import BaseModel from "../../core/BaseModel";
16
19
  import { PointExtrudeTriangulation } from "../../core/triangulation";
17
20
  import { lglt2xyz } from "../../earth/utils";
21
+
18
22
  /* babel-plugin-inline-import '../shaders/earth/extrude_frag.glsl' */
19
23
  var pointExtrudeFrag = "varying vec4 v_color;\nuniform float u_opacity: 1.0;\n\nuniform float u_pickLight: 0.0;\n\n#pragma include \"picking\"\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\nuniform float u_opacitylinear: 0.0;\nuniform float u_opacitylinear_dir: 1.0;\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float lightWeight = styleMappingMat[1][3];\n float barLinearZ = styleMappingMat[2][3];\n\n // \u8BBE\u7F6E\u5706\u67F1\u7684\u5E95\u8272\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, barLinearZ);\n gl_FragColor.rgb *= lightWeight;\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n // \u5E94\u7528\u900F\u660E\u5EA6\n gl_FragColor.a *= opacity;\n\n // \u5F00\u542F\u900F\u660E\u5EA6\u6E10\u53D8\n if(u_opacitylinear > 0.0) {\n gl_FragColor.a *= u_opacitylinear_dir > 0.0 ? (1.0 - barLinearZ): barLinearZ;\n }\n\n // picking\n if(u_pickLight > 0.0) {\n gl_FragColor = filterColorAlpha(gl_FragColor, lightWeight);\n } else {\n gl_FragColor = filterColor(gl_FragColor);\n }\n}\n";
24
+
20
25
  /* babel-plugin-inline-import '../shaders/earth/extrude_vert.glsl' */
21
26
  var pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec3 a_Position;\nattribute vec3 a_Pos;\nattribute vec4 a_Color;\nattribute vec3 a_Size;\nattribute vec3 a_Normal;\n\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_globel;\nuniform float u_r;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nvarying vec4 v_color;\n\nuniform float u_opacity : 1;\nuniform float u_lightEnable: 1;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA - lightWeight\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1] - linearZ(\u5782\u76F4\u65B9\u5411 0 - 1 \u7684\u503C)\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n styleMappingMat[2][3] = a_Position.z;\n\n vec3 offset = size; // \u63A7\u5236\u5706\u67F1\u4F53\u7684\u5927\u5C0F - \u4ECE\u6807\u51C6\u5355\u4F4D\u5706\u67F1\u4F53\u8FDB\u884C\u504F\u79FB\n if(u_heightfixed < 1.0) { // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\n \n if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // P20 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF1\n offset = offset * pow(2.0, (19.0 - u_Zoom));\n }\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // P20_2 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF3\n offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));\n }\n } else {// \u5706\u67F1\u4F53\u56FA\u5B9A\u9AD8\u5EA6 \uFF08 \u5904\u7406 mapbox \uFF09\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n offset *= 4.0/pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n\n vec4 project_pos = project_position(vec4(a_Pos.xy, 0., 1.0));\n\n // u_r \u63A7\u5236\u5706\u67F1\u7684\u751F\u957F\n vec4 pos = vec4(project_pos.xy + offset.xy, offset.z * u_r, 1.0);\n\n // \u5706\u67F1\u5149\u7167\u6548\u679C\n float lightWeight = 1.0;\n if(u_lightEnable > 0.0) { // \u53D6\u6D88\u4E09\u5143\u8868\u8FBE\u5F0F\uFF0C\u589E\u5F3A\u5065\u58EE\u6027\n lightWeight = calc_lighting(pos);\n }\n styleMappingMat[1][3] = lightWeight;\n\n v_color =vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n \n // \u5728\u5730\u7403\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u539F\u672C\u5782\u76F4\u4E8E xy \u5E73\u9762\u7684\u5706\u67F1\u8C03\u6574\u59FF\u6001\u5230\u9002\u5E94\u5706\u7684\u89D2\u5EA6\n //\u65CB\u8F6C\u77E9\u9635mx\uFF0C\u521B\u5EFA\u7ED5x\u8F74\u65CB\u8F6C\u77E9\u9635\n float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);\n float xRadian = getXRadian(a_Pos.y, r);\n float xcos = cos(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float xsin = sin(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 mx = mat4(\n 1,0,0,0, \n 0,xcos,-xsin,0, \n 0,xsin,xcos,0, \n 0,0,0,1);\n\n //\u65CB\u8F6C\u77E9\u9635my\uFF0C\u521B\u5EFA\u7ED5y\u8F74\u65CB\u8F6C\u77E9\u9635\n float yRadian = getYRadian(a_Pos.x, a_Pos.z);\n float ycos = cos(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float ysin = sin(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 my = mat4(\n ycos,0,-ysin,0, \n 0,1,0,0, \n ysin,0,ycos,0, \n 0,0,0,1);\n\n gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);\n \n\n setPickingColor(a_PickingColor);\n}\n";
27
+
22
28
  var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
23
29
  _inherits(ExtrudeModel, _BaseModel);
30
+
24
31
  var _super = _createSuper(ExtrudeModel);
32
+
25
33
  function ExtrudeModel() {
26
34
  var _this;
35
+
27
36
  _classCallCheck(this, ExtrudeModel);
37
+
28
38
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
29
39
  args[_key] = arguments[_key];
30
40
  }
41
+
31
42
  _this = _super.call.apply(_super, [this].concat(args));
43
+
32
44
  _defineProperty(_assertThisInitialized(_this), "raiseCount", 0);
45
+
33
46
  _defineProperty(_assertThisInitialized(_this), "raiseRepeat", 0);
47
+
34
48
  return _this;
35
49
  }
50
+
36
51
  _createClass(ExtrudeModel, [{
37
52
  key: "getUninforms",
38
53
  value: function getUninforms() {
39
54
  var _ref = this.layer.getLayerConfig(),
40
- _ref$animateOption = _ref.animateOption,
41
- animateOption = _ref$animateOption === void 0 ? {
42
- enable: false,
43
- speed: 0.01,
44
- repeat: false
45
- } : _ref$animateOption,
46
- _ref$opacity = _ref.opacity,
47
- opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
48
- sourceColor = _ref.sourceColor,
49
- targetColor = _ref.targetColor,
50
- _ref$pickLight = _ref.pickLight,
51
- pickLight = _ref$pickLight === void 0 ? false : _ref$pickLight,
52
- _ref$heightfixed = _ref.heightfixed,
53
- heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
54
- _ref$opacityLinear = _ref.opacityLinear,
55
- opacityLinear = _ref$opacityLinear === void 0 ? {
56
- enable: false,
57
- dir: 'up'
58
- } : _ref$opacityLinear,
59
- _ref$lightEnable = _ref.lightEnable,
60
- lightEnable = _ref$lightEnable === void 0 ? true : _ref$lightEnable;
55
+ _ref$animateOption = _ref.animateOption,
56
+ animateOption = _ref$animateOption === void 0 ? {
57
+ enable: false,
58
+ speed: 0.01,
59
+ repeat: false
60
+ } : _ref$animateOption,
61
+ _ref$opacity = _ref.opacity,
62
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
63
+ sourceColor = _ref.sourceColor,
64
+ targetColor = _ref.targetColor,
65
+ _ref$pickLight = _ref.pickLight,
66
+ pickLight = _ref$pickLight === void 0 ? false : _ref$pickLight,
67
+ _ref$heightfixed = _ref.heightfixed,
68
+ heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
69
+ _ref$opacityLinear = _ref.opacityLinear,
70
+ opacityLinear = _ref$opacityLinear === void 0 ? {
71
+ enable: false,
72
+ dir: 'up'
73
+ } : _ref$opacityLinear,
74
+ _ref$lightEnable = _ref.lightEnable,
75
+ lightEnable = _ref$lightEnable === void 0 ? true : _ref$lightEnable;
76
+
61
77
  if (this.dataTextureTest && this.dataTextureNeedUpdate({
62
78
  opacity: opacity
63
79
  })) {
@@ -65,10 +81,12 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
65
81
  opacity: opacity
66
82
  });
67
83
  var encodeData = this.layer.getEncodedData();
84
+
68
85
  var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
69
- data = _this$calDataFrame.data,
70
- width = _this$calDataFrame.width,
71
- height = _this$calDataFrame.height;
86
+ data = _this$calDataFrame.data,
87
+ width = _this$calDataFrame.width,
88
+ height = _this$calDataFrame.height;
89
+
72
90
  this.rowCount = height; // 当前数据纹理有多少行
73
91
 
74
92
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
@@ -86,22 +104,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
86
104
  width: 1,
87
105
  height: 1
88
106
  });
89
- }
107
+ } // 转化渐变色
108
+
90
109
 
91
- // 转化渐变色
92
110
  var useLinearColor = 0; // 默认不生效
111
+
93
112
  var sourceColorArr = [0, 0, 0, 0];
94
113
  var targetColorArr = [0, 0, 0, 0];
114
+
95
115
  if (sourceColor && targetColor) {
96
116
  sourceColorArr = rgb2arr(sourceColor);
97
117
  targetColorArr = rgb2arr(targetColor);
98
118
  useLinearColor = 1;
99
119
  }
120
+
100
121
  if (this.raiseCount < 1 && this.raiseRepeat > 0) {
101
122
  if (animateOption.enable) {
102
123
  var _animateOption$speed = animateOption.speed,
103
- speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed;
124
+ speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed;
104
125
  this.raiseCount += speed;
126
+
105
127
  if (this.raiseCount >= 1) {
106
128
  if (this.raiseRepeat > 1) {
107
129
  this.raiseCount = 0;
@@ -112,6 +134,7 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
112
134
  }
113
135
  }
114
136
  }
137
+
115
138
  return {
116
139
  // 圆柱体的拾取高亮是否要计算光照
117
140
  u_pickLight: Number(pickLight),
@@ -138,18 +161,23 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
138
161
  value: function () {
139
162
  var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
140
163
  return _regeneratorRuntime.wrap(function _callee$(_context) {
141
- while (1) switch (_context.prev = _context.next) {
142
- case 0:
143
- return _context.abrupt("return", this.buildModels());
144
- case 1:
145
- case "end":
146
- return _context.stop();
164
+ while (1) {
165
+ switch (_context.prev = _context.next) {
166
+ case 0:
167
+ return _context.abrupt("return", this.buildModels());
168
+
169
+ case 1:
170
+ case "end":
171
+ return _context.stop();
172
+ }
147
173
  }
148
174
  }, _callee, this);
149
175
  }));
176
+
150
177
  function initModels() {
151
178
  return _initModels.apply(this, arguments);
152
179
  }
180
+
153
181
  return initModels;
154
182
  }()
155
183
  }, {
@@ -157,45 +185,53 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
157
185
  value: function () {
158
186
  var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
159
187
  var _ref2, _ref2$animateOption$r, repeat, model;
188
+
160
189
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
161
- while (1) switch (_context2.prev = _context2.next) {
162
- case 0:
163
- // GAODE1.x GAODE2.x MAPBOX
164
- _ref2 = this.layer.getLayerConfig(), _ref2$animateOption$r = _ref2.animateOption.repeat, repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
165
- this.raiseRepeat = repeat;
166
- _context2.next = 4;
167
- return this.layer.buildLayerModel({
168
- moduleName: 'pointEarthExtrude',
169
- vertexShader: pointExtrudeVert,
170
- fragmentShader: pointExtrudeFrag,
171
- triangulation: PointExtrudeTriangulation,
172
- depth: {
173
- enable: true
174
- },
175
- cull: {
176
- enable: true,
177
- face: getCullFace(this.mapService.version)
178
- },
179
- blend: this.getBlend()
180
- });
181
- case 4:
182
- model = _context2.sent;
183
- return _context2.abrupt("return", [model]);
184
- case 6:
185
- case "end":
186
- return _context2.stop();
190
+ while (1) {
191
+ switch (_context2.prev = _context2.next) {
192
+ case 0:
193
+ // GAODE1.x GAODE2.x MAPBOX
194
+ _ref2 = this.layer.getLayerConfig(), _ref2$animateOption$r = _ref2.animateOption.repeat, repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
195
+ this.raiseRepeat = repeat;
196
+ _context2.next = 4;
197
+ return this.layer.buildLayerModel({
198
+ moduleName: 'pointEarthExtrude',
199
+ vertexShader: pointExtrudeVert,
200
+ fragmentShader: pointExtrudeFrag,
201
+ triangulation: PointExtrudeTriangulation,
202
+ depth: {
203
+ enable: true
204
+ },
205
+ cull: {
206
+ enable: true,
207
+ face: getCullFace(this.mapService.version)
208
+ },
209
+ blend: this.getBlend()
210
+ });
211
+
212
+ case 4:
213
+ model = _context2.sent;
214
+ return _context2.abrupt("return", [model]);
215
+
216
+ case 6:
217
+ case "end":
218
+ return _context2.stop();
219
+ }
187
220
  }
188
221
  }, _callee2, this);
189
222
  }));
223
+
190
224
  function buildModels() {
191
225
  return _buildModels.apply(this, arguments);
192
226
  }
227
+
193
228
  return buildModels;
194
229
  }()
195
230
  }, {
196
231
  key: "clearModels",
197
232
  value: function clearModels() {
198
233
  var _this$dataTexture;
234
+
199
235
  (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
200
236
  }
201
237
  }, {
@@ -214,23 +250,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
214
250
  size: 3,
215
251
  update: function update(feature) {
216
252
  var size = feature.size;
253
+
217
254
  if (size) {
218
255
  var buffersize = [];
256
+
219
257
  if (Array.isArray(size)) {
220
258
  buffersize = size.length === 2 ? [size[0], size[0], size[1]] : size;
221
259
  }
260
+
222
261
  if (!Array.isArray(size)) {
223
262
  buffersize = [size, size, size];
224
263
  }
264
+
225
265
  return buffersize;
226
266
  } else {
227
267
  return [2, 2, 2];
228
268
  }
229
269
  }
230
270
  }
231
- });
271
+ }); // point layer size;
232
272
 
233
- // point layer size;
234
273
  this.styleAttributeService.registerStyleAttribute({
235
274
  name: 'normal',
236
275
  type: AttributeType.Attribute,
@@ -267,6 +306,8 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
267
306
  });
268
307
  }
269
308
  }]);
309
+
270
310
  return ExtrudeModel;
271
311
  }(BaseModel);
312
+
272
313
  export { ExtrudeModel as default };
@@ -7,41 +7,52 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
7
7
  import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
8
8
  import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
9
9
  import _regeneratorRuntime from "@babel/runtime/regenerator";
10
+
10
11
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
12
+
11
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; } }
14
+
12
15
  import { AttributeType, gl } from '@antv/l7-core';
13
16
  import { isNumber } from 'lodash';
14
17
  import BaseModel from "../../core/BaseModel";
15
18
  import { GlobelPointFillTriangulation } from "../../core/triangulation";
19
+
16
20
  /* babel-plugin-inline-import '../shaders/earth/fill_frag.glsl' */
17
21
  var pointFillFrag = "uniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\n\nvoid main() {\n int shape = int(floor(v_data.w + 0.5));\n\n vec4 textrueStroke = vec4(\n styleMappingMat[1][0],\n styleMappingMat[1][1],\n styleMappingMat[1][2],\n styleMappingMat[1][3]\n );\n\n float opacity = styleMappingMat[0][0];\n float stroke_opacity = styleMappingMat[0][1];\n float strokeWidth = styleMappingMat[0][2];\n vec4 strokeColor = textrueStroke == vec4(0) ? v_color : textrueStroke;\n\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius + strokeWidth);\n\n float outer_df;\n float inner_df;\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\n if (shape == 0) {\n outer_df = sdCircle(v_data.xy, 1.0);\n inner_df = sdCircle(v_data.xy, r);\n } else if (shape == 1) {\n outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\n inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\n } else if (shape == 2) {\n outer_df = sdBox(v_data.xy, vec2(1.));\n inner_df = sdBox(v_data.xy, vec2(r));\n } else if (shape == 3) {\n outer_df = sdPentagon(v_data.xy, 0.8);\n inner_df = sdPentagon(v_data.xy, r * 0.8);\n } else if (shape == 4) {\n outer_df = sdHexagon(v_data.xy, 0.8);\n inner_df = sdHexagon(v_data.xy, r * 0.8);\n } else if (shape == 5) {\n outer_df = sdOctogon(v_data.xy, 1.0);\n inner_df = sdOctogon(v_data.xy, r);\n } else if (shape == 6) {\n outer_df = sdHexagram(v_data.xy, 0.52);\n inner_df = sdHexagram(v_data.xy, r * 0.52);\n } else if (shape == 7) {\n outer_df = sdRhombus(v_data.xy, vec2(1.0));\n inner_df = sdRhombus(v_data.xy, vec2(r));\n } else if (shape == 8) {\n outer_df = sdVesica(v_data.xy, 1.1, 0.8);\n inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\n }\n\n if(outer_df > antialiasblur + 0.018) discard;\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n float color_t = strokeWidth < 0.01 ? 0.0 : smoothstep(\n antialiasblur,\n 0.0,\n inner_df\n );\n\n if(strokeWidth < 0.01) {\n gl_FragColor = vec4(v_color.rgb, v_color.a * opacity);\n } else {\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * opacity), strokeColor * stroke_opacity, color_t);\n }\n\n if(u_additive > 0.0) {\n gl_FragColor *= opacity_t;\n gl_FragColor = filterColorAlpha(gl_FragColor, gl_FragColor.a);\n } else {\n gl_FragColor.a *= opacity_t;\n gl_FragColor = filterColor(gl_FragColor);\n }\n}\n";
22
+
18
23
  /* babel-plugin-inline-import '../shaders/earth/fill_vert.glsl' */
19
24
  var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Extrude;\nattribute float a_Size;\nattribute float a_Shape;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\n\nuniform float u_opacity : 1;\nuniform float u_stroke_opacity : 1;\nuniform float u_stroke_width : 2;\nuniform vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\nuniform vec2 u_offsets;\n\nuniform float u_blur : 0.0;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n#pragma include \"styleMappingCalStrokeOpacity\"\n#pragma include \"styleMappingCalStrokeWidth\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n float shape_type = a_Shape;\n /*\n * setPickingSize \u8BBE\u7F6E\u62FE\u53D6\u5927\u5C0F\n */\n float newSize = setPickingSize(a_Size);\n // float newSize = setPickingSize(a_Size) * 0.00001038445708445579;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 strokeOpacityAndOffset = calStrokeOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][1] = strokeOpacityAndOffset.r;\n textureOffset = strokeOpacityAndOffset.g;\n\n vec2 strokeWidthAndOffset = calStrokeWidthAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][2] = strokeWidthAndOffset.r;\n textureOffset = strokeWidthAndOffset.g;\n\n vec4 textrueStroke = vec4(-1.0, -1.0, -1.0, -1.0);\n if(hasStroke()) {\n vec2 valueRPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][0] = pos2value(valueRPos, columnWidth, rowHeight); // R\n textureOffset += 1.0;\n\n vec2 valueGPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][1] = pos2value(valueGPos, columnWidth, rowHeight); // G\n textureOffset += 1.0;\n\n vec2 valueBPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][2] = pos2value(valueBPos, columnWidth, rowHeight); // B\n textureOffset += 1.0;\n\n vec2 valueAPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][3] = pos2value(valueAPos, columnWidth, rowHeight); // A\n textureOffset += 1.0;\n } else {\n if(u_stroke_color == vec4(0.0)) {\n styleMappingMat[1][0] = v_color.r;\n styleMappingMat[1][1] = v_color.g;\n styleMappingMat[1][2] = v_color.b;\n styleMappingMat[1][3] = v_color.a;\n } else {\n styleMappingMat[1][0] = u_stroke_color.r;\n styleMappingMat[1][1] = u_stroke_color.g;\n styleMappingMat[1][2] = u_stroke_color.b;\n styleMappingMat[1][3] = u_stroke_color.a;\n }\n }\n\n // cal style mapping\n\n // unpack color(vec2)\n v_color = a_Color;\n\n // radius(16-bit)\n v_radius = newSize;\n\n // anti-alias\n // float antialiased_blur = -max(u_blur, antialiasblur);\n float antialiasblur = -max(2.0 / u_DevicePixelRatio / newSize, u_blur);\n\n // TODP: /abs(extrude.x) \u662F\u4E3A\u4E86\u517C\u5BB9\u5730\u7403\u6A21\u5F0F\n v_data = vec4(extrude.x/abs(extrude.x), extrude.y/abs(extrude.y), antialiasblur,shape_type);\n\n\n gl_Position = u_ViewProjectionMatrix * vec4(a_Position + extrude * newSize * 0.1, 1.0);\n\n setPickingColor(a_PickingColor);\n}\n";
20
25
  import { mat4, vec3 } from 'gl-matrix';
26
+
21
27
  var FillModel = /*#__PURE__*/function (_BaseModel) {
22
28
  _inherits(FillModel, _BaseModel);
29
+
23
30
  var _super = _createSuper(FillModel);
31
+
24
32
  function FillModel() {
25
33
  _classCallCheck(this, FillModel);
34
+
26
35
  return _super.apply(this, arguments);
27
36
  }
37
+
28
38
  _createClass(FillModel, [{
29
39
  key: "getUninforms",
30
40
  value: function getUninforms() {
31
41
  var _ref = this.layer.getLayerConfig(),
32
- _ref$opacity = _ref.opacity,
33
- opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
34
- _ref$strokeOpacity = _ref.strokeOpacity,
35
- strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
36
- _ref$strokeWidth = _ref.strokeWidth,
37
- strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
38
- _ref$stroke = _ref.stroke,
39
- stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
40
- _ref$offsets = _ref.offsets,
41
- offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
42
- blend = _ref.blend,
43
- _ref$blur = _ref.blur,
44
- blur = _ref$blur === void 0 ? 0 : _ref$blur;
42
+ _ref$opacity = _ref.opacity,
43
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
44
+ _ref$strokeOpacity = _ref.strokeOpacity,
45
+ strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
46
+ _ref$strokeWidth = _ref.strokeWidth,
47
+ strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
48
+ _ref$stroke = _ref.stroke,
49
+ stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
50
+ _ref$offsets = _ref.offsets,
51
+ offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
52
+ blend = _ref.blend,
53
+ _ref$blur = _ref.blur,
54
+ blur = _ref$blur === void 0 ? 0 : _ref$blur;
55
+
45
56
  if (this.dataTextureTest && this.dataTextureNeedUpdate({
46
57
  opacity: opacity,
47
58
  strokeOpacity: strokeOpacity,
@@ -58,10 +69,12 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
58
69
  offsets: offsets
59
70
  });
60
71
  var encodeData = this.layer.getEncodedData();
72
+
61
73
  var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
62
- data = _this$calDataFrame.data,
63
- width = _this$calDataFrame.width,
64
- height = _this$calDataFrame.height;
74
+ data = _this$calDataFrame.data,
75
+ width = _this$calDataFrame.width,
76
+ height = _this$calDataFrame.height;
77
+
65
78
  this.rowCount = height; // 当前数据纹理有多少行
66
79
 
67
80
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
@@ -80,6 +93,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
80
93
  height: 1
81
94
  });
82
95
  }
96
+
83
97
  return {
84
98
  u_blur: blur,
85
99
  u_additive: blend === 'additive' ? 1.0 : 0.0,
@@ -97,10 +111,11 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
97
111
  key: "getAnimateUniforms",
98
112
  value: function getAnimateUniforms() {
99
113
  var _ref2 = this.layer.getLayerConfig(),
100
- _ref2$animateOption = _ref2.animateOption,
101
- animateOption = _ref2$animateOption === void 0 ? {
102
- enable: false
103
- } : _ref2$animateOption;
114
+ _ref2$animateOption = _ref2.animateOption,
115
+ animateOption = _ref2$animateOption === void 0 ? {
116
+ enable: false
117
+ } : _ref2$animateOption;
118
+
104
119
  return {
105
120
  u_animate: this.animateOption2Array(animateOption),
106
121
  u_time: this.layer.getLayerAnimateTime()
@@ -111,18 +126,23 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
111
126
  value: function () {
112
127
  var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
113
128
  return _regeneratorRuntime.wrap(function _callee$(_context) {
114
- while (1) switch (_context.prev = _context.next) {
115
- case 0:
116
- return _context.abrupt("return", this.buildModels());
117
- case 1:
118
- case "end":
119
- return _context.stop();
129
+ while (1) {
130
+ switch (_context.prev = _context.next) {
131
+ case 0:
132
+ return _context.abrupt("return", this.buildModels());
133
+
134
+ case 1:
135
+ case "end":
136
+ return _context.stop();
137
+ }
120
138
  }
121
139
  }, _callee, this);
122
140
  }));
141
+
123
142
  function initModels() {
124
143
  return _initModels.apply(this, arguments);
125
144
  }
145
+
126
146
  return initModels;
127
147
  }()
128
148
  }, {
@@ -131,42 +151,48 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
131
151
  var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
132
152
  var model;
133
153
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
134
- while (1) switch (_context2.prev = _context2.next) {
135
- case 0:
136
- this.layer.triangulation = GlobelPointFillTriangulation;
137
- _context2.next = 3;
138
- return this.layer.buildLayerModel({
139
- moduleName: 'pointEarthFill',
140
- vertexShader: pointFillVert,
141
- fragmentShader: pointFillFrag,
142
- triangulation: GlobelPointFillTriangulation,
143
- depth: {
144
- enable: true
145
- },
146
- blend: this.getBlend()
147
- });
148
- case 3:
149
- model = _context2.sent;
150
- return _context2.abrupt("return", [model]);
151
- case 5:
152
- case "end":
153
- return _context2.stop();
154
+ while (1) {
155
+ switch (_context2.prev = _context2.next) {
156
+ case 0:
157
+ this.layer.triangulation = GlobelPointFillTriangulation;
158
+ _context2.next = 3;
159
+ return this.layer.buildLayerModel({
160
+ moduleName: 'pointEarthFill',
161
+ vertexShader: pointFillVert,
162
+ fragmentShader: pointFillFrag,
163
+ triangulation: GlobelPointFillTriangulation,
164
+ depth: {
165
+ enable: true
166
+ },
167
+ blend: this.getBlend()
168
+ });
169
+
170
+ case 3:
171
+ model = _context2.sent;
172
+ return _context2.abrupt("return", [model]);
173
+
174
+ case 5:
175
+ case "end":
176
+ return _context2.stop();
177
+ }
154
178
  }
155
179
  }, _callee2, this);
156
180
  }));
181
+
157
182
  function buildModels() {
158
183
  return _buildModels.apply(this, arguments);
159
184
  }
185
+
160
186
  return buildModels;
161
187
  }()
162
188
  }, {
163
189
  key: "clearModels",
164
190
  value: function clearModels() {
165
191
  var _this$dataTexture;
192
+
166
193
  (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
167
- }
194
+ } // overwrite baseModel func
168
195
 
169
- // overwrite baseModel func
170
196
  }, {
171
197
  key: "animateOption2Array",
172
198
  value: function animateOption2Array(option) {
@@ -176,6 +202,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
176
202
  key: "registerBuiltinAttributes",
177
203
  value: function registerBuiltinAttributes() {
178
204
  var _this = this;
205
+
179
206
  this.styleAttributeService.registerStyleAttribute({
180
207
  name: 'extrude',
181
208
  type: AttributeType.Attribute,
@@ -190,9 +217,10 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
190
217
  size: 3,
191
218
  update: function update(feature, featureIdx, vertex, attributeIdx) {
192
219
  var _vertex = _slicedToArray(vertex, 3),
193
- x = _vertex[0],
194
- y = _vertex[1],
195
- z = _vertex[2];
220
+ x = _vertex[0],
221
+ y = _vertex[1],
222
+ z = _vertex[2];
223
+
196
224
  var n1 = vec3.fromValues(0, 0, 1);
197
225
  var n2 = vec3.fromValues(x, 0, z);
198
226
  var xzReg = x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);
@@ -217,9 +245,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
217
245
  return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
218
246
  }
219
247
  }
220
- });
248
+ }); // point layer size;
221
249
 
222
- // point layer size;
223
250
  this.styleAttributeService.registerStyleAttribute({
224
251
  name: 'size',
225
252
  type: AttributeType.Attribute,
@@ -234,13 +261,12 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
234
261
  size: 1,
235
262
  update: function update(feature) {
236
263
  var _feature$size = feature.size,
237
- size = _feature$size === void 0 ? 5 : _feature$size;
264
+ size = _feature$size === void 0 ? 5 : _feature$size;
238
265
  return Array.isArray(size) ? [size[0]] : [size];
239
266
  }
240
267
  }
241
- });
268
+ }); // point layer size;
242
269
 
243
- // point layer size;
244
270
  this.styleAttributeService.registerStyleAttribute({
245
271
  name: 'shape',
246
272
  type: AttributeType.Attribute,
@@ -255,8 +281,10 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
255
281
  size: 1,
256
282
  update: function update(feature) {
257
283
  var _feature$shape = feature.shape,
258
- shape = _feature$shape === void 0 ? 2 : _feature$shape;
284
+ shape = _feature$shape === void 0 ? 2 : _feature$shape;
285
+
259
286
  var shape2d = _this.layer.getLayerConfig().shape2d;
287
+
260
288
  var shapeIndex = shape2d.indexOf(shape);
261
289
  return [shapeIndex];
262
290
  }
@@ -264,6 +292,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
264
292
  });
265
293
  }
266
294
  }]);
295
+
267
296
  return FillModel;
268
297
  }(BaseModel);
298
+
269
299
  export { FillModel as default };