@antv/l7-layers 2.15.2 → 2.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/es/Geometry/index.js +9 -31
  2. package/es/Geometry/models/billboard.js +51 -89
  3. package/es/Geometry/models/plane.js +81 -143
  4. package/es/Geometry/models/sprite.js +60 -118
  5. package/es/canvas/index.js +10 -33
  6. package/es/canvas/models/canvas.js +41 -97
  7. package/es/citybuliding/building.js +8 -27
  8. package/es/citybuliding/models/build.js +57 -82
  9. package/es/core/BaseLayer.js +320 -484
  10. package/es/core/BaseModel.js +97 -126
  11. package/es/core/LayerPickService.js +21 -32
  12. package/es/core/TextureService.js +0 -13
  13. package/es/core/interface.js +17 -24
  14. package/es/core/shape/Path.js +13 -20
  15. package/es/core/shape/extrude.js +10 -31
  16. package/es/core/triangulation.js +54 -114
  17. package/es/earth/index.js +9 -33
  18. package/es/earth/models/atmosphere.js +30 -54
  19. package/es/earth/models/base.js +47 -85
  20. package/es/earth/models/bloomsphere.js +30 -54
  21. package/es/earth/utils.js +9 -13
  22. package/es/heatmap/index.js +10 -40
  23. package/es/heatmap/models/grid.js +28 -52
  24. package/es/heatmap/models/grid3d.js +28 -52
  25. package/es/heatmap/models/heatmap.js +91 -146
  26. package/es/heatmap/models/hexagon.js +28 -52
  27. package/es/heatmap/triangulation.js +0 -4
  28. package/es/image/index.js +9 -28
  29. package/es/image/models/image.js +66 -100
  30. package/es/index.js +9 -17
  31. package/es/line/index.js +9 -34
  32. package/es/line/models/arc.js +66 -118
  33. package/es/line/models/arc_3d.js +60 -108
  34. package/es/line/models/earthArc_3d.js +63 -111
  35. package/es/line/models/great_circle.js +56 -100
  36. package/es/line/models/half.js +46 -77
  37. package/es/line/models/line.js +94 -148
  38. package/es/line/models/linearline.js +45 -80
  39. package/es/line/models/simpleLine.js +41 -74
  40. package/es/line/models/wall.js +52 -92
  41. package/es/mask/index.js +9 -28
  42. package/es/mask/models/fill.js +29 -54
  43. package/es/plugins/DataMappingPlugin.js +80 -117
  44. package/es/plugins/DataSourcePlugin.js +45 -68
  45. package/es/plugins/FeatureScalePlugin.js +67 -122
  46. package/es/plugins/LayerAnimateStylePlugin.js +0 -5
  47. package/es/plugins/LayerMaskPlugin.js +3 -11
  48. package/es/plugins/LayerModelPlugin.js +67 -104
  49. package/es/plugins/LayerStylePlugin.js +3 -9
  50. package/es/plugins/LightingPlugin.js +12 -18
  51. package/es/plugins/MultiPassRendererPlugin.js +11 -16
  52. package/es/plugins/PixelPickingPlugin.js +12 -21
  53. package/es/plugins/RegisterStyleAttributePlugin.js +5 -12
  54. package/es/plugins/ShaderUniformPlugin.js +13 -27
  55. package/es/plugins/UpdateModelPlugin.js +0 -5
  56. package/es/plugins/UpdateStyleAttributePlugin.js +5 -11
  57. package/es/point/index.js +26 -77
  58. package/es/point/models/earthExtrude.js +61 -102
  59. package/es/point/models/earthFill.js +57 -87
  60. package/es/point/models/extrude.js +60 -101
  61. package/es/point/models/fill.js +70 -100
  62. package/es/point/models/fillmage.js +63 -107
  63. package/es/point/models/image.js +48 -88
  64. package/es/point/models/index.js +2 -2
  65. package/es/point/models/normal.js +30 -54
  66. package/es/point/models/radar.js +40 -64
  67. package/es/point/models/simplePoint.js +41 -69
  68. package/es/point/models/text.js +197 -299
  69. package/es/point/shape/extrude.js +4 -13
  70. package/es/polygon/index.js +11 -40
  71. package/es/polygon/models/extrude.js +48 -92
  72. package/es/polygon/models/fill.js +54 -88
  73. package/es/polygon/models/index.js +3 -2
  74. package/es/polygon/models/ocean.js +42 -76
  75. package/es/polygon/models/water.js +37 -71
  76. package/es/raster/buffers/triangulation.js +2 -4
  77. package/es/raster/index.js +9 -32
  78. package/es/raster/models/raster.js +80 -116
  79. package/es/raster/models/rasterRgb.js +84 -127
  80. package/es/raster/models/rasterTerrainRgb.js +56 -84
  81. package/es/tile/interaction/getRasterData.js +14 -20
  82. package/es/tile/interaction/utils.js +7 -9
  83. package/es/tile/manager/base.js +63 -96
  84. package/es/tile/service/TileLayerService.js +30 -52
  85. package/es/tile/service/TilePickService.js +26 -40
  86. package/es/tile/service/TileSourceService.js +3 -7
  87. package/es/tile/tileFactory/DebugTile.js +28 -45
  88. package/es/tile/tileFactory/ImageTile.js +20 -38
  89. package/es/tile/tileFactory/MaskTile.js +22 -43
  90. package/es/tile/tileFactory/RasterRGBTile.js +22 -42
  91. package/es/tile/tileFactory/RasterTerrainRGBTile.js +20 -38
  92. package/es/tile/tileFactory/RasterTile.js +30 -53
  93. package/es/tile/tileFactory/Tile.js +63 -97
  94. package/es/tile/tileFactory/VectorTile.js +41 -68
  95. package/es/tile/tileFactory/index.js +0 -11
  96. package/es/tile/tileFactory/layers/TileDebugLayer.js +6 -27
  97. package/es/tile/tileFactory/util.js +0 -3
  98. package/es/tile/tileLayer/BaseLayer.js +105 -146
  99. package/es/tile/utils.js +1 -1
  100. package/es/utils/blend.js +0 -2
  101. package/es/utils/collision-index.js +9 -16
  102. package/es/utils/dataMappingStyle.js +8 -18
  103. package/es/utils/extrude_polyline.js +101 -149
  104. package/es/utils/grid-index.js +2 -27
  105. package/es/utils/identityScale.js +0 -8
  106. package/es/utils/layerData.js +30 -44
  107. package/es/utils/multiPassRender.js +11 -13
  108. package/es/utils/polylineNormal.js +31 -37
  109. package/es/utils/simpleLine.js +2 -16
  110. package/es/utils/stencil.js +2 -3
  111. package/es/utils/symbol-layout.js +27 -53
  112. package/es/wind/index.js +9 -29
  113. package/es/wind/models/utils.js +26 -51
  114. package/es/wind/models/wind.js +101 -147
  115. package/es/wind/models/windRender.js +53 -66
  116. package/lib/Geometry/index.js +9 -38
  117. package/lib/Geometry/models/billboard.js +51 -97
  118. package/lib/Geometry/models/index.js +0 -5
  119. package/lib/Geometry/models/plane.js +79 -151
  120. package/lib/Geometry/models/sprite.js +60 -127
  121. package/lib/canvas/index.js +10 -40
  122. package/lib/canvas/models/canvas.js +41 -101
  123. package/lib/canvas/models/index.js +0 -3
  124. package/lib/citybuliding/building.js +8 -35
  125. package/lib/citybuliding/models/build.js +57 -92
  126. package/lib/core/BaseLayer.js +320 -478
  127. package/lib/core/BaseModel.js +97 -139
  128. package/lib/core/LayerPickService.js +21 -37
  129. package/lib/core/TextureService.js +0 -16
  130. package/lib/core/interface.js +21 -31
  131. package/lib/core/schema.js +0 -1
  132. package/lib/core/shape/Path.js +14 -31
  133. package/lib/core/shape/extrude.js +10 -54
  134. package/lib/core/triangulation.js +53 -153
  135. package/lib/earth/index.js +9 -43
  136. package/lib/earth/models/atmosphere.js +30 -63
  137. package/lib/earth/models/base.js +47 -90
  138. package/lib/earth/models/bloomsphere.js +30 -63
  139. package/lib/earth/utils.js +7 -31
  140. package/lib/heatmap/index.js +10 -48
  141. package/lib/heatmap/models/grid.js +28 -60
  142. package/lib/heatmap/models/grid3d.js +28 -60
  143. package/lib/heatmap/models/heatmap.js +91 -162
  144. package/lib/heatmap/models/hexagon.js +28 -60
  145. package/lib/heatmap/models/index.js +0 -6
  146. package/lib/heatmap/triangulation.js +0 -5
  147. package/lib/image/index.js +9 -36
  148. package/lib/image/models/image.js +66 -109
  149. package/lib/image/models/index.js +0 -3
  150. package/lib/index.js +7 -61
  151. package/lib/line/index.js +9 -40
  152. package/lib/line/models/arc.js +64 -128
  153. package/lib/line/models/arc_3d.js +58 -119
  154. package/lib/line/models/earthArc_3d.js +61 -122
  155. package/lib/line/models/great_circle.js +56 -111
  156. package/lib/line/models/half.js +46 -87
  157. package/lib/line/models/index.js +0 -11
  158. package/lib/line/models/line.js +92 -156
  159. package/lib/line/models/linearline.js +45 -92
  160. package/lib/line/models/simpleLine.js +41 -84
  161. package/lib/line/models/wall.js +52 -103
  162. package/lib/mask/index.js +9 -36
  163. package/lib/mask/models/fill.js +29 -63
  164. package/lib/mask/models/index.js +0 -3
  165. package/lib/plugins/DataMappingPlugin.js +80 -128
  166. package/lib/plugins/DataSourcePlugin.js +45 -76
  167. package/lib/plugins/FeatureScalePlugin.js +67 -138
  168. package/lib/plugins/LayerAnimateStylePlugin.js +0 -10
  169. package/lib/plugins/LayerMaskPlugin.js +4 -17
  170. package/lib/plugins/LayerModelPlugin.js +68 -113
  171. package/lib/plugins/LayerStylePlugin.js +4 -14
  172. package/lib/plugins/LightingPlugin.js +12 -25
  173. package/lib/plugins/MultiPassRendererPlugin.js +11 -22
  174. package/lib/plugins/PixelPickingPlugin.js +12 -27
  175. package/lib/plugins/RegisterStyleAttributePlugin.js +5 -19
  176. package/lib/plugins/ShaderUniformPlugin.js +13 -34
  177. package/lib/plugins/UpdateModelPlugin.js +1 -10
  178. package/lib/plugins/UpdateStyleAttributePlugin.js +5 -16
  179. package/lib/point/index.js +26 -83
  180. package/lib/point/models/earthExtrude.js +61 -113
  181. package/lib/point/models/earthFill.js +57 -117
  182. package/lib/point/models/extrude.js +60 -111
  183. package/lib/point/models/fill.js +68 -109
  184. package/lib/point/models/fillmage.js +61 -115
  185. package/lib/point/models/image.js +48 -98
  186. package/lib/point/models/index.js +1 -12
  187. package/lib/point/models/normal.js +30 -64
  188. package/lib/point/models/radar.js +40 -74
  189. package/lib/point/models/simplePoint.js +41 -79
  190. package/lib/point/models/text.js +197 -307
  191. package/lib/point/shape/extrude.js +4 -20
  192. package/lib/polygon/index.js +11 -48
  193. package/lib/polygon/models/extrude.js +48 -103
  194. package/lib/polygon/models/fill.js +54 -98
  195. package/lib/polygon/models/index.js +2 -14
  196. package/lib/polygon/models/ocean.js +42 -88
  197. package/lib/polygon/models/water.js +37 -82
  198. package/lib/raster/buffers/triangulation.js +3 -7
  199. package/lib/raster/index.js +9 -40
  200. package/lib/raster/models/index.js +0 -5
  201. package/lib/raster/models/raster.js +80 -125
  202. package/lib/raster/models/rasterRgb.js +84 -139
  203. package/lib/raster/models/rasterTerrainRgb.js +56 -93
  204. package/lib/tile/interaction/getRasterData.js +14 -25
  205. package/lib/tile/interaction/utils.js +7 -19
  206. package/lib/tile/manager/base.js +63 -104
  207. package/lib/tile/service/TileLayerService.js +30 -57
  208. package/lib/tile/service/TilePickService.js +26 -48
  209. package/lib/tile/service/TileSourceService.js +2 -16
  210. package/lib/tile/style/utils.js +0 -3
  211. package/lib/tile/tileFactory/DebugTile.js +28 -53
  212. package/lib/tile/tileFactory/ImageTile.js +20 -46
  213. package/lib/tile/tileFactory/MaskTile.js +22 -51
  214. package/lib/tile/tileFactory/RasterRGBTile.js +22 -50
  215. package/lib/tile/tileFactory/RasterTerrainRGBTile.js +20 -46
  216. package/lib/tile/tileFactory/RasterTile.js +30 -63
  217. package/lib/tile/tileFactory/Tile.js +63 -102
  218. package/lib/tile/tileFactory/VectorTile.js +41 -76
  219. package/lib/tile/tileFactory/index.js +0 -25
  220. package/lib/tile/tileFactory/layers/TileDebugLayer.js +6 -32
  221. package/lib/tile/tileFactory/util.js +0 -9
  222. package/lib/tile/tileLayer/BaseLayer.js +105 -153
  223. package/lib/tile/utils.js +1 -5
  224. package/lib/utils/blend.js +0 -5
  225. package/lib/utils/collision-index.js +9 -25
  226. package/lib/utils/dataMappingStyle.js +8 -19
  227. package/lib/utils/extrude_polyline.js +101 -181
  228. package/lib/utils/grid-index.js +2 -28
  229. package/lib/utils/identityScale.js +0 -9
  230. package/lib/utils/layerData.js +30 -49
  231. package/lib/utils/multiPassRender.js +11 -16
  232. package/lib/utils/polylineNormal.js +31 -66
  233. package/lib/utils/simpleLine.js +2 -21
  234. package/lib/utils/stencil.js +0 -4
  235. package/lib/utils/symbol-layout.js +27 -55
  236. package/lib/wind/index.js +9 -37
  237. package/lib/wind/models/index.js +0 -3
  238. package/lib/wind/models/utils.js +26 -62
  239. package/lib/wind/models/wind.js +101 -157
  240. package/lib/wind/models/windRender.js +53 -71
  241. package/lib/wind/models/windShader.js +0 -1
  242. package/package.json +7 -7
@@ -7,29 +7,20 @@ 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 _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
10
-
11
10
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
12
-
13
11
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
-
15
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
-
12
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17
13
  import _regeneratorRuntime from "@babel/runtime/regenerator";
18
-
19
14
  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); }; }
20
-
21
15
  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; } }
22
-
23
16
  import { AttributeType, gl } from '@antv/l7-core';
24
17
  import { boundsContains, calculateCentroid, padBounds } from '@antv/l7-utils';
25
18
  import { isEqual, isNumber } from 'lodash';
26
19
  import BaseModel from "../../core/BaseModel";
27
20
  import CollisionIndex from "../../utils/collision-index";
28
21
  import { getGlyphQuads, shapeText } from "../../utils/symbol-layout";
29
-
30
22
  /* babel-plugin-inline-import '../shaders/text_frag.glsl' */
31
23
  var textFrag = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 48.0\nuniform sampler2D u_sdf_map;\nuniform float u_gamma_scale : 0.5;\n// uniform float u_font_size : 24.0;\nuniform float u_opacity : 1.0;\nuniform vec4 u_stroke_color : [0, 0, 0, 1];\nuniform float u_stroke_width : 2.0;\nuniform float u_halo_blur : 0.5;\nuniform float u_DevicePixelRatio;\n\nvarying vec4 v_color;\nvarying vec2 v_uv;\nvarying float v_gamma_scale;\nvarying float v_fontScale;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\nvoid main() {\n // get style data mapping\n float opacity = styleMappingMat[0][0];\n float strokeWidth = styleMappingMat[0][2];\n vec4 textrueStroke = vec4(\n styleMappingMat[1][0],\n styleMappingMat[1][1],\n styleMappingMat[1][2],\n styleMappingMat[1][3]\n );\n\n // get sdf from atlas\n float dist = texture2D(u_sdf_map, v_uv).a;\n\n // float fontScale = u_font_size / FONT_SIZE;\n\n // lowp float buff = (6.0 - u_stroke_width / v_fontScale) / SDF_PX;\n lowp float buff = (6.0 - strokeWidth / v_fontScale) / SDF_PX;\n highp float gamma = (u_halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (v_fontScale * u_gamma_scale) / 1.0;\n\n highp float gamma_scaled = gamma * v_gamma_scale;\n\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);\n // gl_FragColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), vec4(u_stroke_color.rgb, u_stroke_color.a * u_opacity), smoothstep(0., 0.5, 1. - dist));\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * opacity), vec4(textrueStroke.rgb, textrueStroke.a * opacity), smoothstep(0., 0.5, 1. - dist));\n gl_FragColor.a= gl_FragColor.a * alpha;\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 gl_FragColor = filterColor(gl_FragColor);\n}\n";
32
-
33
24
  /* babel-plugin-inline-import '../shaders/text_vert.glsl' */
34
25
  var textVert = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 24.0\nattribute vec3 a_Position;\nattribute vec2 a_tex;\nattribute vec2 a_textOffsets;\nattribute vec4 a_Color;\nattribute float a_Size;\nattribute float a_Rotate;\n\nuniform vec2 u_sdf_map_size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_raisingHeight: 0.0;\n\nvarying vec2 v_uv;\nvarying float v_gamma_scale;\nvarying vec4 v_color;\nvarying float v_fontScale;\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 float u_opacity : 1;\nuniform float u_stroke_width : 2;\nuniform vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n#pragma include \"styleMappingCalStrokeWidth\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvoid main() {\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 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 - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_color = a_Color;\n v_uv = a_tex / u_sdf_map_size;\n\n // \u6587\u672C\u7F29\u653E\u6BD4\u4F8B\n float fontScale = a_Size / FONT_SIZE;\n v_fontScale = fontScale;\n\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // vec4 projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n highp float angle_sin = sin(a_Rotate);\n highp float angle_cos = cos(a_Rotate);\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n \n // gl_Position = vec4(projected_position.xy / projected_position.w + rotation_matrix * a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n\n float raiseHeight = u_raisingHeight;\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 raiseHeight = u_raisingHeight * mapboxZoomScale;\n }\n\n vec4 projected_position;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n projected_position = u_Mvp *(vec4(a_Position.xyz + vec3(0.0, 0.0, raiseHeight), 1.0));\n } else { // else\n projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz + vec3(0.0, 0.0, raiseHeight), 1.0));\n }\n\n gl_Position = vec4(\n projected_position.xy / projected_position.w + rotation_matrix * a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n v_gamma_scale = gl_Position.w;\n setPickingColor(a_PickingColor);\n\n}\n";
35
26
  export function TextTriangulation(feature) {
@@ -38,7 +29,6 @@ export function TextTriangulation(feature) {
38
29
  var id = feature.id;
39
30
  var vertices = [];
40
31
  var indices = [];
41
-
42
32
  if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {
43
33
  return {
44
34
  vertices: [],
@@ -47,9 +37,7 @@ export function TextTriangulation(feature) {
47
37
  size: 7
48
38
  };
49
39
  }
50
-
51
40
  var centroid = that.glyphInfoMap[id].centroid; // 计算中心点
52
-
53
41
  var coord = centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;
54
42
  that.glyphInfoMap[id].glyphQuads.forEach(function (quad, index) {
55
43
  vertices.push.apply(vertices, _toConsumableArray(coord).concat([quad.tex.x, quad.tex.y + quad.tex.height, quad.tl.x, quad.tl.y], _toConsumableArray(coord), [quad.tex.x + quad.tex.width, quad.tex.y + quad.tex.height, quad.tr.x, quad.tr.y], _toConsumableArray(coord), [quad.tex.x + quad.tex.width, quad.tex.y, quad.br.x, quad.br.y], _toConsumableArray(coord), [quad.tex.x, quad.tex.y, quad.bl.x, quad.bl.y]));
@@ -62,84 +50,60 @@ export function TextTriangulation(feature) {
62
50
  size: 7
63
51
  };
64
52
  }
65
-
66
53
  var TextModel = /*#__PURE__*/function (_BaseModel) {
67
54
  _inherits(TextModel, _BaseModel);
68
-
69
55
  var _super = _createSuper(TextModel);
70
-
71
56
  function TextModel() {
72
57
  var _this;
73
-
74
58
  _classCallCheck(this, TextModel);
75
-
76
59
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
77
60
  args[_key] = arguments[_key];
78
61
  }
79
-
80
62
  _this = _super.call.apply(_super, [this].concat(args));
81
-
82
63
  _defineProperty(_assertThisInitialized(_this), "glyphInfoMap", {});
83
-
84
64
  _defineProperty(_assertThisInitialized(_this), "currentZoom", -1);
85
-
86
65
  _defineProperty(_assertThisInitialized(_this), "textureHeight", 0);
87
-
88
66
  _defineProperty(_assertThisInitialized(_this), "textCount", 0);
89
-
90
67
  _defineProperty(_assertThisInitialized(_this), "preTextStyle", {});
91
-
92
68
  _defineProperty(_assertThisInitialized(_this), "mapping", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
93
69
  return _regeneratorRuntime.wrap(function _callee$(_context) {
94
- while (1) {
95
- switch (_context.prev = _context.next) {
96
- case 0:
97
- _this.initGlyph(); //
98
-
99
-
100
- _this.updateTexture();
101
-
102
- _context.next = 4;
103
- return _this.reBuildModel();
104
-
105
- case 4:
106
- case "end":
107
- return _context.stop();
108
- }
70
+ while (1) switch (_context.prev = _context.next) {
71
+ case 0:
72
+ _this.initGlyph(); //
73
+ _this.updateTexture();
74
+ _context.next = 4;
75
+ return _this.reBuildModel();
76
+ case 4:
77
+ case "end":
78
+ return _context.stop();
109
79
  }
110
80
  }, _callee);
111
81
  })));
112
-
113
82
  return _this;
114
83
  }
115
-
116
84
  _createClass(TextModel, [{
117
85
  key: "getUninforms",
118
86
  value: function getUninforms() {
119
87
  var _ref2 = this.layer.getLayerConfig(),
120
- _ref2$opacity = _ref2.opacity,
121
- opacity = _ref2$opacity === void 0 ? 1.0 : _ref2$opacity,
122
- _ref2$stroke = _ref2.stroke,
123
- stroke = _ref2$stroke === void 0 ? '#fff' : _ref2$stroke,
124
- _ref2$strokeWidth = _ref2.strokeWidth,
125
- strokeWidth = _ref2$strokeWidth === void 0 ? 0 : _ref2$strokeWidth,
126
- _ref2$halo = _ref2.halo,
127
- halo = _ref2$halo === void 0 ? 0.5 : _ref2$halo,
128
- _ref2$gamma = _ref2.gamma,
129
- gamma = _ref2$gamma === void 0 ? 2.0 : _ref2$gamma,
130
- _ref2$raisingHeight = _ref2.raisingHeight,
131
- raisingHeight = _ref2$raisingHeight === void 0 ? 0 : _ref2$raisingHeight;
132
-
88
+ _ref2$opacity = _ref2.opacity,
89
+ opacity = _ref2$opacity === void 0 ? 1.0 : _ref2$opacity,
90
+ _ref2$stroke = _ref2.stroke,
91
+ stroke = _ref2$stroke === void 0 ? '#fff' : _ref2$stroke,
92
+ _ref2$strokeWidth = _ref2.strokeWidth,
93
+ strokeWidth = _ref2$strokeWidth === void 0 ? 0 : _ref2$strokeWidth,
94
+ _ref2$halo = _ref2.halo,
95
+ halo = _ref2$halo === void 0 ? 0.5 : _ref2$halo,
96
+ _ref2$gamma = _ref2.gamma,
97
+ gamma = _ref2$gamma === void 0 ? 2.0 : _ref2$gamma,
98
+ _ref2$raisingHeight = _ref2.raisingHeight,
99
+ raisingHeight = _ref2$raisingHeight === void 0 ? 0 : _ref2$raisingHeight;
133
100
  var mapping = this.getFontServiceMapping();
134
101
  var canvas = this.getFontServiceCanvas();
135
-
136
102
  if (mapping && Object.keys(mapping).length !== this.textCount && canvas) {
137
103
  this.updateTexture();
138
104
  this.textCount = Object.keys(mapping).length;
139
105
  }
140
-
141
106
  this.preTextStyle = this.getTextStyle();
142
-
143
107
  if (this.dataTextureTest && this.dataTextureNeedUpdate({
144
108
  opacity: opacity,
145
109
  strokeWidth: strokeWidth,
@@ -151,12 +115,10 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
151
115
  stroke: stroke
152
116
  });
153
117
  var encodeData = this.layer.getEncodedData();
154
-
155
118
  var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
156
- data = _this$calDataFrame.data,
157
- width = _this$calDataFrame.width,
158
- height = _this$calDataFrame.height;
159
-
119
+ data = _this$calDataFrame.data,
120
+ width = _this$calDataFrame.width,
121
+ height = _this$calDataFrame.height;
160
122
  this.rowCount = height; // 当前数据纹理有多少行
161
123
 
162
124
  this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
@@ -175,7 +137,6 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
175
137
  height: 1
176
138
  });
177
139
  }
178
-
179
140
  return {
180
141
  u_dataTexture: this.dataTexture,
181
142
  // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]
@@ -195,27 +156,22 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
195
156
  value: function () {
196
157
  var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
197
158
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
198
- while (1) {
199
- switch (_context2.prev = _context2.next) {
200
- case 0:
201
- // 绑定事件
202
- this.bindEvent();
203
- this.extent = this.textExtent();
204
- this.preTextStyle = this.getTextStyle();
205
- return _context2.abrupt("return", this.buildModels());
206
-
207
- case 4:
208
- case "end":
209
- return _context2.stop();
210
- }
159
+ while (1) switch (_context2.prev = _context2.next) {
160
+ case 0:
161
+ // 绑定事件
162
+ this.bindEvent();
163
+ this.extent = this.textExtent();
164
+ this.preTextStyle = this.getTextStyle();
165
+ return _context2.abrupt("return", this.buildModels());
166
+ case 4:
167
+ case "end":
168
+ return _context2.stop();
211
169
  }
212
170
  }, _callee2, this);
213
171
  }));
214
-
215
172
  function initModels() {
216
173
  return _initModels.apply(this, arguments);
217
174
  }
218
-
219
175
  return initModels;
220
176
  }()
221
177
  }, {
@@ -223,48 +179,37 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
223
179
  value: function () {
224
180
  var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
225
181
  var _ref3, _ref3$textAllowOverla, textAllowOverlap, model;
226
-
227
182
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
228
- while (1) {
229
- switch (_context3.prev = _context3.next) {
230
- case 0:
231
- _ref3 = this.layer.getLayerConfig(), _ref3$textAllowOverla = _ref3.textAllowOverlap, textAllowOverlap = _ref3$textAllowOverla === void 0 ? false : _ref3$textAllowOverla; // this.mapping(); 重复调用
232
-
233
- this.initGlyph(); //
234
-
235
- this.updateTexture();
236
-
237
- if (!textAllowOverlap) {
238
- this.filterGlyphs();
183
+ while (1) switch (_context3.prev = _context3.next) {
184
+ case 0:
185
+ _ref3 = this.layer.getLayerConfig(), _ref3$textAllowOverla = _ref3.textAllowOverlap, textAllowOverlap = _ref3$textAllowOverla === void 0 ? false : _ref3$textAllowOverla; // this.mapping(); 重复调用
186
+ this.initGlyph(); //
187
+ this.updateTexture();
188
+ if (!textAllowOverlap) {
189
+ this.filterGlyphs();
190
+ }
191
+ _context3.next = 6;
192
+ return this.layer.buildLayerModel({
193
+ moduleName: 'pointText',
194
+ vertexShader: textVert,
195
+ fragmentShader: textFrag,
196
+ triangulation: TextTriangulation.bind(this),
197
+ depth: {
198
+ enable: false
239
199
  }
240
-
241
- _context3.next = 6;
242
- return this.layer.buildLayerModel({
243
- moduleName: 'pointText',
244
- vertexShader: textVert,
245
- fragmentShader: textFrag,
246
- triangulation: TextTriangulation.bind(this),
247
- depth: {
248
- enable: false
249
- }
250
- });
251
-
252
- case 6:
253
- model = _context3.sent;
254
- return _context3.abrupt("return", [model]);
255
-
256
- case 8:
257
- case "end":
258
- return _context3.stop();
259
- }
200
+ });
201
+ case 6:
202
+ model = _context3.sent;
203
+ return _context3.abrupt("return", [model]);
204
+ case 8:
205
+ case "end":
206
+ return _context3.stop();
260
207
  }
261
208
  }, _callee3, this);
262
209
  }));
263
-
264
210
  function buildModels() {
265
211
  return _buildModels.apply(this, arguments);
266
212
  }
267
-
268
213
  return buildModels;
269
214
  }() // 需要更新的场景
270
215
  // 1. 文本偏移量发生改变
@@ -272,80 +217,62 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
272
217
  // 3. 文本允许重叠发生改变
273
218
  // 4. 文本字体发生改变
274
219
  // 5. 文本字体粗细发生改变
275
-
276
220
  }, {
277
221
  key: "needUpdate",
278
222
  value: function () {
279
223
  var _needUpdate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
280
224
  var _ref4, _ref4$textAllowOverla, textAllowOverlap, _ref4$textAnchor, textAnchor, textOffset, padding, fontFamily, fontWeight, zoom, extent, flag;
281
-
282
225
  return _regeneratorRuntime.wrap(function _callee4$(_context4) {
283
- while (1) {
284
- switch (_context4.prev = _context4.next) {
285
- case 0:
286
- _ref4 = this.getTextStyle(), _ref4$textAllowOverla = _ref4.textAllowOverlap, textAllowOverlap = _ref4$textAllowOverla === void 0 ? false : _ref4$textAllowOverla, _ref4$textAnchor = _ref4.textAnchor, textAnchor = _ref4$textAnchor === void 0 ? 'center' : _ref4$textAnchor, textOffset = _ref4.textOffset, padding = _ref4.padding, fontFamily = _ref4.fontFamily, fontWeight = _ref4.fontWeight;
287
-
288
- if (!(!isEqual(padding, this.preTextStyle.padding) || !isEqual(textOffset, this.preTextStyle.textOffset) || !isEqual(textAnchor, this.preTextStyle.textAnchor) || !isEqual(fontFamily, this.preTextStyle.fontFamily) || !isEqual(fontWeight, this.preTextStyle.fontWeight))) {
289
- _context4.next = 5;
290
- break;
291
- }
292
-
293
- _context4.next = 4;
294
- return this.mapping();
295
-
296
- case 4:
297
- return _context4.abrupt("return", true);
298
-
299
- case 5:
300
- if (!textAllowOverlap) {
301
- _context4.next = 7;
302
- break;
303
- }
304
-
305
- return _context4.abrupt("return", false);
306
-
307
- case 7:
308
- // textAllowOverlap 发生改变
309
- zoom = this.mapService.getZoom();
310
- extent = this.mapService.getBounds();
311
- flag = boundsContains(this.extent, extent); // 文本不能压盖则进行过滤
312
-
313
- if (!(Math.abs(this.currentZoom - zoom) > 0.5 || !flag || textAllowOverlap !== this.preTextStyle.textAllowOverlap)) {
314
- _context4.next = 14;
315
- break;
316
- }
317
-
318
- _context4.next = 13;
319
- return this.reBuildModel();
320
-
321
- case 13:
322
- return _context4.abrupt("return", true);
323
-
324
- case 14:
325
- return _context4.abrupt("return", false);
326
-
327
- case 15:
328
- case "end":
329
- return _context4.stop();
330
- }
226
+ while (1) switch (_context4.prev = _context4.next) {
227
+ case 0:
228
+ _ref4 = this.getTextStyle(), _ref4$textAllowOverla = _ref4.textAllowOverlap, textAllowOverlap = _ref4$textAllowOverla === void 0 ? false : _ref4$textAllowOverla, _ref4$textAnchor = _ref4.textAnchor, textAnchor = _ref4$textAnchor === void 0 ? 'center' : _ref4$textAnchor, textOffset = _ref4.textOffset, padding = _ref4.padding, fontFamily = _ref4.fontFamily, fontWeight = _ref4.fontWeight;
229
+ if (!(!isEqual(padding, this.preTextStyle.padding) || !isEqual(textOffset, this.preTextStyle.textOffset) || !isEqual(textAnchor, this.preTextStyle.textAnchor) || !isEqual(fontFamily, this.preTextStyle.fontFamily) || !isEqual(fontWeight, this.preTextStyle.fontWeight))) {
230
+ _context4.next = 5;
231
+ break;
232
+ }
233
+ _context4.next = 4;
234
+ return this.mapping();
235
+ case 4:
236
+ return _context4.abrupt("return", true);
237
+ case 5:
238
+ if (!textAllowOverlap) {
239
+ _context4.next = 7;
240
+ break;
241
+ }
242
+ return _context4.abrupt("return", false);
243
+ case 7:
244
+ // textAllowOverlap 发生改变
245
+ zoom = this.mapService.getZoom();
246
+ extent = this.mapService.getBounds();
247
+ flag = boundsContains(this.extent, extent); // 文本不能压盖则进行过滤
248
+ if (!(Math.abs(this.currentZoom - zoom) > 0.5 || !flag || textAllowOverlap !== this.preTextStyle.textAllowOverlap)) {
249
+ _context4.next = 14;
250
+ break;
251
+ }
252
+ _context4.next = 13;
253
+ return this.reBuildModel();
254
+ case 13:
255
+ return _context4.abrupt("return", true);
256
+ case 14:
257
+ return _context4.abrupt("return", false);
258
+ case 15:
259
+ case "end":
260
+ return _context4.stop();
331
261
  }
332
262
  }, _callee4, this);
333
263
  }));
334
-
335
264
  function needUpdate() {
336
265
  return _needUpdate.apply(this, arguments);
337
266
  }
338
-
339
267
  return needUpdate;
340
268
  }()
341
269
  }, {
342
270
  key: "clearModels",
343
271
  value: function clearModels() {
344
272
  var _this$texture, _this$dataTexture;
345
-
346
273
  (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
347
- (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy(); // TODO this.mapping
348
-
274
+ (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
275
+ // TODO this.mapping
349
276
  this.layer.off('remapping', this.mapping);
350
277
  }
351
278
  }, {
@@ -364,7 +291,7 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
364
291
  size: 1,
365
292
  update: function update(feature) {
366
293
  var _feature$rotate = feature.rotate,
367
- rotate = _feature$rotate === void 0 ? 0 : _feature$rotate;
294
+ rotate = _feature$rotate === void 0 ? 0 : _feature$rotate;
368
295
  return Array.isArray(rotate) ? [rotate[0]] : [rotate];
369
296
  }
370
297
  }
@@ -385,8 +312,9 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
385
312
  return [vertex[5], vertex[6]];
386
313
  }
387
314
  }
388
- }); // point layer size;
315
+ });
389
316
 
317
+ // point layer size;
390
318
  this.styleAttributeService.registerStyleAttribute({
391
319
  name: 'size',
392
320
  type: AttributeType.Attribute,
@@ -401,7 +329,7 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
401
329
  size: 1,
402
330
  update: function update(feature) {
403
331
  var _feature$size = feature.size,
404
- size = _feature$size === void 0 ? 12 : _feature$size;
332
+ size = _feature$size === void 0 ? 12 : _feature$size;
405
333
  return Array.isArray(size) ? [size[0]] : [size];
406
334
  }
407
335
  }
@@ -440,28 +368,23 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
440
368
  /**
441
369
  * 生成文字纹理(生成文字纹理字典)
442
370
  */
443
-
444
371
  }, {
445
372
  key: "initTextFont",
446
373
  value: function initTextFont() {
447
374
  var _this$getTextStyle = this.getTextStyle(),
448
- fontWeight = _this$getTextStyle.fontWeight,
449
- fontFamily = _this$getTextStyle.fontFamily;
450
-
375
+ fontWeight = _this$getTextStyle.fontWeight,
376
+ fontFamily = _this$getTextStyle.fontFamily;
451
377
  var data = this.layer.getEncodedData();
452
378
  var characterSet = [];
453
379
  data.forEach(function (item) {
454
380
  var _item$shape = item.shape,
455
- shape = _item$shape === void 0 ? '' : _item$shape;
381
+ shape = _item$shape === void 0 ? '' : _item$shape;
456
382
  shape = shape.toString();
457
-
458
383
  var _iterator = _createForOfIteratorHelper(shape),
459
- _step;
460
-
384
+ _step;
461
385
  try {
462
386
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
463
387
  var char = _step.value;
464
-
465
388
  // 去重
466
389
  if (characterSet.indexOf(char) === -1) {
467
390
  characterSet.push(char);
@@ -480,24 +403,22 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
480
403
  iconfont: false
481
404
  });
482
405
  }
406
+
483
407
  /**
484
408
  * 生成 iconfont 纹理字典
485
409
  */
486
-
487
410
  }, {
488
411
  key: "initIconFontTex",
489
412
  value: function initIconFontTex() {
490
413
  var _this$getTextStyle2 = this.getTextStyle(),
491
- fontWeight = _this$getTextStyle2.fontWeight,
492
- fontFamily = _this$getTextStyle2.fontFamily;
493
-
414
+ fontWeight = _this$getTextStyle2.fontWeight,
415
+ fontFamily = _this$getTextStyle2.fontFamily;
494
416
  var data = this.layer.getEncodedData();
495
417
  var characterSet = [];
496
418
  data.forEach(function (item) {
497
419
  var _item$shape2 = item.shape,
498
- shape = _item$shape2 === void 0 ? '' : _item$shape2;
420
+ shape = _item$shape2 === void 0 ? '' : _item$shape2;
499
421
  shape = "".concat(shape);
500
-
501
422
  if (characterSet.indexOf(shape) === -1) {
502
423
  characterSet.push(shape);
503
424
  }
@@ -513,27 +434,26 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
513
434
  key: "getTextStyle",
514
435
  value: function getTextStyle() {
515
436
  var _ref5 = this.layer.getLayerConfig(),
516
- _ref5$fontWeight = _ref5.fontWeight,
517
- fontWeight = _ref5$fontWeight === void 0 ? '400' : _ref5$fontWeight,
518
- _ref5$fontFamily = _ref5.fontFamily,
519
- fontFamily = _ref5$fontFamily === void 0 ? 'sans-serif' : _ref5$fontFamily,
520
- _ref5$textAllowOverla = _ref5.textAllowOverlap,
521
- textAllowOverlap = _ref5$textAllowOverla === void 0 ? false : _ref5$textAllowOverla,
522
- _ref5$padding = _ref5.padding,
523
- padding = _ref5$padding === void 0 ? [0, 0] : _ref5$padding,
524
- _ref5$textAnchor = _ref5.textAnchor,
525
- textAnchor = _ref5$textAnchor === void 0 ? 'center' : _ref5$textAnchor,
526
- _ref5$textOffset = _ref5.textOffset,
527
- textOffset = _ref5$textOffset === void 0 ? [0, 0] : _ref5$textOffset,
528
- _ref5$opacity = _ref5.opacity,
529
- opacity = _ref5$opacity === void 0 ? 1 : _ref5$opacity,
530
- _ref5$strokeOpacity = _ref5.strokeOpacity,
531
- strokeOpacity = _ref5$strokeOpacity === void 0 ? 1 : _ref5$strokeOpacity,
532
- _ref5$strokeWidth = _ref5.strokeWidth,
533
- strokeWidth = _ref5$strokeWidth === void 0 ? 0 : _ref5$strokeWidth,
534
- _ref5$stroke = _ref5.stroke,
535
- stroke = _ref5$stroke === void 0 ? '#000' : _ref5$stroke;
536
-
437
+ _ref5$fontWeight = _ref5.fontWeight,
438
+ fontWeight = _ref5$fontWeight === void 0 ? '400' : _ref5$fontWeight,
439
+ _ref5$fontFamily = _ref5.fontFamily,
440
+ fontFamily = _ref5$fontFamily === void 0 ? 'sans-serif' : _ref5$fontFamily,
441
+ _ref5$textAllowOverla = _ref5.textAllowOverlap,
442
+ textAllowOverlap = _ref5$textAllowOverla === void 0 ? false : _ref5$textAllowOverla,
443
+ _ref5$padding = _ref5.padding,
444
+ padding = _ref5$padding === void 0 ? [0, 0] : _ref5$padding,
445
+ _ref5$textAnchor = _ref5.textAnchor,
446
+ textAnchor = _ref5$textAnchor === void 0 ? 'center' : _ref5$textAnchor,
447
+ _ref5$textOffset = _ref5.textOffset,
448
+ textOffset = _ref5$textOffset === void 0 ? [0, 0] : _ref5$textOffset,
449
+ _ref5$opacity = _ref5.opacity,
450
+ opacity = _ref5$opacity === void 0 ? 1 : _ref5$opacity,
451
+ _ref5$strokeOpacity = _ref5.strokeOpacity,
452
+ strokeOpacity = _ref5$strokeOpacity === void 0 ? 1 : _ref5$strokeOpacity,
453
+ _ref5$strokeWidth = _ref5.strokeWidth,
454
+ strokeWidth = _ref5$strokeWidth === void 0 ? 0 : _ref5$strokeWidth,
455
+ _ref5$stroke = _ref5.stroke,
456
+ stroke = _ref5$stroke === void 0 ? '#000' : _ref5$stroke;
537
457
  return {
538
458
  fontWeight: fontWeight,
539
459
  fontFamily: fontFamily,
@@ -547,39 +467,39 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
547
467
  stroke: stroke
548
468
  };
549
469
  }
470
+
550
471
  /**
551
472
  * 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)
552
473
  */
553
-
554
474
  }, {
555
475
  key: "generateGlyphLayout",
556
476
  value: function generateGlyphLayout(iconfont) {
557
477
  var _this2 = this;
558
-
559
478
  var mapping = this.getFontServiceMapping();
560
-
561
479
  var _ref6 = this.layer.getLayerConfig(),
562
- _ref6$spacing = _ref6.spacing,
563
- spacing = _ref6$spacing === void 0 ? 2 : _ref6$spacing,
564
- _ref6$textAnchor = _ref6.textAnchor,
565
- textAnchor = _ref6$textAnchor === void 0 ? 'center' : _ref6$textAnchor,
566
- textOffset = _ref6.textOffset;
567
-
480
+ _ref6$spacing = _ref6.spacing,
481
+ spacing = _ref6$spacing === void 0 ? 2 : _ref6$spacing,
482
+ _ref6$textAnchor = _ref6.textAnchor,
483
+ textAnchor = _ref6$textAnchor === void 0 ? 'center' : _ref6$textAnchor,
484
+ textOffset = _ref6.textOffset;
568
485
  var data = this.layer.getEncodedData();
569
486
  this.glyphInfo = data.map(function (feature) {
570
487
  var _feature$shape = feature.shape,
571
- shape = _feature$shape === void 0 ? '' : _feature$shape,
572
- id = feature.id,
573
- _feature$size2 = feature.size,
574
- size = _feature$size2 === void 0 ? 1 : _feature$size2;
575
- var shaping = shapeText(shape.toString(), mapping, // @ts-ignore
488
+ shape = _feature$shape === void 0 ? '' : _feature$shape,
489
+ id = feature.id,
490
+ _feature$size2 = feature.size,
491
+ size = _feature$size2 === void 0 ? 1 : _feature$size2;
492
+ var shaping = shapeText(shape.toString(), mapping,
493
+ // @ts-ignore
576
494
  size, textAnchor, 'left', spacing, textOffset || feature.textOffset || [0, 0], iconfont);
577
495
  var glyphQuads = getGlyphQuads(shaping, textOffset, false);
578
496
  feature.shaping = shaping;
579
- feature.glyphQuads = glyphQuads; // feature.centroid = calculteCentroid(coordinates);
497
+ feature.glyphQuads = glyphQuads;
498
+ // feature.centroid = calculteCentroid(coordinates);
580
499
 
581
- feature.centroid = calculateCentroid(feature.coordinates); // 此时地图高德2.0 originCentroid == centroid
500
+ feature.centroid = calculateCentroid(feature.coordinates);
582
501
 
502
+ // 此时地图高德2.0 originCentroid == centroid
583
503
  feature.originCentroid = feature.version === 'GAODE2.x' ? calculateCentroid(feature.originCoordinates) : feature.originCentroid = feature.centroid;
584
504
  _this2.glyphInfoMap[id] = {
585
505
  shaping: shaping,
@@ -593,76 +513,66 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
593
513
  key: "getFontServiceMapping",
594
514
  value: function getFontServiceMapping() {
595
515
  var _ref7 = this.layer.getLayerConfig(),
596
- _ref7$fontWeight = _ref7.fontWeight,
597
- fontWeight = _ref7$fontWeight === void 0 ? '400' : _ref7$fontWeight,
598
- _ref7$fontFamily = _ref7.fontFamily,
599
- fontFamily = _ref7$fontFamily === void 0 ? 'sans-serif' : _ref7$fontFamily;
600
-
516
+ _ref7$fontWeight = _ref7.fontWeight,
517
+ fontWeight = _ref7$fontWeight === void 0 ? '400' : _ref7$fontWeight,
518
+ _ref7$fontFamily = _ref7.fontFamily,
519
+ fontFamily = _ref7$fontFamily === void 0 ? 'sans-serif' : _ref7$fontFamily;
601
520
  return this.fontService.getMappingByKey("".concat(fontFamily, "_").concat(fontWeight));
602
521
  }
603
522
  }, {
604
523
  key: "getFontServiceCanvas",
605
524
  value: function getFontServiceCanvas() {
606
525
  var _ref8 = this.layer.getLayerConfig(),
607
- _ref8$fontWeight = _ref8.fontWeight,
608
- fontWeight = _ref8$fontWeight === void 0 ? '400' : _ref8$fontWeight,
609
- _ref8$fontFamily = _ref8.fontFamily,
610
- fontFamily = _ref8$fontFamily === void 0 ? 'sans-serif' : _ref8$fontFamily; // 更新文字布局
611
-
612
-
526
+ _ref8$fontWeight = _ref8.fontWeight,
527
+ fontWeight = _ref8$fontWeight === void 0 ? '400' : _ref8$fontWeight,
528
+ _ref8$fontFamily = _ref8.fontFamily,
529
+ fontFamily = _ref8$fontFamily === void 0 ? 'sans-serif' : _ref8$fontFamily;
530
+ // 更新文字布局
613
531
  return this.fontService.getCanvasByKey("".concat(fontFamily, "_").concat(fontWeight));
614
532
  }
533
+
615
534
  /**
616
535
  * 文字避让 depend on originCentorid
617
536
  */
618
-
619
537
  }, {
620
538
  key: "filterGlyphs",
621
539
  value: function filterGlyphs() {
622
540
  var _this3 = this;
623
-
624
541
  var _ref9 = this.layer.getLayerConfig(),
625
- _ref9$padding = _ref9.padding,
626
- padding = _ref9$padding === void 0 ? [0, 0] : _ref9$padding,
627
- _ref9$textAllowOverla = _ref9.textAllowOverlap,
628
- textAllowOverlap = _ref9$textAllowOverla === void 0 ? false : _ref9$textAllowOverla;
629
-
542
+ _ref9$padding = _ref9.padding,
543
+ padding = _ref9$padding === void 0 ? [0, 0] : _ref9$padding,
544
+ _ref9$textAllowOverla = _ref9.textAllowOverlap,
545
+ textAllowOverlap = _ref9$textAllowOverla === void 0 ? false : _ref9$textAllowOverla;
630
546
  if (textAllowOverlap) {
631
547
  // 如果允许文本覆盖
632
548
  return;
633
549
  }
634
-
635
550
  this.glyphInfoMap = {};
636
551
  this.currentZoom = this.mapService.getZoom();
637
552
  this.extent = this.textExtent();
638
-
639
553
  var _this$rendererService = this.rendererService.getViewportSize(),
640
- width = _this$rendererService.width,
641
- height = _this$rendererService.height;
642
-
554
+ width = _this$rendererService.width,
555
+ height = _this$rendererService.height;
643
556
  var collisionIndex = new CollisionIndex(width, height);
644
557
  var filterData = this.glyphInfo.filter(function (feature) {
645
558
  var shaping = feature.shaping,
646
- _feature$id = feature.id,
647
- id = _feature$id === void 0 ? 0 : _feature$id; // const centroid = feature.centroid as [number, number];
559
+ _feature$id = feature.id,
560
+ id = _feature$id === void 0 ? 0 : _feature$id;
561
+ // const centroid = feature.centroid as [number, number];
648
562
  // const centroid = feature.originCentroid as [number, number];
649
-
650
563
  var centroid = feature.version === 'GAODE2.x' ? feature.originCentroid : feature.centroid;
651
564
  var size = feature.size;
652
565
  var fontScale = size / 16;
653
-
654
566
  var pixels = _this3.mapService.lngLatToContainer(centroid);
655
-
656
567
  var _collisionIndex$place = collisionIndex.placeCollisionBox({
657
- x1: shaping.left * fontScale - padding[0],
658
- x2: shaping.right * fontScale + padding[0],
659
- y1: shaping.top * fontScale - padding[1],
660
- y2: shaping.bottom * fontScale + padding[1],
661
- anchorPointX: pixels.x,
662
- anchorPointY: pixels.y
663
- }),
664
- box = _collisionIndex$place.box;
665
-
568
+ x1: shaping.left * fontScale - padding[0],
569
+ x2: shaping.right * fontScale + padding[0],
570
+ y1: shaping.top * fontScale - padding[1],
571
+ y2: shaping.bottom * fontScale + padding[1],
572
+ anchorPointX: pixels.x,
573
+ anchorPointY: pixels.y
574
+ }),
575
+ box = _collisionIndex$place.box;
666
576
  if (box && box.length) {
667
577
  collisionIndex.insertCollisionBox(box, id);
668
578
  return true;
@@ -673,39 +583,35 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
673
583
  filterData.forEach(function (item) {
674
584
  // @ts-ignore
675
585
  _this3.glyphInfoMap[item.id] = item;
676
- }); // this.layer.setEncodedData(filterData);
586
+ });
587
+ // this.layer.setEncodedData(filterData);
677
588
  }
678
589
  /**
679
590
  * 初始化文字布局
680
591
  */
681
-
682
592
  }, {
683
593
  key: "initGlyph",
684
594
  value: function initGlyph() {
685
595
  var _this$layer$getLayerC = this.layer.getLayerConfig(),
686
- _this$layer$getLayerC2 = _this$layer$getLayerC.iconfont,
687
- iconfont = _this$layer$getLayerC2 === void 0 ? false : _this$layer$getLayerC2; // 1.生成文字纹理(或是生成 iconfont)
688
-
689
-
690
- iconfont ? this.initIconFontTex() : this.initTextFont(); // 2.生成文字布局
691
-
596
+ _this$layer$getLayerC2 = _this$layer$getLayerC.iconfont,
597
+ iconfont = _this$layer$getLayerC2 === void 0 ? false : _this$layer$getLayerC2;
598
+ // 1.生成文字纹理(或是生成 iconfont)
599
+ iconfont ? this.initIconFontTex() : this.initTextFont();
600
+ // 2.生成文字布局
692
601
  this.generateGlyphLayout(iconfont);
693
602
  }
694
603
  /**
695
604
  * 更新文字纹理
696
605
  */
697
-
698
606
  }, {
699
607
  key: "updateTexture",
700
608
  value: function updateTexture() {
701
609
  var createTexture2D = this.rendererService.createTexture2D;
702
610
  var canvas = this.getFontServiceCanvas();
703
611
  this.textureHeight = canvas.height;
704
-
705
612
  if (this.texture) {
706
613
  this.texture.destroy();
707
614
  }
708
-
709
615
  this.texture = createTexture2D({
710
616
  data: canvas,
711
617
  mag: gl.LINEAR,
@@ -720,43 +626,35 @@ var TextModel = /*#__PURE__*/function (_BaseModel) {
720
626
  var _reBuildModel = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
721
627
  var model;
722
628
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
723
- while (1) {
724
- switch (_context5.prev = _context5.next) {
725
- case 0:
726
- this.filterGlyphs();
727
- _context5.next = 3;
728
- return this.layer.buildLayerModel({
729
- moduleName: 'pointText',
730
- vertexShader: textVert,
731
- fragmentShader: textFrag,
732
- triangulation: TextTriangulation.bind(this),
733
- depth: {
734
- enable: false
735
- }
736
- });
737
-
738
- case 3:
739
- model = _context5.sent;
740
- // TODO 渲染流程待修改
741
- this.layer.models = [model];
742
-
743
- case 5:
744
- case "end":
745
- return _context5.stop();
746
- }
629
+ while (1) switch (_context5.prev = _context5.next) {
630
+ case 0:
631
+ this.filterGlyphs();
632
+ _context5.next = 3;
633
+ return this.layer.buildLayerModel({
634
+ moduleName: 'pointText',
635
+ vertexShader: textVert,
636
+ fragmentShader: textFrag,
637
+ triangulation: TextTriangulation.bind(this),
638
+ depth: {
639
+ enable: false
640
+ }
641
+ });
642
+ case 3:
643
+ model = _context5.sent;
644
+ // TODO 渲染流程待修改
645
+ this.layer.models = [model];
646
+ case 5:
647
+ case "end":
648
+ return _context5.stop();
747
649
  }
748
650
  }, _callee5, this);
749
651
  }));
750
-
751
652
  function reBuildModel() {
752
653
  return _reBuildModel.apply(this, arguments);
753
654
  }
754
-
755
655
  return reBuildModel;
756
656
  }()
757
657
  }]);
758
-
759
658
  return TextModel;
760
659
  }(BaseModel);
761
-
762
660
  export { TextModel as default };