@antv/l7-layers 2.9.17-alpha.0 → 2.9.17

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 (367) hide show
  1. package/es/Geometry/index.js +2 -12
  2. package/es/Geometry/index.js.map +1 -1
  3. package/es/Geometry/models/billboard.d.ts +3 -3
  4. package/es/Geometry/models/billboard.js +6 -11
  5. package/es/Geometry/models/billboard.js.map +1 -1
  6. package/es/Geometry/models/plane.d.ts +3 -3
  7. package/es/Geometry/models/plane.js +7 -12
  8. package/es/Geometry/models/plane.js.map +1 -1
  9. package/es/Geometry/models/sprite.d.ts +3 -3
  10. package/es/Geometry/models/sprite.js +6 -11
  11. package/es/Geometry/models/sprite.js.map +1 -1
  12. package/es/canvas/index.js +2 -12
  13. package/es/canvas/index.js.map +1 -1
  14. package/es/citybuliding/building.js +2 -12
  15. package/es/citybuliding/building.js.map +1 -1
  16. package/es/citybuliding/models/build.d.ts +1 -2
  17. package/es/citybuliding/models/build.js +3 -16
  18. package/es/citybuliding/models/build.js.map +1 -1
  19. package/es/core/BaseLayer.d.ts +1 -1
  20. package/es/core/BaseLayer.js +58 -97
  21. package/es/core/BaseLayer.js.map +1 -1
  22. package/es/core/BaseModel.d.ts +2 -2
  23. package/es/core/BaseModel.js +2 -2
  24. package/es/core/BaseModel.js.map +1 -1
  25. package/es/core/interface.d.ts +13 -2
  26. package/es/core/interface.js.map +1 -1
  27. package/es/core/triangulation.d.ts +0 -1
  28. package/es/core/triangulation.js +11 -37
  29. package/es/core/triangulation.js.map +1 -1
  30. package/es/earth/index.js +2 -8
  31. package/es/earth/index.js.map +1 -1
  32. package/es/earth/models/atmosphere.d.ts +2 -2
  33. package/es/earth/models/atmosphere.js +6 -11
  34. package/es/earth/models/atmosphere.js.map +1 -1
  35. package/es/earth/models/base.d.ts +2 -2
  36. package/es/earth/models/base.js +6 -11
  37. package/es/earth/models/base.js.map +1 -1
  38. package/es/earth/models/bloomsphere.d.ts +2 -2
  39. package/es/earth/models/bloomsphere.js +6 -11
  40. package/es/earth/models/bloomsphere.js.map +1 -1
  41. package/es/heatmap/index.js +5 -17
  42. package/es/heatmap/index.js.map +1 -1
  43. package/es/heatmap/models/grid.d.ts +2 -2
  44. package/es/heatmap/models/grid.js +8 -12
  45. package/es/heatmap/models/grid.js.map +1 -1
  46. package/es/heatmap/models/grid3d.d.ts +2 -2
  47. package/es/heatmap/models/grid3d.js +6 -12
  48. package/es/heatmap/models/grid3d.js.map +1 -1
  49. package/es/heatmap/models/heatmap.d.ts +2 -2
  50. package/es/heatmap/models/heatmap.js +62 -112
  51. package/es/heatmap/models/heatmap.js.map +1 -1
  52. package/es/heatmap/models/hexagon.d.ts +2 -2
  53. package/es/heatmap/models/hexagon.js +6 -11
  54. package/es/heatmap/models/hexagon.js.map +1 -1
  55. package/es/image/index.d.ts +1 -1
  56. package/es/image/index.js +16 -14
  57. package/es/image/index.js.map +1 -1
  58. package/es/image/models/dataImage.d.ts +22 -0
  59. package/es/image/models/dataImage.js +230 -0
  60. package/es/image/models/dataImage.js.map +1 -0
  61. package/es/image/models/image.d.ts +4 -3
  62. package/es/image/models/image.js +14 -11
  63. package/es/image/models/image.js.map +1 -1
  64. package/es/image/models/index.d.ts +1 -1
  65. package/es/image/models/index.js +3 -1
  66. package/es/image/models/index.js.map +1 -1
  67. package/es/line/index.d.ts +2 -0
  68. package/es/line/index.js +5 -12
  69. package/es/line/index.js.map +1 -1
  70. package/es/line/models/arc.d.ts +2 -2
  71. package/es/line/models/arc.js +10 -15
  72. package/es/line/models/arc.js.map +1 -1
  73. package/es/line/models/arc_3d.d.ts +2 -2
  74. package/es/line/models/arc_3d.js +8 -13
  75. package/es/line/models/arc_3d.js.map +1 -1
  76. package/es/line/models/arcmini.d.ts +9 -0
  77. package/es/line/models/arcmini.js +145 -0
  78. package/es/line/models/arcmini.js.map +1 -0
  79. package/es/line/models/earthArc_3d.d.ts +2 -2
  80. package/es/line/models/earthArc_3d.js +9 -17
  81. package/es/line/models/earthArc_3d.js.map +1 -1
  82. package/es/line/models/great_circle.d.ts +2 -2
  83. package/es/line/models/great_circle.js +8 -13
  84. package/es/line/models/great_circle.js.map +1 -1
  85. package/es/line/models/half.d.ts +2 -2
  86. package/es/line/models/half.js +29 -46
  87. package/es/line/models/half.js.map +1 -1
  88. package/es/line/models/index.d.ts +1 -1
  89. package/es/line/models/index.js +2 -0
  90. package/es/line/models/index.js.map +1 -1
  91. package/es/line/models/line.d.ts +2 -2
  92. package/es/line/models/line.js +16 -28
  93. package/es/line/models/line.js.map +1 -1
  94. package/es/line/models/linearline.d.ts +11 -2
  95. package/es/line/models/linearline.js +24 -14
  96. package/es/line/models/linearline.js.map +1 -1
  97. package/es/line/models/simpleLine.d.ts +2 -3
  98. package/es/line/models/simpleLine.js +18 -66
  99. package/es/line/models/simpleLine.js.map +1 -1
  100. package/es/line/models/tile.d.ts +11 -2
  101. package/es/line/models/tile.js +39 -45
  102. package/es/line/models/tile.js.map +1 -1
  103. package/es/line/models/wall.d.ts +2 -2
  104. package/es/line/models/wall.js +9 -13
  105. package/es/line/models/wall.js.map +1 -1
  106. package/es/mask/index.js +2 -12
  107. package/es/mask/index.js.map +1 -1
  108. package/es/mask/models/fill.d.ts +2 -2
  109. package/es/mask/models/fill.js +27 -53
  110. package/es/mask/models/fill.js.map +1 -1
  111. package/es/plugins/DataMappingPlugin.js +8 -29
  112. package/es/plugins/DataMappingPlugin.js.map +1 -1
  113. package/es/plugins/DataSourcePlugin.js +5 -14
  114. package/es/plugins/DataSourcePlugin.js.map +1 -1
  115. package/es/plugins/LayerModelPlugin.d.ts +0 -2
  116. package/es/plugins/LayerModelPlugin.js +7 -33
  117. package/es/plugins/LayerModelPlugin.js.map +1 -1
  118. package/es/plugins/PixelPickingPlugin.js +13 -16
  119. package/es/plugins/PixelPickingPlugin.js.map +1 -1
  120. package/es/point/index.d.ts +1 -1
  121. package/es/point/index.js +8 -15
  122. package/es/point/index.js.map +1 -1
  123. package/es/point/models/earthExtrude.d.ts +2 -2
  124. package/es/point/models/earthExtrude.js +14 -16
  125. package/es/point/models/earthExtrude.js.map +1 -1
  126. package/es/point/models/earthFill.d.ts +11 -2
  127. package/es/point/models/earthFill.js +22 -13
  128. package/es/point/models/earthFill.js.map +1 -1
  129. package/es/point/models/extrude.d.ts +2 -2
  130. package/es/point/models/extrude.js +27 -49
  131. package/es/point/models/extrude.js.map +1 -1
  132. package/es/point/models/fill.d.ts +2 -2
  133. package/es/point/models/fill.js +41 -59
  134. package/es/point/models/fill.js.map +1 -1
  135. package/es/point/models/fillmage.d.ts +7 -2
  136. package/es/point/models/fillmage.js +22 -13
  137. package/es/point/models/fillmage.js.map +1 -1
  138. package/es/point/models/icon-font.d.ts +11 -0
  139. package/es/point/models/icon-font.js +181 -0
  140. package/es/point/models/icon-font.js.map +1 -0
  141. package/es/point/models/image.d.ts +2 -2
  142. package/es/point/models/image.js +6 -11
  143. package/es/point/models/image.js.map +1 -1
  144. package/es/point/models/index.d.ts +1 -1
  145. package/es/point/models/index.js +2 -0
  146. package/es/point/models/index.js.map +1 -1
  147. package/es/point/models/normal.d.ts +2 -2
  148. package/es/point/models/normal.js +6 -11
  149. package/es/point/models/normal.js.map +1 -1
  150. package/es/point/models/radar.d.ts +11 -2
  151. package/es/point/models/radar.js +22 -13
  152. package/es/point/models/radar.js.map +1 -1
  153. package/es/point/models/simplePoint.d.ts +2 -2
  154. package/es/point/models/simplePoint.js +6 -11
  155. package/es/point/models/simplePoint.js.map +1 -1
  156. package/es/point/models/text.d.ts +2 -3
  157. package/es/point/models/text.js +75 -108
  158. package/es/point/models/text.js.map +1 -1
  159. package/es/point/models/tile.d.ts +11 -2
  160. package/es/point/models/tile.js +25 -22
  161. package/es/point/models/tile.js.map +1 -1
  162. package/es/polygon/index.js +2 -12
  163. package/es/polygon/index.js.map +1 -1
  164. package/es/polygon/models/extrude.d.ts +2 -2
  165. package/es/polygon/models/extrude.js +5 -10
  166. package/es/polygon/models/extrude.js.map +1 -1
  167. package/es/polygon/models/fill.d.ts +2 -2
  168. package/es/polygon/models/fill.js +13 -27
  169. package/es/polygon/models/fill.js.map +1 -1
  170. package/es/polygon/models/ocean.d.ts +2 -2
  171. package/es/polygon/models/ocean.js +6 -12
  172. package/es/polygon/models/ocean.js.map +1 -1
  173. package/es/polygon/models/tile.d.ts +3 -2
  174. package/es/polygon/models/tile.js +27 -17
  175. package/es/polygon/models/tile.js.map +1 -1
  176. package/es/polygon/models/water.d.ts +2 -2
  177. package/es/polygon/models/water.js +6 -12
  178. package/es/polygon/models/water.js.map +1 -1
  179. package/es/raster/image.d.ts +0 -0
  180. package/es/raster/image.js +2 -0
  181. package/es/raster/image.js.map +1 -0
  182. package/es/raster/index.js +2 -12
  183. package/es/raster/index.js.map +1 -1
  184. package/es/raster/models/raster.d.ts +3 -3
  185. package/es/raster/models/raster.js +7 -11
  186. package/es/raster/models/raster.js.map +1 -1
  187. package/es/raster/raster2d.d.ts +27 -0
  188. package/es/raster/raster2d.js +158 -0
  189. package/es/raster/raster2d.js.map +1 -0
  190. package/es/tile/manager/tileLayerManager.js +21 -4
  191. package/es/tile/manager/tileLayerManager.js.map +1 -1
  192. package/es/tile/manager/tilePickerManager.js +0 -1
  193. package/es/tile/manager/tilePickerManager.js.map +1 -1
  194. package/es/tile/tileFactory/base.js.map +1 -1
  195. package/es/tile/tileFactory/point.js.map +1 -1
  196. package/es/tile/tileFactory/rasterDataLayer.js +2 -12
  197. package/es/tile/tileFactory/rasterDataLayer.js.map +1 -1
  198. package/es/tile/tileFactory/vectorLayer.js +2 -12
  199. package/es/tile/tileFactory/vectorLayer.js.map +1 -1
  200. package/es/utils/extrude_polyline.d.ts +0 -15
  201. package/es/utils/extrude_polyline.js +6 -138
  202. package/es/utils/extrude_polyline.js.map +1 -1
  203. package/es/utils/geo.d.ts +12 -0
  204. package/es/utils/geo.js +53 -0
  205. package/es/utils/geo.js.map +1 -0
  206. package/es/utils/simpleLine.d.ts +23 -0
  207. package/es/utils/simpleLine.js +105 -0
  208. package/es/utils/simpleLine.js.map +1 -0
  209. package/es/wind/index.js +2 -12
  210. package/es/wind/index.js.map +1 -1
  211. package/es/wind/models/wind.d.ts +2 -2
  212. package/es/wind/models/wind.js +33 -36
  213. package/es/wind/models/wind.js.map +1 -1
  214. package/lib/Geometry/index.js +2 -12
  215. package/lib/Geometry/index.js.map +1 -1
  216. package/lib/Geometry/models/billboard.js +6 -11
  217. package/lib/Geometry/models/billboard.js.map +1 -1
  218. package/lib/Geometry/models/plane.js +7 -12
  219. package/lib/Geometry/models/plane.js.map +1 -1
  220. package/lib/Geometry/models/sprite.js +6 -11
  221. package/lib/Geometry/models/sprite.js.map +1 -1
  222. package/lib/canvas/index.js +2 -12
  223. package/lib/canvas/index.js.map +1 -1
  224. package/lib/citybuliding/building.js +2 -12
  225. package/lib/citybuliding/building.js.map +1 -1
  226. package/lib/citybuliding/models/build.js +3 -16
  227. package/lib/citybuliding/models/build.js.map +1 -1
  228. package/lib/core/BaseLayer.js +57 -96
  229. package/lib/core/BaseLayer.js.map +1 -1
  230. package/lib/core/BaseModel.js +2 -2
  231. package/lib/core/BaseModel.js.map +1 -1
  232. package/lib/core/interface.js.map +1 -1
  233. package/lib/core/triangulation.js +16 -40
  234. package/lib/core/triangulation.js.map +1 -1
  235. package/lib/earth/index.js +2 -8
  236. package/lib/earth/index.js.map +1 -1
  237. package/lib/earth/models/atmosphere.js +6 -11
  238. package/lib/earth/models/atmosphere.js.map +1 -1
  239. package/lib/earth/models/base.js +6 -11
  240. package/lib/earth/models/base.js.map +1 -1
  241. package/lib/earth/models/bloomsphere.js +6 -11
  242. package/lib/earth/models/bloomsphere.js.map +1 -1
  243. package/lib/heatmap/index.js +5 -17
  244. package/lib/heatmap/index.js.map +1 -1
  245. package/lib/heatmap/models/grid.js +8 -12
  246. package/lib/heatmap/models/grid.js.map +1 -1
  247. package/lib/heatmap/models/grid3d.js +6 -12
  248. package/lib/heatmap/models/grid3d.js.map +1 -1
  249. package/lib/heatmap/models/heatmap.js +62 -113
  250. package/lib/heatmap/models/heatmap.js.map +1 -1
  251. package/lib/heatmap/models/hexagon.js +6 -11
  252. package/lib/heatmap/models/hexagon.js.map +1 -1
  253. package/lib/image/index.js +16 -14
  254. package/lib/image/index.js.map +1 -1
  255. package/lib/image/models/dataImage.js +245 -0
  256. package/lib/image/models/dataImage.js.map +1 -0
  257. package/lib/image/models/image.js +14 -11
  258. package/lib/image/models/image.js.map +1 -1
  259. package/lib/image/models/index.js +4 -1
  260. package/lib/image/models/index.js.map +1 -1
  261. package/lib/line/index.js +5 -12
  262. package/lib/line/index.js.map +1 -1
  263. package/lib/line/models/arc.js +10 -15
  264. package/lib/line/models/arc.js.map +1 -1
  265. package/lib/line/models/arc_3d.js +8 -13
  266. package/lib/line/models/arc_3d.js.map +1 -1
  267. package/lib/line/models/arcmini.js +161 -0
  268. package/lib/line/models/arcmini.js.map +1 -0
  269. package/lib/line/models/earthArc_3d.js +9 -17
  270. package/lib/line/models/earthArc_3d.js.map +1 -1
  271. package/lib/line/models/great_circle.js +8 -13
  272. package/lib/line/models/great_circle.js.map +1 -1
  273. package/lib/line/models/half.js +29 -48
  274. package/lib/line/models/half.js.map +1 -1
  275. package/lib/line/models/index.js +3 -0
  276. package/lib/line/models/index.js.map +1 -1
  277. package/lib/line/models/line.js +18 -29
  278. package/lib/line/models/line.js.map +1 -1
  279. package/lib/line/models/linearline.js +24 -14
  280. package/lib/line/models/linearline.js.map +1 -1
  281. package/lib/line/models/simpleLine.js +18 -66
  282. package/lib/line/models/simpleLine.js.map +1 -1
  283. package/lib/line/models/tile.js +39 -47
  284. package/lib/line/models/tile.js.map +1 -1
  285. package/lib/line/models/wall.js +9 -13
  286. package/lib/line/models/wall.js.map +1 -1
  287. package/lib/mask/index.js +2 -12
  288. package/lib/mask/index.js.map +1 -1
  289. package/lib/mask/models/fill.js +27 -55
  290. package/lib/mask/models/fill.js.map +1 -1
  291. package/lib/plugins/DataMappingPlugin.js +8 -29
  292. package/lib/plugins/DataMappingPlugin.js.map +1 -1
  293. package/lib/plugins/DataSourcePlugin.js +4 -13
  294. package/lib/plugins/DataSourcePlugin.js.map +1 -1
  295. package/lib/plugins/LayerModelPlugin.js +7 -33
  296. package/lib/plugins/LayerModelPlugin.js.map +1 -1
  297. package/lib/plugins/PixelPickingPlugin.js +13 -16
  298. package/lib/plugins/PixelPickingPlugin.js.map +1 -1
  299. package/lib/point/index.js +8 -15
  300. package/lib/point/index.js.map +1 -1
  301. package/lib/point/models/earthExtrude.js +15 -16
  302. package/lib/point/models/earthExtrude.js.map +1 -1
  303. package/lib/point/models/earthFill.js +22 -13
  304. package/lib/point/models/earthFill.js.map +1 -1
  305. package/lib/point/models/extrude.js +28 -51
  306. package/lib/point/models/extrude.js.map +1 -1
  307. package/lib/point/models/fill.js +42 -61
  308. package/lib/point/models/fill.js.map +1 -1
  309. package/lib/point/models/fillmage.js +22 -13
  310. package/lib/point/models/fillmage.js.map +1 -1
  311. package/lib/point/models/icon-font.js +196 -0
  312. package/lib/point/models/icon-font.js.map +1 -0
  313. package/lib/point/models/image.js +6 -11
  314. package/lib/point/models/image.js.map +1 -1
  315. package/lib/point/models/index.js +3 -0
  316. package/lib/point/models/index.js.map +1 -1
  317. package/lib/point/models/normal.js +6 -11
  318. package/lib/point/models/normal.js.map +1 -1
  319. package/lib/point/models/radar.js +22 -13
  320. package/lib/point/models/radar.js.map +1 -1
  321. package/lib/point/models/simplePoint.js +6 -11
  322. package/lib/point/models/simplePoint.js.map +1 -1
  323. package/lib/point/models/text.js +78 -110
  324. package/lib/point/models/text.js.map +1 -1
  325. package/lib/point/models/tile.js +25 -22
  326. package/lib/point/models/tile.js.map +1 -1
  327. package/lib/polygon/index.js +2 -12
  328. package/lib/polygon/index.js.map +1 -1
  329. package/lib/polygon/models/extrude.js +5 -10
  330. package/lib/polygon/models/extrude.js.map +1 -1
  331. package/lib/polygon/models/fill.js +11 -25
  332. package/lib/polygon/models/fill.js.map +1 -1
  333. package/lib/polygon/models/ocean.js +6 -12
  334. package/lib/polygon/models/ocean.js.map +1 -1
  335. package/lib/polygon/models/tile.js +27 -17
  336. package/lib/polygon/models/tile.js.map +1 -1
  337. package/lib/polygon/models/water.js +6 -12
  338. package/lib/polygon/models/water.js.map +1 -1
  339. package/lib/raster/image.js +2 -0
  340. package/lib/raster/image.js.map +1 -0
  341. package/lib/raster/index.js +2 -12
  342. package/lib/raster/index.js.map +1 -1
  343. package/lib/raster/models/raster.js +7 -11
  344. package/lib/raster/models/raster.js.map +1 -1
  345. package/lib/raster/raster2d.js +172 -0
  346. package/lib/raster/raster2d.js.map +1 -0
  347. package/lib/tile/manager/tileLayerManager.js +21 -4
  348. package/lib/tile/manager/tileLayerManager.js.map +1 -1
  349. package/lib/tile/manager/tilePickerManager.js +0 -1
  350. package/lib/tile/manager/tilePickerManager.js.map +1 -1
  351. package/lib/tile/tileFactory/base.js.map +1 -1
  352. package/lib/tile/tileFactory/point.js.map +1 -1
  353. package/lib/tile/tileFactory/rasterDataLayer.js +2 -12
  354. package/lib/tile/tileFactory/rasterDataLayer.js.map +1 -1
  355. package/lib/tile/tileFactory/vectorLayer.js +2 -12
  356. package/lib/tile/tileFactory/vectorLayer.js.map +1 -1
  357. package/lib/utils/extrude_polyline.js +6 -140
  358. package/lib/utils/extrude_polyline.js.map +1 -1
  359. package/lib/utils/geo.js +65 -0
  360. package/lib/utils/geo.js.map +1 -0
  361. package/lib/utils/simpleLine.js +117 -0
  362. package/lib/utils/simpleLine.js.map +1 -0
  363. package/lib/wind/index.js +2 -12
  364. package/lib/wind/index.js.map +1 -1
  365. package/lib/wind/models/wind.js +33 -36
  366. package/lib/wind/models/wind.js.map +1 -1
  367. package/package.json +8 -9
@@ -37,24 +37,14 @@ var RasterTiffLayer = function (_BaseLayer) {
37
37
  _createClass(RasterTiffLayer, [{
38
38
  key: "buildModels",
39
39
  value: function buildModels() {
40
- var _this2 = this;
41
-
42
40
  var model = this.getModelType();
43
41
  this.layerModel = new model(this);
44
- this.layerModel.initModels(function (models) {
45
- _this2.models = models;
46
-
47
- _this2.renderLayers();
48
- });
42
+ this.models = this.layerModel.initModels();
49
43
  }
50
44
  }, {
51
45
  key: "rebuildModels",
52
46
  value: function rebuildModels() {
53
- var _this3 = this;
54
-
55
- this.layerModel.buildModels(function (models) {
56
- return _this3.models = models;
57
- });
47
+ this.models = this.layerModel.buildModels();
58
48
  }
59
49
  }, {
60
50
  key: "getModelType",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile/tileFactory/rasterDataLayer.ts"],"names":["BaseLayer","RasterModel","RasterTiffLayer","layerType","model","getModelType","layerModel","initModels","models","renderLayers","buildModels","properties","opacity","type","minimum","maximum"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,sBAAtB;AAEA,OAAOC,WAAP,MAAwB,4BAAxB;;IAEqBC,e;;;;;;;;;;;;;;;;2DAGG,MAAKC,S;;;;;;;WAC3B,uBAAqB;AAAA;;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKE,UAAL,CAAgBC,UAAhB,CAA2B,UAACC,MAAD,EAAY;AACrC,QAAA,MAAI,CAACA,MAAL,GAAcA,MAAd;;AACA,QAAA,MAAI,CAACC,YAAL;AACD,OAHD;AAID;;;WAED,yBAAuB;AAAA;;AACrB,WAAKH,UAAL,CAAgBI,WAAhB,CAA4B,UAACF,MAAD;AAAA,eAAa,MAAI,CAACA,MAAL,GAAcA,MAA3B;AAAA,OAA5B;AACD;;;WAED,wBAAyB;AACvB,aAAOP,WAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLU,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;;EAlC0Cf,S;;SAAxBE,e","sourcesContent":["import BaseLayer from '../../core/BaseLayer';\nimport { IRasterLayerStyleOptions } from '../../core/interface';\nimport RasterModel from '../../raster/models/raster';\n\nexport default class RasterTiffLayer extends BaseLayer<\n Partial<IRasterLayerStyleOptions>\n> {\n public type: string = this.layerType as string;\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.layerModel.initModels((models) => {\n this.models = models;\n this.renderLayers();\n });\n }\n\n public rebuildModels() {\n this.layerModel.buildModels((models) => (this.models = models));\n }\n\n protected getModelType() {\n return RasterModel;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"rasterDataLayer.js"}
1
+ {"version":3,"sources":["../../../src/tile/tileFactory/rasterDataLayer.ts"],"names":["BaseLayer","RasterModel","RasterTiffLayer","layerType","model","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,sBAAtB;AAEA,OAAOC,WAAP,MAAwB,4BAAxB;;IAEqBC,e;;;;;;;;;;;;;;;;2DAGG,MAAKC,S;;;;;;;WAC3B,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WAED,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,wBAAyB;AACvB,aAAOR,WAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLS,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;;EA/B0Cd,S;;SAAxBE,e","sourcesContent":["import BaseLayer from '../../core/BaseLayer';\nimport { IRasterLayerStyleOptions } from '../../core/interface';\nimport RasterModel from '../../raster/models/raster';\n\nexport default class RasterTiffLayer extends BaseLayer<\n Partial<IRasterLayerStyleOptions>\n> {\n public type: string = this.layerType as string;\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.models = this.layerModel.initModels();\n }\n\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n protected getModelType() {\n return RasterModel;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"rasterDataLayer.js"}
@@ -54,24 +54,14 @@ var VectorLayer = function (_BaseLayer) {
54
54
  }, {
55
55
  key: "buildModels",
56
56
  value: function buildModels() {
57
- var _this2 = this;
58
-
59
57
  var model = this.getModelType();
60
58
  this.layerModel = new model(this);
61
- this.layerModel.initModels(function (models) {
62
- _this2.models = models;
63
-
64
- _this2.renderLayers();
65
- });
59
+ this.models = this.layerModel.initModels();
66
60
  }
67
61
  }, {
68
62
  key: "rebuildModels",
69
63
  value: function rebuildModels() {
70
- var _this3 = this;
71
-
72
- this.layerModel.buildModels(function (models) {
73
- return _this3.models = models;
74
- });
64
+ this.models = this.layerModel.buildModels();
75
65
  }
76
66
  }, {
77
67
  key: "getModelType",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile/tileFactory/vectorLayer.ts"],"names":["BaseLayer","lineFillModel","pointTextModel","pointFillModel","polygonFillModel","VectorLayer","layerType","pickedID","model","getModelType","layerModel","initModels","models","renderLayers","buildModels","getPointModel","layerData","getEncodedData","getLayerConfig","shape2d","item","find","fe","hasOwnProperty","shape","indexOf","properties","opacity","type","minimum","maximum"],"mappings":";;;;;;;;;;;;AACA,OAAOA,SAAP,MAAsB,sBAAtB;AAMA,OAAOC,aAAP,MAA0B,wBAA1B;AACA,OAAOC,cAAP,MAA2B,yBAA3B;AACA,OAAOC,cAAP,MAA2B,yBAA3B;AACA,OAAOC,gBAAP,MAA6B,2BAA7B;;IAEqBC,W;;;;;;;;;;;;;;;;+DAKQ,I;;2DACL,MAAKC,S;;+DAEO,I;;;;;;;WAElC,qBAAmB;AACjB,aAAO,KAAKC,QAAZ;AACD;;;WAED,qBAAmB;AACjB,aAAO,KAAKA,QAAZ;AACD;;;WAED,uBAAqB;AAAA;;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKE,UAAL,CAAgBC,UAAhB,CAA2B,UAACC,MAAD,EAAY;AACrC,QAAA,MAAI,CAACA,MAAL,GAAcA,MAAd;;AACA,QAAA,MAAI,CAACC,YAAL;AACD,OAHD;AAID;;;WAED,yBAAuB;AAAA;;AACrB,WAAKH,UAAL,CAAgBI,WAAhB,CAA4B,UAACF,MAAD;AAAA,eAAa,MAAI,CAACA,MAAL,GAAcA,MAA3B;AAAA,OAA5B;AACD;;;WAED,wBAAyB;AACvB,cAAQ,KAAKN,SAAb;AACE,aAAK,cAAL;AACE,iBAAOF,gBAAP;;AACF,aAAK,WAAL;AACE,iBAAOH,aAAP;;AACF,aAAK,YAAL;AACE,iBAAO,KAAKc,aAAL,EAAP;;AACF;AACE,iBAAOZ,cAAP;AARJ;AAUD;;;WAED,yBAA0B;AACxB,UAAMa,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAAoB,KAAKC,cAAL,EAApB;AAAA,UAAQC,OAAR,wBAAQA,OAAR;;AACA,UAAMC,IAAI,GAAGJ,SAAS,CAACK,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAIA,UAAIH,IAAJ,EAAU;AACR,YAAMI,KAAK,GAAGJ,IAAI,CAACI,KAAnB;;AACA,YAAI,CAAAL,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEM,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAOrB,cAAP;AACD,SAFD,MAEO;AACL,iBAAOD,cAAP;AACD;AACF,OAPD,MAOO;AACL,eAAOC,cAAP;AACD;AACF;;;WAED,2BAA4B;AAC1B,aAAO;AACLuB,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;;EA7EsC9B,S;;SAApBK,W","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../../core/BaseLayer';\nimport {\n ILineLayerStyleOptions,\n IPointLayerStyleOptions,\n IPolygonLayerStyleOptions,\n} from '../../core/interface';\nimport lineFillModel from '../../line/models/tile';\nimport pointTextModel from '../../point/models/text';\nimport pointFillModel from '../../point/models/tile';\nimport polygonFillModel from '../../polygon/models/tile';\n\nexport default class VectorLayer extends BaseLayer<\n Partial<\n IPolygonLayerStyleOptions & ILineLayerStyleOptions & IPointLayerStyleOptions\n >\n> {\n public isVector: boolean = true;\n public type: string = this.layerType as string;\n // Tip: 单独被 tile 瓦片的渲染链路使用(用于优化性能)\n private pickedID: number | null = null;\n\n public getPickID() {\n return this.pickedID;\n }\n\n public setPickID() {\n return this.pickedID;\n }\n\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.layerModel.initModels((models) => {\n this.models = models;\n this.renderLayers();\n });\n }\n\n public rebuildModels() {\n this.layerModel.buildModels((models) => (this.models = models));\n }\n\n protected getModelType() {\n switch (this.layerType) {\n case 'PolygonLayer':\n return polygonFillModel;\n case 'LineLayer':\n return lineFillModel;\n case 'PointLayer':\n return this.getPointModel();\n default:\n return pointFillModel;\n }\n }\n\n protected getPointModel() {\n const layerData = this.getEncodedData();\n const { shape2d } = this.getLayerConfig();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n // only support pointFill & pointText now\n if (item) {\n const shape = item.shape;\n if (shape2d?.indexOf(shape as string) !== -1) {\n return pointFillModel;\n } else {\n return pointTextModel;\n }\n } else {\n return pointFillModel;\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"vectorLayer.js"}
1
+ {"version":3,"sources":["../../../src/tile/tileFactory/vectorLayer.ts"],"names":["BaseLayer","lineFillModel","pointTextModel","pointFillModel","polygonFillModel","VectorLayer","layerType","pickedID","model","getModelType","layerModel","models","initModels","buildModels","getPointModel","layerData","getEncodedData","getLayerConfig","shape2d","item","find","fe","hasOwnProperty","shape","indexOf","properties","opacity","type","minimum","maximum"],"mappings":";;;;;;;;;;;;AACA,OAAOA,SAAP,MAAsB,sBAAtB;AAMA,OAAOC,aAAP,MAA0B,wBAA1B;AACA,OAAOC,cAAP,MAA2B,yBAA3B;AACA,OAAOC,cAAP,MAA2B,yBAA3B;AACA,OAAOC,gBAAP,MAA6B,2BAA7B;;IAEqBC,W;;;;;;;;;;;;;;;;+DAKQ,I;;2DACL,MAAKC,S;;+DAEO,I;;;;;;;WAElC,qBAAmB;AACjB,aAAO,KAAKC,QAAZ;AACD;;;WAED,qBAAmB;AACjB,aAAO,KAAKA,QAAZ;AACD;;;WAED,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIF,KAAJ,CAAU,IAAV,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WAED,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,wBAAyB;AACvB,cAAQ,KAAKP,SAAb;AACE,aAAK,cAAL;AACE,iBAAOF,gBAAP;;AACF,aAAK,WAAL;AACE,iBAAOH,aAAP;;AACF,aAAK,YAAL;AACE,iBAAO,KAAKa,aAAL,EAAP;;AACF;AACE,iBAAOX,cAAP;AARJ;AAUD;;;WAED,yBAA0B;AACxB,UAAMY,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAAoB,KAAKC,cAAL,EAApB;AAAA,UAAQC,OAAR,wBAAQA,OAAR;;AACA,UAAMC,IAAI,GAAGJ,SAAS,CAACK,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAIA,UAAIH,IAAJ,EAAU;AACR,YAAMI,KAAK,GAAGJ,IAAI,CAACI,KAAnB;;AACA,YAAI,CAAAL,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEM,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAOpB,cAAP;AACD,SAFD,MAEO;AACL,iBAAOD,cAAP;AACD;AACF,OAPD,MAOO;AACL,eAAOC,cAAP;AACD;AACF;;;WAED,2BAA4B;AAC1B,aAAO;AACLsB,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,4BAA6B;AAC3B,aAAO,EAAP;AACD;;;;EA1EsC7B,S;;SAApBK,W","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../../core/BaseLayer';\nimport {\n ILineLayerStyleOptions,\n IPointLayerStyleOptions,\n IPolygonLayerStyleOptions,\n} from '../../core/interface';\nimport lineFillModel from '../../line/models/tile';\nimport pointTextModel from '../../point/models/text';\nimport pointFillModel from '../../point/models/tile';\nimport polygonFillModel from '../../polygon/models/tile';\n\nexport default class VectorLayer extends BaseLayer<\n Partial<\n IPolygonLayerStyleOptions & ILineLayerStyleOptions & IPointLayerStyleOptions\n >\n> {\n public isVector: boolean = true;\n public type: string = this.layerType as string;\n // Tip: 单独被 tile 瓦片的渲染链路使用(用于优化性能)\n private pickedID: number | null = null;\n\n public getPickID() {\n return this.pickedID;\n }\n\n public setPickID() {\n return this.pickedID;\n }\n\n public buildModels() {\n const model = this.getModelType();\n this.layerModel = new model(this);\n this.models = this.layerModel.initModels();\n }\n\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n protected getModelType() {\n switch (this.layerType) {\n case 'PolygonLayer':\n return polygonFillModel;\n case 'LineLayer':\n return lineFillModel;\n case 'PointLayer':\n return this.getPointModel();\n default:\n return pointFillModel;\n }\n }\n\n protected getPointModel() {\n const layerData = this.getEncodedData();\n const { shape2d } = this.getLayerConfig();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n // only support pointFill & pointText now\n if (item) {\n const shape = item.shape;\n if (shape2d?.indexOf(shape as string) !== -1) {\n return pointFillModel;\n } else {\n return pointTextModel;\n }\n } else {\n return pointFillModel;\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getDefaultConfig() {\n return {};\n }\n}\n"],"file":"vectorLayer.js"}
@@ -38,13 +38,6 @@ export default class ExtrudePolyline {
38
38
  startIndex: number;
39
39
  indexes: number[];
40
40
  };
41
- simpleExtrude_gaode2(points: number[][], originPoints: number[][]): {
42
- positions: number[];
43
- indices: number[];
44
- normals: number[];
45
- startIndex: number;
46
- indexes: number[];
47
- };
48
41
  extrude(points: number[][]): {
49
42
  positions: number[];
50
43
  indices: number[];
@@ -52,15 +45,7 @@ export default class ExtrudePolyline {
52
45
  startIndex: number;
53
46
  indexes: number[];
54
47
  };
55
- simpleExtrude(points: number[][]): {
56
- positions: number[];
57
- indices: number[];
58
- normals: number[];
59
- startIndex: number;
60
- indexes: number[];
61
- };
62
48
  private segment_gaode2;
63
- private simpleSegment;
64
49
  private segment;
65
50
  private extrusions;
66
51
  private lineSegmentDistance;
@@ -132,46 +132,6 @@ var ExtrudePolyline = function () {
132
132
  return complex;
133
133
  }
134
134
  }, {
135
- key: "simpleExtrude_gaode2",
136
- value: function simpleExtrude_gaode2(points, originPoints) {
137
- var complex = this.complex;
138
-
139
- if (points.length <= 1) {
140
- return complex;
141
- }
142
-
143
- this.lastFlip = -1;
144
- this.started = false;
145
- this.normal = null;
146
- this.totalDistance = 0;
147
- var total = points.length;
148
- var count = complex.startIndex;
149
-
150
- for (var i = 1; i < total; i++) {
151
- var _originPoints$3, _originPoints$i$2, _originPoints$4;
152
-
153
- var last = points[i - 1];
154
- last.push((_originPoints$3 = originPoints[i - 1][2]) !== null && _originPoints$3 !== void 0 ? _originPoints$3 : 0);
155
- var originLast = originPoints[i - 1];
156
- var cur = points[i];
157
- cur.push((_originPoints$i$2 = originPoints[i][2]) !== null && _originPoints$i$2 !== void 0 ? _originPoints$i$2 : 0);
158
- var originCur = originPoints[i];
159
- var next = i < points.length - 1 ? [].concat(_toConsumableArray(points[i + 1]), [(_originPoints$4 = originPoints[i + 1][2]) !== null && _originPoints$4 !== void 0 ? _originPoints$4 : 0]) : null;
160
- var originNext = i < originPoints.length - 1 ? originPoints[i + 1] : null;
161
- var amt = this.simpleSegment(complex, count, last, cur, next, originLast, originCur, originNext);
162
- count += amt;
163
- }
164
-
165
- if (this.dash) {
166
- for (var _i2 = 0; _i2 < complex.positions.length / 6; _i2++) {
167
- complex.positions[_i2 * 6 + 5] = this.totalDistance;
168
- }
169
- }
170
-
171
- complex.startIndex = complex.positions.length / 6;
172
- return complex;
173
- }
174
- }, {
175
135
  key: "extrude",
176
136
  value: function extrude(points) {
177
137
  var complex = this.complex;
@@ -196,41 +156,8 @@ var ExtrudePolyline = function () {
196
156
  }
197
157
 
198
158
  if (this.dash) {
199
- for (var _i3 = 0; _i3 < complex.positions.length / 6; _i3++) {
200
- complex.positions[_i3 * 6 + 5] = this.totalDistance;
201
- }
202
- }
203
-
204
- complex.startIndex = complex.positions.length / 6;
205
- return complex;
206
- }
207
- }, {
208
- key: "simpleExtrude",
209
- value: function simpleExtrude(points) {
210
- var complex = this.complex;
211
-
212
- if (points.length <= 1) {
213
- return complex;
214
- }
215
-
216
- this.lastFlip = -1;
217
- this.started = false;
218
- this.normal = null;
219
- this.totalDistance = 0;
220
- var total = points.length;
221
- var count = complex.startIndex;
222
-
223
- for (var i = 1; i < total; i++) {
224
- var last = points[i - 1];
225
- var cur = points[i];
226
- var next = i < points.length - 1 ? points[i + 1] : null;
227
- var amt = this.simpleSegment(complex, count, last, cur, next);
228
- count += amt;
229
- }
230
-
231
- if (this.dash) {
232
- for (var _i4 = 0; _i4 < complex.positions.length / 6; _i4++) {
233
- complex.positions[_i4 * 6 + 5] = this.totalDistance;
159
+ for (var _i2 = 0; _i2 < complex.positions.length / 6; _i2++) {
160
+ complex.positions[_i2 * 6 + 5] = this.totalDistance;
234
161
  }
235
162
  }
236
163
 
@@ -360,65 +287,6 @@ var ExtrudePolyline = function () {
360
287
  return count;
361
288
  }
362
289
  }, {
363
- key: "simpleSegment",
364
- value: function simpleSegment(complex, index, last, cur, next) {
365
- var count = 0;
366
- var indices = complex.indices;
367
- var positions = complex.positions;
368
- var normals = complex.normals;
369
- var flatCur = aProjectFlat([cur[0], cur[1]]);
370
- var flatLast = aProjectFlat([last[0], last[1]]);
371
- direction(lineA, flatCur, flatLast);
372
- var segmentDistance = 0;
373
-
374
- if (this.dash) {
375
- segmentDistance = this.lineSegmentDistance(flatCur, flatLast);
376
- this.totalDistance += segmentDistance;
377
- }
378
-
379
- if (!this.normal) {
380
- this.normal = vec2.create();
381
- computeNormal(this.normal, lineA);
382
- }
383
-
384
- if (!this.started) {
385
- this.started = true;
386
- this.extrusions(positions, normals, last, this.normal, this.thickness, this.totalDistance - segmentDistance);
387
- }
388
-
389
- indices.push(index + 0, index + 1, index + 2);
390
-
391
- if (!next) {
392
- computeNormal(this.normal, lineA);
393
- this.extrusions(positions, normals, cur, this.normal, this.thickness, this.totalDistance);
394
- indices.push.apply(indices, _toConsumableArray(this.lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]));
395
- count += 2;
396
- } else {
397
- var flatNext = aProjectFlat([next[0], next[1]]);
398
-
399
- if (isPointEqual(flatCur, flatNext)) {
400
- vec2.add(flatNext, flatCur, vec2.normalize(flatNext, vec2.subtract(flatNext, flatCur, flatLast)));
401
- }
402
-
403
- direction(lineB, flatNext, flatCur);
404
-
405
- var _computeMiter3 = computeMiter(tangent, vec2.create(), lineA, lineB, this.thickness),
406
- _computeMiter4 = _slicedToArray(_computeMiter3, 2),
407
- miterLen = _computeMiter4[0],
408
- miter = _computeMiter4[1];
409
-
410
- var flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;
411
- this.extrusions(positions, normals, cur, miter, miterLen, this.totalDistance);
412
- indices.push.apply(indices, _toConsumableArray(this.lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]));
413
- flip = -1;
414
- vec2.copy(this.normal, miter);
415
- count += 2;
416
- this.lastFlip = flip;
417
- }
418
-
419
- return count;
420
- }
421
- }, {
422
290
  key: "segment",
423
291
  value: function segment(complex, index, last, cur, next) {
424
292
  var count = 0;
@@ -496,10 +364,10 @@ var ExtrudePolyline = function () {
496
364
 
497
365
  direction(lineB, flatNext, flatCur);
498
366
 
499
- var _computeMiter5 = computeMiter(tangent, vec2.create(), lineA, lineB, this.thickness),
500
- _computeMiter6 = _slicedToArray(_computeMiter5, 2),
501
- miterLen = _computeMiter6[0],
502
- miter = _computeMiter6[1];
367
+ var _computeMiter3 = computeMiter(tangent, vec2.create(), lineA, lineB, this.thickness),
368
+ _computeMiter4 = _slicedToArray(_computeMiter3, 2),
369
+ miterLen = _computeMiter4[0],
370
+ miter = _computeMiter4[1];
503
371
 
504
372
  var flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;
505
373
  var bevel = joinBevel;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/extrude_polyline.ts"],"names":["aProjectFlat","vec2","tmp","create","capEnd","lineA","lineB","tangent","computeMiter","lineTangent","miter","start","end","halfThick","add","normalize","fromValues","tmpvec","dot","computeNormal","out","dir","set","direction","a","b","sub","isPointEqual","getArrayUnique","matrix","map","Map","i","length","key","toString","get","splice","ExtrudePolyline","opts","join","cap","miterLimit","thickness","dash","complex","positions","indices","normals","startIndex","indexes","points","originPoints","lastFlip","started","normal","totalDistance","total","count","last","push","originLast","cur","originCur","next","originNext","amt","segment_gaode2","simpleSegment","segment","index","capSquare","joinBevel","flatCur","flatLast","segmentDistance","lineSegmentDistance","out1","out2","currentIndex","extrusions","subtract","miterLen","flip","bevel","limit","copy","flatNext","point","distanceRadio","b1","a1","dx","dy","Math","sqrt"],"mappings":"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","sourcesContent":["import { aProjectFlat } from '@antv/l7-utils';\nimport { vec2, vec3 } from 'gl-matrix';\nconst tmp = vec2.create();\nconst capEnd = vec2.create();\nconst lineA = vec2.create();\nconst lineB = vec2.create();\nconst tangent = vec2.create();\n\nexport function computeMiter(\n lineTangent: vec2,\n miter: vec2,\n start: vec2,\n end: vec2,\n halfThick: number,\n): [number, vec2] {\n vec2.add(lineTangent, start, end);\n vec2.normalize(lineTangent, lineTangent);\n miter = vec2.fromValues(-lineTangent[1], lineTangent[0]);\n const tmpvec = vec2.fromValues(-start[1], start[0]);\n return [halfThick / vec2.dot(miter, tmpvec), miter];\n}\nexport function computeNormal(out: vec2, dir: vec2) {\n return vec2.set(out, -dir[1], dir[0]);\n}\n\nexport function direction(out: vec2, a: vec2, b: vec2) {\n vec2.sub(out, a, b);\n vec2.normalize(out, out);\n return out;\n}\n\nfunction isPointEqual(a: vec2, b: vec2) {\n return a[0] === b[0] && a[1] === b[1];\n}\n\nfunction getArrayUnique(matrix: number[][]) {\n const map = new Map();\n for (let i = 0; i < matrix.length; i++) {\n const key = matrix[0].toString() + '-' + matrix[1].toString();\n if (map.get(key)) {\n matrix.splice(i, 1);\n i++;\n } else {\n map.set(key, key);\n }\n }\n return matrix;\n}\n\nexport interface IExtrudeLineOption {\n join: string;\n cap: string;\n dash: boolean;\n closed: boolean;\n indexOffset: number;\n miterLimit: number;\n thickness: number;\n}\nexport default class ExtrudePolyline {\n public complex: {\n positions: number[];\n indices: number[];\n normals: number[];\n startIndex: number;\n indexes: number[];\n };\n private join: string;\n private cap: string;\n private miterLimit: number;\n private thickness: number;\n private normal: vec2 | null;\n private lastFlip: number = -1;\n private miter: vec2 = vec2.fromValues(0, 0);\n private started: boolean = false;\n private dash: boolean = false;\n private totalDistance: number = 0;\n private currentIndex: number = 0;\n\n constructor(opts: Partial<IExtrudeLineOption> = {}) {\n this.join = opts.join || 'miter';\n this.cap = opts.cap || 'butt';\n this.miterLimit = opts.miterLimit || 10;\n this.thickness = opts.thickness || 1;\n this.dash = opts.dash || false;\n this.complex = {\n positions: [],\n indices: [],\n normals: [],\n startIndex: 0,\n indexes: [],\n };\n }\n\n public extrude_gaode2(points: number[][], originPoints: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1];\n last.push(originPoints[i - 1][2] ?? 0);\n // @ts-ignore\n const originLast = originPoints[i - 1] as vec3;\n\n const cur = points[i];\n cur.push(originPoints[i][2] ?? 0);\n // @ts-ignore\n const originCur = originPoints[i] as vec3;\n\n const next =\n i < points.length - 1\n ? [...points[i + 1], originPoints[i + 1][2] ?? 0]\n : null;\n const originNext =\n i < originPoints.length - 1 ? originPoints[i + 1] : null;\n\n const amt = this.segment_gaode2(\n complex,\n count,\n // @ts-ignore\n last as vec3,\n // @ts-ignore\n cur as vec3,\n // @ts-ignore\n next as vec3,\n // @ts-ignore\n originLast,\n originCur,\n // @ts-ignore\n originNext as vec3,\n );\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n public simpleExtrude_gaode2(points: number[][], originPoints: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1];\n last.push(originPoints[i - 1][2] ?? 0);\n // @ts-ignore\n const originLast = originPoints[i - 1] as vec3;\n\n const cur = points[i];\n cur.push(originPoints[i][2] ?? 0);\n // @ts-ignore\n const originCur = originPoints[i] as vec3;\n\n const next =\n i < points.length - 1\n ? [...points[i + 1], originPoints[i + 1][2] ?? 0]\n : null;\n const originNext =\n i < originPoints.length - 1 ? originPoints[i + 1] : null;\n\n const amt = this.simpleSegment(\n complex,\n count,\n // @ts-ignore\n last as vec3,\n // @ts-ignore\n cur as vec3,\n // @ts-ignore\n next as vec3,\n // @ts-ignore\n originLast,\n originCur,\n // @ts-ignore\n originNext as vec3,\n );\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n public extrude(points: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1] as vec3;\n const cur = points[i] as vec3;\n const next = i < points.length - 1 ? points[i + 1] : null;\n const amt = this.segment(complex, count, last, cur, next as vec3);\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n public simpleExtrude(points: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1] as vec3;\n const cur = points[i] as vec3;\n const next = i < points.length - 1 ? points[i + 1] : null;\n const amt = this.simpleSegment(complex, count, last, cur, next as vec3);\n count += amt;\n }\n\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n private segment_gaode2(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n originLast: vec3,\n originCur: vec3,\n originNext: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const capSquare = this.cap === 'square';\n const joinBevel = this.join === 'bevel';\n const flatCur = aProjectFlat([originCur[0], originCur[1]]) as [\n number,\n number,\n ];\n const flatLast = aProjectFlat([originLast[0], originLast[1]]) as [\n number,\n number,\n ];\n // @ts-ignore\n direction(lineA, cur as vec3, last as vec3);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n // if the end cap is type square, we can just push the verts out a bit\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, last, lineA, -this.thickness);\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.add(out1, this.normal, lineA);\n vec2.add(out2, this.normal, lineA);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n -this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n if (capSquare) {\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.sub(out2, lineA, this.normal);\n vec2.add(out1, lineA, this.normal);\n\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n }\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n // @ts-ignore\n if (isPointEqual(cur as vec2, next as vec2)) {\n vec2.add(\n // @ts-ignore\n next as vec2,\n // @ts-ignore\n cur as vec2,\n vec2.normalize(\n // @ts-ignore\n next as vec2,\n // @ts-ignore\n vec2.subtract(next as vec2, cur as vec2, last as vec2),\n ),\n );\n }\n // @ts-ignore\n direction(lineB, next as vec2, cur as vec2);\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n let bevel = joinBevel;\n if (!bevel && this.join === 'miter') {\n const limit = miterLen;\n if (limit > this.miterLimit) {\n bevel = true;\n }\n }\n\n if (bevel) {\n normals.push(this.normal[0], this.normal[1], 0);\n normals.push(miter[0], miter[1], 0);\n\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n indices.push(\n ...(this.lastFlip !== -flip\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n // now add the bevel triangle\n indices.push(index + 2, index + 3, index + 4);\n\n computeNormal(tmp, lineB);\n vec2.copy(this.normal, tmp); // store normal for next round\n normals.push(this.normal[0], this.normal[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n count += 3;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n }\n this.lastFlip = flip;\n }\n return count;\n }\n private simpleSegment(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n // @ts-ignore\n direction(lineA, flatCur, flatLast);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n const flatNext = aProjectFlat([next[0], next[1]]) as [number, number];\n if (isPointEqual(flatCur, flatNext)) {\n vec2.add(\n flatNext,\n flatCur,\n vec2.normalize(flatNext, vec2.subtract(flatNext, flatCur, flatLast)),\n );\n }\n direction(lineB, flatNext, flatCur);\n\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n this.lastFlip = flip;\n }\n return count;\n }\n private segment(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const capSquare = this.cap === 'square';\n const joinBevel = this.join === 'bevel';\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n // @ts-ignore\n direction(lineA, flatCur, flatLast);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n // if the end cap is type square, we can just push the verts out a bit\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, last, lineA, -this.thickness);\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.add(out1, this.normal, lineA);\n vec2.add(out2, this.normal, lineA);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n -this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n // this.extrusions(positions, normals, last, out, this.thickness);\n // last = capEnd;\n } else {\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, cur, lineA, this.thickness);\n // cur = capEnd;\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.sub(out2, lineA, this.normal);\n vec2.add(out1, lineA, this.normal);\n // this.extrusions(positions, normals, cur, out, this.thickness);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n }\n\n // this.extrusions(positions, normals, cur, this.normal, this.thickness);\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n const flatNext = aProjectFlat([next[0], next[1]]) as [number, number];\n if (isPointEqual(flatCur, flatNext)) {\n vec2.add(\n flatNext,\n flatCur,\n vec2.normalize(flatNext, vec2.subtract(flatNext, flatCur, flatLast)),\n );\n }\n direction(lineB, flatNext, flatCur);\n\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n let bevel = joinBevel;\n if (!bevel && this.join === 'miter') {\n const limit = miterLen;\n if (limit > this.miterLimit) {\n bevel = true;\n }\n }\n\n if (bevel) {\n normals.push(this.normal[0], this.normal[1], 0);\n normals.push(miter[0], miter[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n indices.push(\n ...(this.lastFlip !== -flip\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n // now add the bevel triangle\n indices.push(index + 2, index + 3, index + 4);\n\n computeNormal(tmp, lineB);\n vec2.copy(this.normal, tmp); // store normal for next round\n normals.push(this.normal[0], this.normal[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n count += 3;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n }\n this.lastFlip = flip;\n }\n return count;\n }\n private extrusions(\n positions: number[],\n normals: number[],\n point: vec3, // 顶点\n normal: vec2, // 法向量\n thickness: number, // 高度\n distanceRadio: number,\n ) {\n normals.push(normal[0], normal[1], 0);\n normals.push(normal[0], normal[1], 0);\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n -thickness,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n thickness,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n }\n private lineSegmentDistance(b1: vec3, a1: vec3) {\n const dx = a1[0] - b1[0];\n const dy = a1[1] - b1[1];\n return Math.sqrt(dx * dx + dy * dy);\n }\n}\n"],"file":"extrude_polyline.js"}
1
+ {"version":3,"sources":["../../src/utils/extrude_polyline.ts"],"names":["aProjectFlat","vec2","tmp","create","capEnd","lineA","lineB","tangent","computeMiter","lineTangent","miter","start","end","halfThick","add","normalize","fromValues","tmpvec","dot","computeNormal","out","dir","set","direction","a","b","sub","isPointEqual","getArrayUnique","matrix","map","Map","i","length","key","toString","get","splice","ExtrudePolyline","opts","join","cap","miterLimit","thickness","dash","complex","positions","indices","normals","startIndex","indexes","points","originPoints","lastFlip","started","normal","totalDistance","total","count","last","push","originLast","cur","originCur","next","originNext","amt","segment_gaode2","segment","index","capSquare","joinBevel","flatCur","flatLast","segmentDistance","lineSegmentDistance","out1","out2","currentIndex","extrusions","subtract","miterLen","flip","bevel","limit","copy","flatNext","point","distanceRadio","b1","a1","dx","dy","Math","sqrt"],"mappings":"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","sourcesContent":["import { aProjectFlat } from '@antv/l7-utils';\nimport { vec2, vec3 } from 'gl-matrix';\nconst tmp = vec2.create();\nconst capEnd = vec2.create();\nconst lineA = vec2.create();\nconst lineB = vec2.create();\nconst tangent = vec2.create();\n\nexport function computeMiter(\n lineTangent: vec2,\n miter: vec2,\n start: vec2,\n end: vec2,\n halfThick: number,\n): [number, vec2] {\n vec2.add(lineTangent, start, end);\n vec2.normalize(lineTangent, lineTangent);\n miter = vec2.fromValues(-lineTangent[1], lineTangent[0]);\n const tmpvec = vec2.fromValues(-start[1], start[0]);\n return [halfThick / vec2.dot(miter, tmpvec), miter];\n}\nexport function computeNormal(out: vec2, dir: vec2) {\n return vec2.set(out, -dir[1], dir[0]);\n}\n\nexport function direction(out: vec2, a: vec2, b: vec2) {\n vec2.sub(out, a, b);\n vec2.normalize(out, out);\n return out;\n}\n\nfunction isPointEqual(a: vec2, b: vec2) {\n return a[0] === b[0] && a[1] === b[1];\n}\n\nfunction getArrayUnique(matrix: number[][]) {\n const map = new Map();\n for (let i = 0; i < matrix.length; i++) {\n const key = matrix[0].toString() + '-' + matrix[1].toString();\n if (map.get(key)) {\n matrix.splice(i, 1);\n i++;\n } else {\n map.set(key, key);\n }\n }\n return matrix;\n}\n\nexport interface IExtrudeLineOption {\n join: string;\n cap: string;\n dash: boolean;\n closed: boolean;\n indexOffset: number;\n miterLimit: number;\n thickness: number;\n}\nexport default class ExtrudePolyline {\n public complex: {\n positions: number[];\n indices: number[];\n normals: number[];\n startIndex: number;\n indexes: number[];\n };\n private join: string;\n private cap: string;\n private miterLimit: number;\n private thickness: number;\n private normal: vec2 | null;\n private lastFlip: number = -1;\n private miter: vec2 = vec2.fromValues(0, 0);\n private started: boolean = false;\n private dash: boolean = false;\n private totalDistance: number = 0;\n private currentIndex: number = 0;\n\n constructor(opts: Partial<IExtrudeLineOption> = {}) {\n this.join = opts.join || 'miter';\n this.cap = opts.cap || 'butt';\n this.miterLimit = opts.miterLimit || 10;\n this.thickness = opts.thickness || 1;\n this.dash = opts.dash || false;\n this.complex = {\n positions: [],\n indices: [],\n normals: [],\n startIndex: 0,\n indexes: [],\n };\n }\n\n public extrude_gaode2(points: number[][], originPoints: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1];\n last.push(originPoints[i - 1][2] ?? 0);\n // @ts-ignore\n const originLast = originPoints[i - 1] as vec3;\n\n const cur = points[i];\n cur.push(originPoints[i][2] ?? 0);\n // @ts-ignore\n const originCur = originPoints[i] as vec3;\n\n const next =\n i < points.length - 1\n ? [...points[i + 1], originPoints[i + 1][2] ?? 0]\n : null;\n const originNext =\n i < originPoints.length - 1 ? originPoints[i + 1] : null;\n\n const amt = this.segment_gaode2(\n complex,\n count,\n // @ts-ignore\n last as vec3,\n // @ts-ignore\n cur as vec3,\n // @ts-ignore\n next as vec3,\n // @ts-ignore\n originLast,\n originCur,\n // @ts-ignore\n originNext as vec3,\n );\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n public extrude(points: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1] as vec3;\n const cur = points[i] as vec3;\n const next = i < points.length - 1 ? points[i + 1] : null;\n const amt = this.segment(complex, count, last, cur, next as vec3);\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n private segment_gaode2(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n originLast: vec3,\n originCur: vec3,\n originNext: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const capSquare = this.cap === 'square';\n const joinBevel = this.join === 'bevel';\n const flatCur = aProjectFlat([originCur[0], originCur[1]]) as [\n number,\n number,\n ];\n const flatLast = aProjectFlat([originLast[0], originLast[1]]) as [\n number,\n number,\n ];\n // @ts-ignore\n direction(lineA, cur as vec3, last as vec3);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n // if the end cap is type square, we can just push the verts out a bit\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, last, lineA, -this.thickness);\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.add(out1, this.normal, lineA);\n vec2.add(out2, this.normal, lineA);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n -this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n if (capSquare) {\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.sub(out2, lineA, this.normal);\n vec2.add(out1, lineA, this.normal);\n\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n }\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n // @ts-ignore\n if (isPointEqual(cur as vec2, next as vec2)) {\n vec2.add(\n // @ts-ignore\n next as vec2,\n // @ts-ignore\n cur as vec2,\n vec2.normalize(\n // @ts-ignore\n next as vec2,\n // @ts-ignore\n vec2.subtract(next as vec2, cur as vec2, last as vec2),\n ),\n );\n }\n // @ts-ignore\n direction(lineB, next as vec2, cur as vec2);\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n let bevel = joinBevel;\n if (!bevel && this.join === 'miter') {\n const limit = miterLen;\n if (limit > this.miterLimit) {\n bevel = true;\n }\n }\n\n if (bevel) {\n normals.push(this.normal[0], this.normal[1], 0);\n normals.push(miter[0], miter[1], 0);\n\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n indices.push(\n ...(this.lastFlip !== -flip\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n // now add the bevel triangle\n indices.push(index + 2, index + 3, index + 4);\n\n computeNormal(tmp, lineB);\n vec2.copy(this.normal, tmp); // store normal for next round\n normals.push(this.normal[0], this.normal[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n count += 3;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n }\n this.lastFlip = flip;\n }\n return count;\n }\n private segment(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const capSquare = this.cap === 'square';\n const joinBevel = this.join === 'bevel';\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n // @ts-ignore\n direction(lineA, flatCur, flatLast);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n // if the end cap is type square, we can just push the verts out a bit\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, last, lineA, -this.thickness);\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.add(out1, this.normal, lineA);\n vec2.add(out2, this.normal, lineA);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n -this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n // this.extrusions(positions, normals, last, out, this.thickness);\n // last = capEnd;\n } else {\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, cur, lineA, this.thickness);\n // cur = capEnd;\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.sub(out2, lineA, this.normal);\n vec2.add(out1, lineA, this.normal);\n // this.extrusions(positions, normals, cur, out, this.thickness);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n }\n\n // this.extrusions(positions, normals, cur, this.normal, this.thickness);\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n const flatNext = aProjectFlat([next[0], next[1]]) as [number, number];\n if (isPointEqual(flatCur, flatNext)) {\n vec2.add(\n flatNext,\n flatCur,\n vec2.normalize(flatNext, vec2.subtract(flatNext, flatCur, flatLast)),\n );\n }\n direction(lineB, flatNext, flatCur);\n\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n let bevel = joinBevel;\n if (!bevel && this.join === 'miter') {\n const limit = miterLen;\n if (limit > this.miterLimit) {\n bevel = true;\n }\n }\n\n if (bevel) {\n normals.push(this.normal[0], this.normal[1], 0);\n normals.push(miter[0], miter[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n indices.push(\n ...(this.lastFlip !== -flip\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n // now add the bevel triangle\n indices.push(index + 2, index + 3, index + 4);\n\n computeNormal(tmp, lineB);\n vec2.copy(this.normal, tmp); // store normal for next round\n normals.push(this.normal[0], this.normal[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n count += 3;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n }\n this.lastFlip = flip;\n }\n return count;\n }\n private extrusions(\n positions: number[],\n normals: number[],\n point: vec3, // 顶点\n normal: vec2, // 法向量\n thickness: number, // 高度\n distanceRadio: number,\n ) {\n normals.push(normal[0], normal[1], 0);\n normals.push(normal[0], normal[1], 0);\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n -thickness,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n thickness,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n }\n private lineSegmentDistance(b1: vec3, a1: vec3) {\n const dx = a1[0] - b1[0];\n const dy = a1[1] - b1[1];\n return Math.sqrt(dx * dx + dy * dy);\n }\n}\n"],"file":"extrude_polyline.js"}
@@ -0,0 +1,12 @@
1
+ declare type Position = number[];
2
+ export declare function calculateCentroid(coord: Position | Position[] | Position[][]): Position;
3
+ /**
4
+ * 计算
5
+ * @param points
6
+ * @returns
7
+ */
8
+ export declare function calculatePointsCenterAndRadius(points: number[]): {
9
+ center: number[];
10
+ radius: number;
11
+ };
12
+ export {};
@@ -0,0 +1,53 @@
1
+ import _isNumber from "lodash/isNumber";
2
+ export function calculateCentroid(coord) {
3
+ if (_isNumber(coord[0])) {
4
+ return coord;
5
+ } else if (_isNumber(coord[0][0])) {
6
+ throw new Error('当前数据不支持标注');
7
+ } else if (_isNumber(coord[0][0][0])) {
8
+ var coords = coord;
9
+ var xSum = 0;
10
+ var ySum = 0;
11
+ var len = 0;
12
+ coords.forEach(function (coor) {
13
+ coor.forEach(function (pos) {
14
+ xSum += pos[0];
15
+ ySum += pos[1];
16
+ len++;
17
+ });
18
+ });
19
+ return [xSum / len, ySum / len, 0];
20
+ } else {
21
+ throw new Error('当前数据不支持标注');
22
+ }
23
+ }
24
+ export function calculatePointsCenterAndRadius(points) {
25
+ var maxX = points[0];
26
+ var maxY = points[1];
27
+ var minX = points[0];
28
+ var minY = points[1];
29
+ var xCount = 0;
30
+ var yCount = 0;
31
+ var pCount = 0;
32
+
33
+ for (var i = 0; i < points.length; i += 2) {
34
+ var x = points[i];
35
+ var y = points[i + 1];
36
+
37
+ if (x && y) {
38
+ maxX = Math.max(x, maxX);
39
+ maxY = Math.max(y, maxY);
40
+ minX = Math.min(x, minX);
41
+ minY = Math.min(y, minY);
42
+ xCount += x;
43
+ yCount += y;
44
+ pCount++;
45
+ }
46
+ }
47
+
48
+ return {
49
+ center: [xCount / pCount, yCount / pCount],
50
+ radius: Math.sqrt(Math.pow(maxX - minX, 2) + Math.pow(maxY - minY, 2)) / 2
51
+ };
52
+ }
53
+ //# sourceMappingURL=geo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/geo.ts"],"names":["calculateCentroid","coord","Error","coords","xSum","ySum","len","forEach","coor","pos","calculatePointsCenterAndRadius","points","maxX","maxY","minX","minY","xCount","yCount","pCount","i","length","x","y","Math","max","min","center","radius","sqrt","pow"],"mappings":";AAEA,OAAO,SAASA,iBAAT,CACLC,KADK,EAEK;AAEV,MAAI,UAASA,KAAK,CAAC,CAAD,CAAd,CAAJ,EAAwB;AACtB,WAAOA,KAAP;AACD,GAFD,MAEO,IAAI,UAASA,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAT,CAAJ,EAA2B;AAChC,UAAM,IAAIC,KAAJ,CAAU,WAAV,CAAN;AACD,GAFM,MAEA,IAAI,UAASD,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAT,CAAJ,EAA8B;AACnC,QAAME,MAAM,GAAGF,KAAf;AACA,QAAIG,IAAI,GAAG,CAAX;AACA,QAAIC,IAAI,GAAG,CAAX;AACA,QAAIC,GAAG,GAAG,CAAV;AACAH,IAAAA,MAAM,CAACI,OAAP,CAAe,UAACC,IAAD,EAAsB;AACnCA,MAAAA,IAAI,CAACD,OAAL,CAAa,UAACE,GAAD,EAAS;AACpBL,QAAAA,IAAI,IAAIK,GAAG,CAAC,CAAD,CAAX;AACAJ,QAAAA,IAAI,IAAII,GAAG,CAAC,CAAD,CAAX;AACAH,QAAAA,GAAG;AACJ,OAJD;AAKD,KAND;AAOA,WAAO,CAACF,IAAI,GAAGE,GAAR,EAAaD,IAAI,GAAGC,GAApB,EAAyB,CAAzB,CAAP;AACD,GAbM,MAaA;AACL,UAAM,IAAIJ,KAAJ,CAAU,WAAV,CAAN;AACD;AACF;AAOD,OAAO,SAASQ,8BAAT,CAAwCC,MAAxC,EAA0D;AAC/D,MAAIC,IAAI,GAAGD,MAAM,CAAC,CAAD,CAAjB;AACA,MAAIE,IAAI,GAAGF,MAAM,CAAC,CAAD,CAAjB;AACA,MAAIG,IAAI,GAAGH,MAAM,CAAC,CAAD,CAAjB;AACA,MAAII,IAAI,GAAGJ,MAAM,CAAC,CAAD,CAAjB;AACA,MAAIK,MAAM,GAAG,CAAb;AACA,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIC,MAAM,GAAG,CAAb;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,MAAM,CAACS,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC,QAAME,CAAC,GAAGV,MAAM,CAACQ,CAAD,CAAhB;AACA,QAAMG,CAAC,GAAGX,MAAM,CAACQ,CAAC,GAAG,CAAL,CAAhB;;AACA,QAAIE,CAAC,IAAIC,CAAT,EAAY;AACVV,MAAAA,IAAI,GAAGW,IAAI,CAACC,GAAL,CAASH,CAAT,EAAYT,IAAZ,CAAP;AACAC,MAAAA,IAAI,GAAGU,IAAI,CAACC,GAAL,CAASF,CAAT,EAAYT,IAAZ,CAAP;AACAC,MAAAA,IAAI,GAAGS,IAAI,CAACE,GAAL,CAASJ,CAAT,EAAYP,IAAZ,CAAP;AACAC,MAAAA,IAAI,GAAGQ,IAAI,CAACE,GAAL,CAASH,CAAT,EAAYP,IAAZ,CAAP;AACAC,MAAAA,MAAM,IAAIK,CAAV;AACAJ,MAAAA,MAAM,IAAIK,CAAV;AACAJ,MAAAA,MAAM;AACP;AACF;;AACD,SAAO;AACLQ,IAAAA,MAAM,EAAE,CAACV,MAAM,GAAGE,MAAV,EAAkBD,MAAM,GAAGC,MAA3B,CADH;AAELS,IAAAA,MAAM,EAAEJ,IAAI,CAACK,IAAL,CAAUL,IAAI,CAACM,GAAL,CAASjB,IAAI,GAAGE,IAAhB,EAAsB,CAAtB,IAA2BS,IAAI,CAACM,GAAL,CAAShB,IAAI,GAAGE,IAAhB,EAAsB,CAAtB,CAArC,IAAiE;AAFpE,GAAP;AAID","sourcesContent":["type Position = number[];\nimport { isNumber } from 'lodash';\nexport function calculateCentroid(\n coord: Position | Position[] | Position[][],\n): Position {\n // let pos = coord as Position;\n if (isNumber(coord[0])) {\n return coord as Position;\n } else if (isNumber(coord[0][0])) {\n throw new Error('当前数据不支持标注');\n } else if (isNumber(coord[0][0][0])) {\n const coords = coord as Position[][];\n let xSum = 0;\n let ySum = 0;\n let len = 0;\n coords.forEach((coor: Position[]) => {\n coor.forEach((pos) => {\n xSum += pos[0];\n ySum += pos[1];\n len++;\n });\n });\n return [xSum / len, ySum / len, 0];\n } else {\n throw new Error('当前数据不支持标注');\n }\n}\n\n/**\n * 计算\n * @param points\n * @returns\n */\nexport function calculatePointsCenterAndRadius(points: number[]) {\n let maxX = points[0];\n let maxY = points[1];\n let minX = points[0];\n let minY = points[1];\n let xCount = 0;\n let yCount = 0;\n let pCount = 0;\n\n for (let i = 0; i < points.length; i += 2) {\n const x = points[i];\n const y = points[i + 1];\n if (x && y) {\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n minX = Math.min(x, minX);\n minY = Math.min(y, minY);\n xCount += x;\n yCount += y;\n pCount++;\n }\n }\n return {\n center: [xCount / pCount, yCount / pCount],\n radius: Math.sqrt(Math.pow(maxX - minX, 2) + Math.pow(maxY - minY, 2)) / 2,\n };\n}\n"],"file":"geo.js"}
@@ -0,0 +1,23 @@
1
+ import { vec2 } from 'gl-matrix';
2
+ export declare function direction(out: vec2, a: vec2, b: vec2): vec2;
3
+ export default class ExtrudePolyline {
4
+ complex: {
5
+ positions: number[];
6
+ indices: number[];
7
+ startIndex: number;
8
+ indexes: number[];
9
+ };
10
+ private started;
11
+ private totalDistance;
12
+ private currentIndex;
13
+ constructor();
14
+ simpleExtrude(points: number[][]): {
15
+ positions: number[];
16
+ indices: number[];
17
+ startIndex: number;
18
+ indexes: number[];
19
+ };
20
+ private simpleSegment;
21
+ private extrusions;
22
+ private lineSegmentDistance;
23
+ }