@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,56 +7,72 @@ 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";
20
+
17
21
  /* babel-plugin-inline-import '../shaders/extrude/extrude_frag.glsl' */
18
22
  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";
23
+
19
24
  /* babel-plugin-inline-import '../shaders/extrude/extrude_vert.glsl' */
20
25
  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_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 // gl_Position = project_common_position_to_clipspace(pos);\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * pos;\n } else {\n gl_Position = project_common_position_to_clipspace(pos);\n }\n\n setPickingColor(a_PickingColor);\n}\n";
26
+
21
27
  var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
22
28
  _inherits(ExtrudeModel, _BaseModel);
29
+
23
30
  var _super = _createSuper(ExtrudeModel);
31
+
24
32
  function ExtrudeModel() {
25
33
  var _this;
34
+
26
35
  _classCallCheck(this, ExtrudeModel);
36
+
27
37
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
38
  args[_key] = arguments[_key];
29
39
  }
40
+
30
41
  _this = _super.call.apply(_super, [this].concat(args));
42
+
31
43
  _defineProperty(_assertThisInitialized(_this), "raiseCount", 0);
44
+
32
45
  _defineProperty(_assertThisInitialized(_this), "raiseRepeat", 0);
46
+
33
47
  return _this;
34
48
  }
49
+
35
50
  _createClass(ExtrudeModel, [{
36
51
  key: "getUninforms",
37
52
  value: function getUninforms() {
38
53
  var _ref = this.layer.getLayerConfig(),
39
- _ref$animateOption = _ref.animateOption,
40
- animateOption = _ref$animateOption === void 0 ? {
41
- enable: false,
42
- speed: 0.01,
43
- repeat: false
44
- } : _ref$animateOption,
45
- _ref$opacity = _ref.opacity,
46
- opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
47
- sourceColor = _ref.sourceColor,
48
- targetColor = _ref.targetColor,
49
- _ref$pickLight = _ref.pickLight,
50
- pickLight = _ref$pickLight === void 0 ? false : _ref$pickLight,
51
- _ref$heightfixed = _ref.heightfixed,
52
- heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
53
- _ref$opacityLinear = _ref.opacityLinear,
54
- opacityLinear = _ref$opacityLinear === void 0 ? {
55
- enable: false,
56
- dir: 'up'
57
- } : _ref$opacityLinear,
58
- _ref$lightEnable = _ref.lightEnable,
59
- lightEnable = _ref$lightEnable === void 0 ? true : _ref$lightEnable;
54
+ _ref$animateOption = _ref.animateOption,
55
+ animateOption = _ref$animateOption === void 0 ? {
56
+ enable: false,
57
+ speed: 0.01,
58
+ repeat: false
59
+ } : _ref$animateOption,
60
+ _ref$opacity = _ref.opacity,
61
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
62
+ sourceColor = _ref.sourceColor,
63
+ targetColor = _ref.targetColor,
64
+ _ref$pickLight = _ref.pickLight,
65
+ pickLight = _ref$pickLight === void 0 ? false : _ref$pickLight,
66
+ _ref$heightfixed = _ref.heightfixed,
67
+ heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
68
+ _ref$opacityLinear = _ref.opacityLinear,
69
+ opacityLinear = _ref$opacityLinear === void 0 ? {
70
+ enable: false,
71
+ dir: 'up'
72
+ } : _ref$opacityLinear,
73
+ _ref$lightEnable = _ref.lightEnable,
74
+ lightEnable = _ref$lightEnable === void 0 ? true : _ref$lightEnable;
75
+
60
76
  if (this.dataTextureTest && this.dataTextureNeedUpdate({
61
77
  opacity: opacity
62
78
  })) {
@@ -64,10 +80,12 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
64
80
  opacity: opacity
65
81
  });
66
82
  var encodeData = this.layer.getEncodedData();
83
+
67
84
  var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
68
- data = _this$calDataFrame.data,
69
- width = _this$calDataFrame.width,
70
- height = _this$calDataFrame.height;
85
+ data = _this$calDataFrame.data,
86
+ width = _this$calDataFrame.width,
87
+ height = _this$calDataFrame.height;
88
+
71
89
  this.rowCount = height; // 当前数据纹理有多少行
72
90
 
73
91
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
@@ -85,22 +103,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
85
103
  width: 1,
86
104
  height: 1
87
105
  });
88
- }
106
+ } // 转化渐变色
107
+
89
108
 
90
- // 转化渐变色
91
109
  var useLinearColor = 0; // 默认不生效
110
+
92
111
  var sourceColorArr = [0, 0, 0, 0];
93
112
  var targetColorArr = [0, 0, 0, 0];
113
+
94
114
  if (sourceColor && targetColor) {
95
115
  sourceColorArr = rgb2arr(sourceColor);
96
116
  targetColorArr = rgb2arr(targetColor);
97
117
  useLinearColor = 1;
98
118
  }
119
+
99
120
  if (this.raiseCount < 1 && this.raiseRepeat > 0) {
100
121
  if (animateOption.enable) {
101
122
  var _animateOption$speed = animateOption.speed,
102
- speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed;
123
+ speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed;
103
124
  this.raiseCount += speed;
125
+
104
126
  if (this.raiseCount >= 1) {
105
127
  if (this.raiseRepeat > 1) {
106
128
  this.raiseCount = 0;
@@ -111,6 +133,7 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
111
133
  }
112
134
  }
113
135
  }
136
+
114
137
  return {
115
138
  // 圆柱体的拾取高亮是否要计算光照
116
139
  u_pickLight: Number(pickLight),
@@ -137,18 +160,23 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
137
160
  value: function () {
138
161
  var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
139
162
  return _regeneratorRuntime.wrap(function _callee$(_context) {
140
- while (1) switch (_context.prev = _context.next) {
141
- case 0:
142
- return _context.abrupt("return", this.buildModels());
143
- case 1:
144
- case "end":
145
- return _context.stop();
163
+ while (1) {
164
+ switch (_context.prev = _context.next) {
165
+ case 0:
166
+ return _context.abrupt("return", this.buildModels());
167
+
168
+ case 1:
169
+ case "end":
170
+ return _context.stop();
171
+ }
146
172
  }
147
173
  }, _callee, this);
148
174
  }));
175
+
149
176
  function initModels() {
150
177
  return _initModels.apply(this, arguments);
151
178
  }
179
+
152
180
  return initModels;
153
181
  }()
154
182
  }, {
@@ -156,44 +184,52 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
156
184
  value: function () {
157
185
  var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
158
186
  var _ref2, _ref2$depth, depth, _ref2$animateOption$r, repeat, model;
187
+
159
188
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
160
- while (1) switch (_context2.prev = _context2.next) {
161
- case 0:
162
- // GAODE1.x GAODE2.x MAPBOX
163
- _ref2 = this.layer.getLayerConfig(), _ref2$depth = _ref2.depth, depth = _ref2$depth === void 0 ? true : _ref2$depth, _ref2$animateOption$r = _ref2.animateOption.repeat, repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
164
- this.raiseRepeat = repeat;
165
- _context2.next = 4;
166
- return this.layer.buildLayerModel({
167
- moduleName: 'pointExtrude',
168
- vertexShader: pointExtrudeVert,
169
- fragmentShader: pointExtrudeFrag,
170
- triangulation: PointExtrudeTriangulation,
171
- cull: {
172
- enable: true,
173
- face: getCullFace(this.mapService.version)
174
- },
175
- depth: {
176
- enable: depth
177
- }
178
- });
179
- case 4:
180
- model = _context2.sent;
181
- return _context2.abrupt("return", [model]);
182
- case 6:
183
- case "end":
184
- return _context2.stop();
189
+ while (1) {
190
+ switch (_context2.prev = _context2.next) {
191
+ case 0:
192
+ // GAODE1.x GAODE2.x MAPBOX
193
+ _ref2 = this.layer.getLayerConfig(), _ref2$depth = _ref2.depth, depth = _ref2$depth === void 0 ? true : _ref2$depth, _ref2$animateOption$r = _ref2.animateOption.repeat, repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
194
+ this.raiseRepeat = repeat;
195
+ _context2.next = 4;
196
+ return this.layer.buildLayerModel({
197
+ moduleName: 'pointExtrude',
198
+ vertexShader: pointExtrudeVert,
199
+ fragmentShader: pointExtrudeFrag,
200
+ triangulation: PointExtrudeTriangulation,
201
+ cull: {
202
+ enable: true,
203
+ face: getCullFace(this.mapService.version)
204
+ },
205
+ depth: {
206
+ enable: depth
207
+ }
208
+ });
209
+
210
+ case 4:
211
+ model = _context2.sent;
212
+ return _context2.abrupt("return", [model]);
213
+
214
+ case 6:
215
+ case "end":
216
+ return _context2.stop();
217
+ }
185
218
  }
186
219
  }, _callee2, this);
187
220
  }));
221
+
188
222
  function buildModels() {
189
223
  return _buildModels.apply(this, arguments);
190
224
  }
225
+
191
226
  return buildModels;
192
227
  }()
193
228
  }, {
194
229
  key: "clearModels",
195
230
  value: function clearModels() {
196
231
  var _this$dataTexture;
232
+
197
233
  (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
198
234
  }
199
235
  }, {
@@ -213,23 +249,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
213
249
  size: 3,
214
250
  update: function update(feature) {
215
251
  var size = feature.size;
252
+
216
253
  if (size) {
217
254
  var buffersize = [];
255
+
218
256
  if (Array.isArray(size)) {
219
257
  buffersize = size.length === 2 ? [size[0], size[0], size[1]] : size;
220
258
  }
259
+
221
260
  if (!Array.isArray(size)) {
222
261
  buffersize = [size, size, size];
223
262
  }
263
+
224
264
  return buffersize;
225
265
  } else {
226
266
  return [2, 2, 2];
227
267
  }
228
268
  }
229
269
  }
230
- });
270
+ }); // point layer size;
231
271
 
232
- // point layer size;
233
272
  this.styleAttributeService.registerStyleAttribute({
234
273
  name: 'normal',
235
274
  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 };
@@ -5,50 +5,61 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
6
6
  import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
7
7
  import _regeneratorRuntime from "@babel/runtime/regenerator";
8
+
8
9
  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); }; }
10
+
9
11
  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; } }
12
+
10
13
  import { AttributeType, gl } from '@antv/l7-core';
11
14
  import { PointFillTriangulation } from '@antv/l7-utils';
12
15
  import { isNumber } from 'lodash';
13
16
  import BaseModel from "../../core/BaseModel";
14
- import { SizeUnitType } from "../../core/interface";
15
- // animate pointLayer shader - support animate
17
+ import { SizeUnitType } from "../../core/interface"; // animate pointLayer shader - support animate
18
+
16
19
  /* babel-plugin-inline-import '../shaders/animate/wave_frag.glsl' */
17
20
  var waveFillFrag = "\nuniform 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;\nuniform float u_time;\nuniform vec4 u_animate: [ 1., 2., 1.0, 0.2 ];\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\nvoid main() {\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\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius);\n\n float outer_df;\n float inner_df;\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\n \n outer_df = sdCircle(v_data.xy, 1.0);\n inner_df = sdCircle(v_data.xy, r);\n\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n float color_t = smoothstep(\n antialiasblur,\n 0.0,\n inner_df\n );\n float PI = 3.14159;\n float N_RINGS = 3.0;\n float FREQ = 1.0;\n\n gl_FragColor = vec4(v_color.rgb, v_color.a * opacity);\n\n float d = length(v_data.xy);\n if(d > 0.5) {\n discard;\n }\n float intensity = clamp(cos(d * PI), 0.0, 1.0) * clamp(cos(2.0 * PI * (d * 2.0 * u_animate.z - u_animate.y * u_time)), 0.0, 1.0);\n \n // \u6839\u636E\u53E0\u52A0\u6A21\u5F0F\u9009\u62E9\u6548\u679C\n if(u_additive > 0.0) {\n gl_FragColor *= intensity;\n // \u4F18\u5316\u6C34\u6CE2\u70B9 blend additive \u6A21\u5F0F\u4E0B\u6709\u7684\u62FE\u53D6\u6548\u679C \n gl_FragColor = filterColorAlpha(gl_FragColor, gl_FragColor.a);\n } else {\n gl_FragColor = vec4(gl_FragColor.xyz, gl_FragColor.a * intensity);\n gl_FragColor = filterColor(gl_FragColor);\n }\n}\n"; // static pointLayer shader - not support animate
21
+
18
22
  /* babel-plugin-inline-import '../shaders/fill_frag.glsl' */
19
23
  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 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 // \u4F5C\u4E3A mask \u6A21\u677F\u65F6\u9700\u8981\u4E22\u5F03\u900F\u660E\u7684\u50CF\u7D20\n if(gl_FragColor.a < 0.01) {\n discard;\n } \n}\n";
24
+
20
25
  /* babel-plugin-inline-import '../shaders/fill_vert.glsl' */
21
26
  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;\nuniform int u_Size_Unit;\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;\nuniform float u_raisingHeight: 0.0;\nuniform float u_heightfixed: 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 * u_meter2coord \u5728\u7B49\u9762\u79EF\u5927\u5C0F\u7684\u65F6\u5019\u8BBE\u7F6E\u5355\u4F4D\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 vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // unpack color(vec2)\n v_color = a_Color;\nif(u_Size_Unit == 1) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n\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 vec2 offset = (extrude.xy * (newSize + u_stroke_width) + textrueOffsets);\n vec3 aPosition = a_Position;\n\n offset = project_pixel(offset);\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 // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n float raisingHeight = u_raisingHeight;\n\n if(u_heightfixed < 1.0) { // false\n raisingHeight = project_pixel(u_raisingHeight);\n } else {\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raisingHeight = u_raisingHeight * mapboxZoomScale;\n }\n }\n \n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, raisingHeight, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, raisingHeight, 1.0));\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
27
+
22
28
  var FillModel = /*#__PURE__*/function (_BaseModel) {
23
29
  _inherits(FillModel, _BaseModel);
30
+
24
31
  var _super = _createSuper(FillModel);
32
+
25
33
  function FillModel() {
26
34
  _classCallCheck(this, FillModel);
35
+
27
36
  return _super.apply(this, arguments);
28
37
  }
38
+
29
39
  _createClass(FillModel, [{
30
40
  key: "getUninforms",
31
41
  value: function getUninforms() {
32
42
  var _ref = this.layer.getLayerConfig(),
33
- _ref$opacity = _ref.opacity,
34
- opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
35
- _ref$strokeOpacity = _ref.strokeOpacity,
36
- strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
37
- _ref$strokeWidth = _ref.strokeWidth,
38
- strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
39
- _ref$stroke = _ref.stroke,
40
- stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
41
- _ref$offsets = _ref.offsets,
42
- offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
43
- blend = _ref.blend,
44
- _ref$blur = _ref.blur,
45
- blur = _ref$blur === void 0 ? 0 : _ref$blur,
46
- _ref$raisingHeight = _ref.raisingHeight,
47
- raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
48
- _ref$heightfixed = _ref.heightfixed,
49
- heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
50
- _ref$unit = _ref.unit,
51
- unit = _ref$unit === void 0 ? 'pixel' : _ref$unit;
43
+ _ref$opacity = _ref.opacity,
44
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
45
+ _ref$strokeOpacity = _ref.strokeOpacity,
46
+ strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
47
+ _ref$strokeWidth = _ref.strokeWidth,
48
+ strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
49
+ _ref$stroke = _ref.stroke,
50
+ stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
51
+ _ref$offsets = _ref.offsets,
52
+ offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
53
+ blend = _ref.blend,
54
+ _ref$blur = _ref.blur,
55
+ blur = _ref$blur === void 0 ? 0 : _ref$blur,
56
+ _ref$raisingHeight = _ref.raisingHeight,
57
+ raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
58
+ _ref$heightfixed = _ref.heightfixed,
59
+ heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
60
+ _ref$unit = _ref.unit,
61
+ unit = _ref$unit === void 0 ? 'pixel' : _ref$unit;
62
+
52
63
  if (this.dataTextureTest && this.dataTextureNeedUpdate({
53
64
  opacity: opacity,
54
65
  strokeOpacity: strokeOpacity,
@@ -65,11 +76,14 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
65
76
  offsets: offsets
66
77
  });
67
78
  var encodeData = this.layer.getEncodedData();
79
+
68
80
  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;
81
+ data = _this$calDataFrame.data,
82
+ width = _this$calDataFrame.width,
83
+ height = _this$calDataFrame.height;
84
+
72
85
  this.rowCount = height; // 当前数据纹理有多少行
86
+
73
87
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
74
88
  flipY: true,
75
89
  data: data,
@@ -86,6 +100,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
86
100
  height: 1
87
101
  });
88
102
  }
103
+
89
104
  return {
90
105
  u_raisingHeight: Number(raisingHeight),
91
106
  u_heightfixed: Number(heightfixed),
@@ -106,10 +121,11 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
106
121
  key: "getAnimateUniforms",
107
122
  value: function getAnimateUniforms() {
108
123
  var _ref2 = this.layer.getLayerConfig(),
109
- _ref2$animateOption = _ref2.animateOption,
110
- animateOption = _ref2$animateOption === void 0 ? {
111
- enable: false
112
- } : _ref2$animateOption;
124
+ _ref2$animateOption = _ref2.animateOption,
125
+ animateOption = _ref2$animateOption === void 0 ? {
126
+ enable: false
127
+ } : _ref2$animateOption;
128
+
113
129
  return {
114
130
  u_animate: this.animateOption2Array(animateOption),
115
131
  u_time: this.layer.getLayerAnimateTime()
@@ -125,18 +141,23 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
125
141
  value: function () {
126
142
  var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
127
143
  return _regeneratorRuntime.wrap(function _callee$(_context) {
128
- while (1) switch (_context.prev = _context.next) {
129
- case 0:
130
- return _context.abrupt("return", this.buildModels());
131
- case 1:
132
- case "end":
133
- return _context.stop();
144
+ while (1) {
145
+ switch (_context.prev = _context.next) {
146
+ case 0:
147
+ return _context.abrupt("return", this.buildModels());
148
+
149
+ case 1:
150
+ case "end":
151
+ return _context.stop();
152
+ }
134
153
  }
135
154
  }, _callee, this);
136
155
  }));
156
+
137
157
  function initModels() {
138
158
  return _initModels.apply(this, arguments);
139
159
  }
160
+
140
161
  return initModels;
141
162
  }()
142
163
  }, {
@@ -144,48 +165,56 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
144
165
  value: function () {
145
166
  var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
146
167
  var _ref3, _ref3$animateOption, animateOption, _ref3$workerEnabled, workerEnabled, enablePicking, shape2d, _this$getShaders, frag, vert, type, model;
168
+
147
169
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
148
- while (1) switch (_context2.prev = _context2.next) {
149
- case 0:
150
- _ref3 = this.layer.getLayerConfig(), _ref3$animateOption = _ref3.animateOption, animateOption = _ref3$animateOption === void 0 ? {
151
- enable: false
152
- } : _ref3$animateOption, _ref3$workerEnabled = _ref3.workerEnabled, workerEnabled = _ref3$workerEnabled === void 0 ? false : _ref3$workerEnabled, enablePicking = _ref3.enablePicking, shape2d = _ref3.shape2d;
153
- _this$getShaders = this.getShaders(animateOption), frag = _this$getShaders.frag, vert = _this$getShaders.vert, type = _this$getShaders.type;
154
- this.layer.triangulation = PointFillTriangulation;
155
- _context2.next = 5;
156
- return this.layer.buildLayerModel({
157
- moduleName: type,
158
- vertexShader: vert,
159
- fragmentShader: frag,
160
- triangulation: PointFillTriangulation,
161
- depth: {
170
+ while (1) {
171
+ switch (_context2.prev = _context2.next) {
172
+ case 0:
173
+ _ref3 = this.layer.getLayerConfig(), _ref3$animateOption = _ref3.animateOption, animateOption = _ref3$animateOption === void 0 ? {
162
174
  enable: false
163
- },
164
- workerEnabled: workerEnabled,
165
- workerOptions: {
166
- modelType: type,
167
- enablePicking: enablePicking,
168
- shape2d: shape2d
169
- }
170
- });
171
- case 5:
172
- model = _context2.sent;
173
- return _context2.abrupt("return", [model]);
174
- case 7:
175
- case "end":
176
- return _context2.stop();
175
+ } : _ref3$animateOption, _ref3$workerEnabled = _ref3.workerEnabled, workerEnabled = _ref3$workerEnabled === void 0 ? false : _ref3$workerEnabled, enablePicking = _ref3.enablePicking, shape2d = _ref3.shape2d;
176
+ _this$getShaders = this.getShaders(animateOption), frag = _this$getShaders.frag, vert = _this$getShaders.vert, type = _this$getShaders.type;
177
+ this.layer.triangulation = PointFillTriangulation;
178
+ _context2.next = 5;
179
+ return this.layer.buildLayerModel({
180
+ moduleName: type,
181
+ vertexShader: vert,
182
+ fragmentShader: frag,
183
+ triangulation: PointFillTriangulation,
184
+ depth: {
185
+ enable: false
186
+ },
187
+ workerEnabled: workerEnabled,
188
+ workerOptions: {
189
+ modelType: type,
190
+ enablePicking: enablePicking,
191
+ shape2d: shape2d
192
+ }
193
+ });
194
+
195
+ case 5:
196
+ model = _context2.sent;
197
+ return _context2.abrupt("return", [model]);
198
+
199
+ case 7:
200
+ case "end":
201
+ return _context2.stop();
202
+ }
177
203
  }
178
204
  }, _callee2, this);
179
205
  }));
206
+
180
207
  function buildModels() {
181
208
  return _buildModels.apply(this, arguments);
182
209
  }
210
+
183
211
  return buildModels;
184
212
  }()
185
213
  /**
186
214
  * 根据 animateOption 的值返回对应的 shader 代码
187
215
  * @returns
188
216
  */
217
+
189
218
  }, {
190
219
  key: "getShaders",
191
220
  value: function getShaders(animateOption) {
@@ -197,6 +226,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
197
226
  vert: pointFillVert,
198
227
  type: 'pointWave'
199
228
  };
229
+
200
230
  default:
201
231
  return {
202
232
  frag: waveFillFrag,
@@ -216,10 +246,10 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
216
246
  key: "clearModels",
217
247
  value: function clearModels() {
218
248
  var _this$dataTexture;
249
+
219
250
  (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
220
- }
251
+ } // overwrite baseModel func
221
252
 
222
- // overwrite baseModel func
223
253
  }, {
224
254
  key: "animateOption2Array",
225
255
  value: function animateOption2Array(option) {
@@ -247,9 +277,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
247
277
  return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
248
278
  }
249
279
  }
250
- });
280
+ }); // point layer size;
251
281
 
252
- // point layer size;
253
282
  this.styleAttributeService.registerStyleAttribute({
254
283
  name: 'size',
255
284
  type: AttributeType.Attribute,
@@ -264,13 +293,12 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
264
293
  size: 1,
265
294
  update: function update(feature) {
266
295
  var _feature$size = feature.size,
267
- size = _feature$size === void 0 ? 5 : _feature$size;
296
+ size = _feature$size === void 0 ? 5 : _feature$size;
268
297
  return Array.isArray(size) ? [size[0]] : [size];
269
298
  }
270
299
  }
271
- });
300
+ }); // point layer size;
272
301
 
273
- // point layer size;
274
302
  this.styleAttributeService.registerStyleAttribute({
275
303
  name: 'shape',
276
304
  type: AttributeType.Attribute,
@@ -285,7 +313,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
285
313
  size: 1,
286
314
  update: function update(feature) {
287
315
  var _feature$shape = feature.shape,
288
- shape = _feature$shape === void 0 ? 2 : _feature$shape;
316
+ shape = _feature$shape === void 0 ? 2 : _feature$shape;
289
317
  var shapeIndex = shape2d.indexOf(shape);
290
318
  return [shapeIndex];
291
319
  }
@@ -293,6 +321,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
293
321
  });
294
322
  }
295
323
  }]);
324
+
296
325
  return FillModel;
297
326
  }(BaseModel);
327
+
298
328
  export { FillModel as default };