@antv/l7-layers 2.5.36 → 2.5.37-mini

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 (232) hide show
  1. package/lib/core/BaseModel.js +1 -1
  2. package/lib/core/BaseModel.js.map +1 -1
  3. package/lib/heatmap/models/heatmap.js +12 -17
  4. package/lib/heatmap/models/heatmap.js.map +1 -1
  5. package/lib/plugins/LayerStylePlugin.js.map +1 -1
  6. package/lib/plugins/ShaderUniformPlugin.js +3 -1
  7. package/lib/plugins/ShaderUniformPlugin.js.map +1 -1
  8. package/lib/point/models/image.js.map +1 -1
  9. package/package.json +5 -5
  10. package/CHANGELOG.md +0 -492
  11. package/LICENSE.md +0 -21
  12. package/es/citybuliding/building.d.ts +0 -17
  13. package/es/citybuliding/building.js +0 -79
  14. package/es/citybuliding/building.js.map +0 -1
  15. package/es/citybuliding/models/build.d.ts +0 -13
  16. package/es/citybuliding/models/build.js +0 -124
  17. package/es/citybuliding/models/build.js.map +0 -1
  18. package/es/core/BaseLayer.d.ts +0 -174
  19. package/es/core/BaseLayer.js +0 -974
  20. package/es/core/BaseLayer.js.map +0 -1
  21. package/es/core/BaseModel.d.ts +0 -135
  22. package/es/core/BaseModel.js +0 -412
  23. package/es/core/BaseModel.js.map +0 -1
  24. package/es/core/interface.d.ts +0 -19
  25. package/es/core/interface.js +0 -7
  26. package/es/core/interface.js.map +0 -1
  27. package/es/core/schema.d.ts +0 -27
  28. package/es/core/schema.js +0 -23
  29. package/es/core/schema.js.map +0 -1
  30. package/es/core/shape/Path.d.ts +0 -39
  31. package/es/core/shape/Path.js +0 -57
  32. package/es/core/shape/Path.js.map +0 -1
  33. package/es/core/shape/extrude.d.ts +0 -17
  34. package/es/core/shape/extrude.js +0 -143
  35. package/es/core/shape/extrude.js.map +0 -1
  36. package/es/core/triangulation.d.ts +0 -109
  37. package/es/core/triangulation.js +0 -328
  38. package/es/core/triangulation.js.map +0 -1
  39. package/es/earth/index.d.ts +0 -17
  40. package/es/earth/index.js +0 -81
  41. package/es/earth/index.js.map +0 -1
  42. package/es/earth/models/atmosphere.d.ts +0 -9
  43. package/es/earth/models/atmosphere.js +0 -125
  44. package/es/earth/models/atmosphere.js.map +0 -1
  45. package/es/earth/models/base.d.ts +0 -16
  46. package/es/earth/models/base.js +0 -193
  47. package/es/earth/models/base.js.map +0 -1
  48. package/es/earth/models/bloomsphere.d.ts +0 -9
  49. package/es/earth/models/bloomsphere.js +0 -125
  50. package/es/earth/models/bloomsphere.js.map +0 -1
  51. package/es/earth/utils.d.ts +0 -26
  52. package/es/earth/utils.js +0 -81
  53. package/es/earth/utils.js.map +0 -1
  54. package/es/glsl.d.js +0 -2
  55. package/es/glsl.d.js.map +0 -1
  56. package/es/heatmap/index.d.ts +0 -22
  57. package/es/heatmap/index.js +0 -123
  58. package/es/heatmap/index.js.map +0 -1
  59. package/es/heatmap/models/grid.d.ts +0 -8
  60. package/es/heatmap/models/grid.js +0 -90
  61. package/es/heatmap/models/grid.js.map +0 -1
  62. package/es/heatmap/models/grid3d.d.ts +0 -8
  63. package/es/heatmap/models/grid3d.js +0 -122
  64. package/es/heatmap/models/grid3d.js.map +0 -1
  65. package/es/heatmap/models/heatmap.d.ts +0 -24
  66. package/es/heatmap/models/heatmap.js +0 -399
  67. package/es/heatmap/models/heatmap.js.map +0 -1
  68. package/es/heatmap/models/hexagon.d.ts +0 -8
  69. package/es/heatmap/models/hexagon.js +0 -90
  70. package/es/heatmap/models/hexagon.js.map +0 -1
  71. package/es/heatmap/models/index.d.ts +0 -5
  72. package/es/heatmap/models/index.js +0 -13
  73. package/es/heatmap/models/index.js.map +0 -1
  74. package/es/heatmap/triangulation.d.ts +0 -5
  75. package/es/heatmap/triangulation.js +0 -38
  76. package/es/heatmap/triangulation.js.map +0 -1
  77. package/es/image/index.d.ts +0 -22
  78. package/es/image/index.js +0 -82
  79. package/es/image/index.js.map +0 -1
  80. package/es/image/models/image.d.ts +0 -18
  81. package/es/image/models/image.js +0 -127
  82. package/es/image/models/image.js.map +0 -1
  83. package/es/image/models/index.d.ts +0 -5
  84. package/es/image/models/index.js +0 -6
  85. package/es/image/models/index.js.map +0 -1
  86. package/es/index.d.ts +0 -11
  87. package/es/index.js +0 -39
  88. package/es/index.js.map +0 -1
  89. package/es/line/index.d.ts +0 -25
  90. package/es/line/index.js +0 -95
  91. package/es/line/index.js.map +0 -1
  92. package/es/line/models/arc.d.ts +0 -12
  93. package/es/line/models/arc.js +0 -281
  94. package/es/line/models/arc.js.map +0 -1
  95. package/es/line/models/arc_3d.d.ts +0 -12
  96. package/es/line/models/arc_3d.js +0 -277
  97. package/es/line/models/arc_3d.js.map +0 -1
  98. package/es/line/models/great_circle.d.ts +0 -12
  99. package/es/line/models/great_circle.js +0 -269
  100. package/es/line/models/great_circle.js.map +0 -1
  101. package/es/line/models/index.d.ts +0 -5
  102. package/es/line/models/index.js +0 -12
  103. package/es/line/models/index.js.map +0 -1
  104. package/es/line/models/line.d.ts +0 -13
  105. package/es/line/models/line.js +0 -342
  106. package/es/line/models/line.js.map +0 -1
  107. package/es/plugins/DataMappingPlugin.d.ts +0 -13
  108. package/es/plugins/DataMappingPlugin.js +0 -199
  109. package/es/plugins/DataMappingPlugin.js.map +0 -1
  110. package/es/plugins/DataSourcePlugin.d.ts +0 -7
  111. package/es/plugins/DataSourcePlugin.js +0 -73
  112. package/es/plugins/DataSourcePlugin.js.map +0 -1
  113. package/es/plugins/FeatureScalePlugin.d.ts +0 -26
  114. package/es/plugins/FeatureScalePlugin.js +0 -270
  115. package/es/plugins/FeatureScalePlugin.js.map +0 -1
  116. package/es/plugins/LayerAnimateStylePlugin.d.ts +0 -7
  117. package/es/plugins/LayerAnimateStylePlugin.js +0 -50
  118. package/es/plugins/LayerAnimateStylePlugin.js.map +0 -1
  119. package/es/plugins/LayerModelPlugin.d.ts +0 -8
  120. package/es/plugins/LayerModelPlugin.js +0 -34
  121. package/es/plugins/LayerModelPlugin.js.map +0 -1
  122. package/es/plugins/LayerStylePlugin.d.ts +0 -8
  123. package/es/plugins/LayerStylePlugin.js +0 -35
  124. package/es/plugins/LayerStylePlugin.js.map +0 -1
  125. package/es/plugins/LightingPlugin.d.ts +0 -36
  126. package/es/plugins/LightingPlugin.js +0 -100
  127. package/es/plugins/LightingPlugin.js.map +0 -1
  128. package/es/plugins/MultiPassRendererPlugin.d.ts +0 -37
  129. package/es/plugins/MultiPassRendererPlugin.js +0 -79
  130. package/es/plugins/MultiPassRendererPlugin.js.map +0 -1
  131. package/es/plugins/PixelPickingPlugin.d.ts +0 -8
  132. package/es/plugins/PixelPickingPlugin.js +0 -112
  133. package/es/plugins/PixelPickingPlugin.js.map +0 -1
  134. package/es/plugins/RegisterStyleAttributePlugin.d.ts +0 -11
  135. package/es/plugins/RegisterStyleAttributePlugin.js +0 -98
  136. package/es/plugins/RegisterStyleAttributePlugin.js.map +0 -1
  137. package/es/plugins/ShaderUniformPlugin.d.ts +0 -16
  138. package/es/plugins/ShaderUniformPlugin.js +0 -78
  139. package/es/plugins/ShaderUniformPlugin.js.map +0 -1
  140. package/es/plugins/UpdateModelPlugin.d.ts +0 -8
  141. package/es/plugins/UpdateModelPlugin.js +0 -27
  142. package/es/plugins/UpdateModelPlugin.js.map +0 -1
  143. package/es/plugins/UpdateStyleAttributePlugin.d.ts +0 -12
  144. package/es/plugins/UpdateStyleAttributePlugin.js +0 -74
  145. package/es/plugins/UpdateStyleAttributePlugin.js.map +0 -1
  146. package/es/point/index.d.ts +0 -30
  147. package/es/point/index.js +0 -130
  148. package/es/point/index.js.map +0 -1
  149. package/es/point/models/extrude.d.ts +0 -14
  150. package/es/point/models/extrude.js +0 -180
  151. package/es/point/models/extrude.js.map +0 -1
  152. package/es/point/models/fill.d.ts +0 -17
  153. package/es/point/models/fill.js +0 -247
  154. package/es/point/models/fill.js.map +0 -1
  155. package/es/point/models/icon-font.d.ts +0 -11
  156. package/es/point/models/icon-font.js +0 -181
  157. package/es/point/models/icon-font.js.map +0 -1
  158. package/es/point/models/image.d.ts +0 -11
  159. package/es/point/models/image.js +0 -207
  160. package/es/point/models/image.js.map +0 -1
  161. package/es/point/models/index.d.ts +0 -5
  162. package/es/point/models/index.js +0 -16
  163. package/es/point/models/index.js.map +0 -1
  164. package/es/point/models/normal.d.ts +0 -21
  165. package/es/point/models/normal.js +0 -155
  166. package/es/point/models/normal.js.map +0 -1
  167. package/es/point/models/text.d.ts +0 -56
  168. package/es/point/models/text.js +0 -522
  169. package/es/point/models/text.js.map +0 -1
  170. package/es/point/shape/Path.d.ts +0 -40
  171. package/es/point/shape/Path.js +0 -57
  172. package/es/point/shape/Path.js.map +0 -1
  173. package/es/point/shape/extrude.d.ts +0 -15
  174. package/es/point/shape/extrude.js +0 -58
  175. package/es/point/shape/extrude.js.map +0 -1
  176. package/es/polygon/index.d.ts +0 -22
  177. package/es/polygon/index.js +0 -124
  178. package/es/polygon/index.js.map +0 -1
  179. package/es/polygon/models/extrude.d.ts +0 -13
  180. package/es/polygon/models/extrude.js +0 -139
  181. package/es/polygon/models/extrude.js.map +0 -1
  182. package/es/polygon/models/fill.d.ts +0 -13
  183. package/es/polygon/models/fill.js +0 -108
  184. package/es/polygon/models/fill.js.map +0 -1
  185. package/es/polygon/models/index.d.ts +0 -5
  186. package/es/polygon/models/index.js +0 -20
  187. package/es/polygon/models/index.js.map +0 -1
  188. package/es/raster/buffers/triangulation.d.ts +0 -6
  189. package/es/raster/buffers/triangulation.js +0 -28
  190. package/es/raster/buffers/triangulation.js.map +0 -1
  191. package/es/raster/image.d.ts +0 -0
  192. package/es/raster/image.js +0 -2
  193. package/es/raster/image.js.map +0 -1
  194. package/es/raster/index.d.ts +0 -28
  195. package/es/raster/index.js +0 -83
  196. package/es/raster/index.js.map +0 -1
  197. package/es/raster/models/index.d.ts +0 -5
  198. package/es/raster/models/index.js +0 -7
  199. package/es/raster/models/index.js.map +0 -1
  200. package/es/raster/models/raster.d.ts +0 -19
  201. package/es/raster/models/raster.js +0 -152
  202. package/es/raster/models/raster.js.map +0 -1
  203. package/es/raster/raster.d.ts +0 -30
  204. package/es/raster/raster.js +0 -178
  205. package/es/raster/raster.js.map +0 -1
  206. package/es/raster/raster2d.d.ts +0 -27
  207. package/es/raster/raster2d.js +0 -158
  208. package/es/raster/raster2d.js.map +0 -1
  209. package/es/utils/blend.d.ts +0 -2
  210. package/es/utils/blend.js +0 -55
  211. package/es/utils/blend.js.map +0 -1
  212. package/es/utils/collision-index.d.ts +0 -47
  213. package/es/utils/collision-index.js +0 -87
  214. package/es/utils/collision-index.js.map +0 -1
  215. package/es/utils/dataMappingStyle.d.ts +0 -30
  216. package/es/utils/dataMappingStyle.js +0 -88
  217. package/es/utils/dataMappingStyle.js.map +0 -1
  218. package/es/utils/extrude_polyline.d.ts +0 -48
  219. package/es/utils/extrude_polyline.js +0 -405
  220. package/es/utils/extrude_polyline.js.map +0 -1
  221. package/es/utils/geo.d.ts +0 -3
  222. package/es/utils/geo.js +0 -24
  223. package/es/utils/geo.js.map +0 -1
  224. package/es/utils/grid-index.d.ts +0 -28
  225. package/es/utils/grid-index.js +0 -193
  226. package/es/utils/grid-index.js.map +0 -1
  227. package/es/utils/polylineNormal.d.ts +0 -9
  228. package/es/utils/polylineNormal.js +0 -171
  229. package/es/utils/polylineNormal.js.map +0 -1
  230. package/es/utils/symbol-layout.d.ts +0 -43
  231. package/es/utils/symbol-layout.js +0 -260
  232. package/es/utils/symbol-layout.js.map +0 -1
@@ -1,193 +0,0 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
-
5
- 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; } } }; }
6
-
7
- 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); }
8
-
9
- 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; }
10
-
11
- var GridIndex = function () {
12
- function GridIndex(width, height, cellSize) {
13
- _classCallCheck(this, GridIndex);
14
-
15
- _defineProperty(this, "boxCells", []);
16
-
17
- _defineProperty(this, "xCellCount", void 0);
18
-
19
- _defineProperty(this, "yCellCount", void 0);
20
-
21
- _defineProperty(this, "boxKeys", void 0);
22
-
23
- _defineProperty(this, "bboxes", void 0);
24
-
25
- _defineProperty(this, "width", void 0);
26
-
27
- _defineProperty(this, "height", void 0);
28
-
29
- _defineProperty(this, "xScale", void 0);
30
-
31
- _defineProperty(this, "yScale", void 0);
32
-
33
- _defineProperty(this, "boxUid", void 0);
34
-
35
- var boxCells = this.boxCells;
36
- this.xCellCount = Math.ceil(width / cellSize);
37
- this.yCellCount = Math.ceil(height / cellSize);
38
-
39
- for (var i = 0; i < this.xCellCount * this.yCellCount; i++) {
40
- boxCells.push([]);
41
- }
42
-
43
- this.boxKeys = [];
44
- this.bboxes = [];
45
- this.width = width;
46
- this.height = height;
47
- this.xScale = this.xCellCount / width;
48
- this.yScale = this.yCellCount / height;
49
- this.boxUid = 0;
50
- }
51
-
52
- _createClass(GridIndex, [{
53
- key: "insert",
54
- value: function insert(key, x1, y1, x2, y2) {
55
- this.forEachCell(x1, y1, x2, y2, this.insertBoxCell, this.boxUid++);
56
- this.boxKeys.push(key);
57
- this.bboxes.push(x1);
58
- this.bboxes.push(y1);
59
- this.bboxes.push(x2);
60
- this.bboxes.push(y2);
61
- }
62
- }, {
63
- key: "query",
64
- value: function query(x1, y1, x2, y2, predicate) {
65
- return this.queryHitTest(x1, y1, x2, y2, false, predicate);
66
- }
67
- }, {
68
- key: "hitTest",
69
- value: function hitTest(x1, y1, x2, y2, predicate) {
70
- return this.queryHitTest(x1, y1, x2, y2, true, predicate);
71
- }
72
- }, {
73
- key: "insertBoxCell",
74
- value: function insertBoxCell(x1, y1, x2, y2, cellIndex, uid) {
75
- this.boxCells[cellIndex].push(uid);
76
- }
77
- }, {
78
- key: "queryHitTest",
79
- value: function queryHitTest(x1, y1, x2, y2, hitTest, predicate) {
80
- if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {
81
- return hitTest ? false : [];
82
- }
83
-
84
- var result = [];
85
-
86
- if (x1 <= 0 && y1 <= 0 && this.width <= x2 && this.height <= y2) {
87
- if (hitTest) {
88
- return true;
89
- }
90
-
91
- for (var boxUid = 0; boxUid < this.boxKeys.length; boxUid++) {
92
- result.push({
93
- key: this.boxKeys[boxUid],
94
- x1: this.bboxes[boxUid * 4],
95
- y1: this.bboxes[boxUid * 4 + 1],
96
- x2: this.bboxes[boxUid * 4 + 2],
97
- y2: this.bboxes[boxUid * 4 + 3]
98
- });
99
- }
100
-
101
- return predicate ? result.filter(predicate) : result;
102
- }
103
-
104
- var queryArgs = {
105
- hitTest: hitTest,
106
- seenUids: {
107
- box: {},
108
- circle: {}
109
- }
110
- };
111
- this.forEachCell(x1, y1, x2, y2, this.queryCell, result, queryArgs, predicate);
112
- return hitTest ? result.length > 0 : result;
113
- }
114
- }, {
115
- key: "queryCell",
116
- value: function queryCell(x1, y1, x2, y2, cellIndex, result, queryArgs, predicate) {
117
- var seenUids = queryArgs.seenUids;
118
- var boxCell = this.boxCells[cellIndex];
119
-
120
- if (boxCell !== null) {
121
- var bboxes = this.bboxes;
122
-
123
- var _iterator = _createForOfIteratorHelper(boxCell),
124
- _step;
125
-
126
- try {
127
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
128
- var boxUid = _step.value;
129
-
130
- if (!seenUids.box[boxUid]) {
131
- seenUids.box[boxUid] = true;
132
- var offset = boxUid * 4;
133
-
134
- if (x1 <= bboxes[offset + 2] && y1 <= bboxes[offset + 3] && x2 >= bboxes[offset + 0] && y2 >= bboxes[offset + 1] && (!predicate || predicate(this.boxKeys[boxUid]))) {
135
- if (queryArgs.hitTest) {
136
- result.push(true);
137
- return true;
138
- }
139
-
140
- result.push({
141
- key: this.boxKeys[boxUid],
142
- x1: bboxes[offset],
143
- y1: bboxes[offset + 1],
144
- x2: bboxes[offset + 2],
145
- y2: bboxes[offset + 3]
146
- });
147
- }
148
- }
149
- }
150
- } catch (err) {
151
- _iterator.e(err);
152
- } finally {
153
- _iterator.f();
154
- }
155
- }
156
-
157
- return false;
158
- }
159
- }, {
160
- key: "forEachCell",
161
- value: function forEachCell(x1, y1, x2, y2, fn, arg1, arg2, predicate) {
162
- var cx1 = this.convertToXCellCoord(x1);
163
- var cy1 = this.convertToYCellCoord(y1);
164
- var cx2 = this.convertToXCellCoord(x2);
165
- var cy2 = this.convertToYCellCoord(y2);
166
-
167
- for (var x = cx1; x <= cx2; x++) {
168
- for (var y = cy1; y <= cy2; y++) {
169
- var cellIndex = this.xCellCount * y + x;
170
-
171
- if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, predicate)) {
172
- return;
173
- }
174
- }
175
- }
176
- }
177
- }, {
178
- key: "convertToXCellCoord",
179
- value: function convertToXCellCoord(x) {
180
- return Math.max(0, Math.min(this.xCellCount - 1, Math.floor(x * this.xScale)));
181
- }
182
- }, {
183
- key: "convertToYCellCoord",
184
- value: function convertToYCellCoord(y) {
185
- return Math.max(0, Math.min(this.yCellCount - 1, Math.floor(y * this.yScale)));
186
- }
187
- }]);
188
-
189
- return GridIndex;
190
- }();
191
-
192
- export default GridIndex;
193
- //# sourceMappingURL=grid-index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/grid-index.ts"],"names":["GridIndex","width","height","cellSize","boxCells","xCellCount","Math","ceil","yCellCount","i","push","boxKeys","bboxes","xScale","yScale","boxUid","key","x1","y1","x2","y2","forEachCell","insertBoxCell","predicate","queryHitTest","cellIndex","uid","hitTest","result","length","filter","queryArgs","seenUids","box","circle","queryCell","boxCell","offset","fn","arg1","arg2","cx1","convertToXCellCoord","cy1","convertToYCellCoord","cx2","cy2","x","y","call","max","min","floor"],"mappings":"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","sourcesContent":["interface IQueryArgs {\n hitTest: boolean;\n seenUids: { box: any; circle: any };\n}\ntype CallBack = (...args: any[]) => any;\n/**\n * 网格索引,相比 @mapbox/grid-index,在简单计算碰撞检测结果时效率更高\n * @see https://zhuanlan.zhihu.com/p/74373214\n */\nclass GridIndex {\n private boxCells: number[][] = [];\n private xCellCount: number;\n private yCellCount: number;\n private boxKeys: string[];\n private bboxes: number[];\n private width: number;\n private height: number;\n private xScale: number;\n private yScale: number;\n private boxUid: number;\n\n constructor(width: number, height: number, cellSize: number) {\n const boxCells = this.boxCells;\n\n this.xCellCount = Math.ceil(width / cellSize);\n this.yCellCount = Math.ceil(height / cellSize);\n\n for (let i = 0; i < this.xCellCount * this.yCellCount; i++) {\n boxCells.push([]);\n }\n this.boxKeys = [];\n this.bboxes = [];\n\n this.width = width;\n this.height = height;\n this.xScale = this.xCellCount / width;\n this.yScale = this.yCellCount / height;\n this.boxUid = 0;\n }\n\n public insert(key: any, x1: number, y1: number, x2: number, y2: number) {\n this.forEachCell(x1, y1, x2, y2, this.insertBoxCell, this.boxUid++);\n this.boxKeys.push(key);\n this.bboxes.push(x1);\n this.bboxes.push(y1);\n this.bboxes.push(x2);\n this.bboxes.push(y2);\n }\n\n public query(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n predicate?: CallBack,\n ) {\n return this.queryHitTest(x1, y1, x2, y2, false, predicate);\n }\n\n public hitTest(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n predicate?: CallBack,\n ) {\n return this.queryHitTest(x1, y1, x2, y2, true, predicate);\n }\n\n private insertBoxCell(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n cellIndex: number,\n uid: number,\n ) {\n this.boxCells[cellIndex].push(uid);\n }\n\n private queryHitTest(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n hitTest: boolean,\n predicate?: CallBack,\n ) {\n if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n return hitTest ? false : [];\n }\n const result: any[] = [];\n if (x1 <= 0 && y1 <= 0 && this.width <= x2 && this.height <= y2) {\n // 这一步是高效的关键,后续精确碰撞检测结果在计算文本可见性时并不需要\n if (hitTest) {\n return true;\n }\n for (let boxUid = 0; boxUid < this.boxKeys.length; boxUid++) {\n result.push({\n key: this.boxKeys[boxUid],\n x1: this.bboxes[boxUid * 4],\n y1: this.bboxes[boxUid * 4 + 1],\n x2: this.bboxes[boxUid * 4 + 2],\n y2: this.bboxes[boxUid * 4 + 3],\n });\n }\n return predicate ? result.filter(predicate) : result;\n }\n\n const queryArgs = {\n hitTest,\n seenUids: { box: {}, circle: {} },\n };\n this.forEachCell(\n x1,\n y1,\n x2,\n y2,\n this.queryCell,\n result,\n queryArgs,\n predicate,\n );\n return hitTest ? result.length > 0 : result;\n }\n\n private queryCell(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n cellIndex: number,\n result: any[],\n queryArgs?: any,\n predicate?: CallBack,\n ) {\n const seenUids = queryArgs.seenUids;\n const boxCell = this.boxCells[cellIndex];\n if (boxCell !== null) {\n const bboxes = this.bboxes;\n for (const boxUid of boxCell) {\n if (!seenUids.box[boxUid]) {\n seenUids.box[boxUid] = true;\n const offset = boxUid * 4;\n if (\n x1 <= bboxes[offset + 2] &&\n y1 <= bboxes[offset + 3] &&\n x2 >= bboxes[offset + 0] &&\n y2 >= bboxes[offset + 1] &&\n (!predicate || predicate(this.boxKeys[boxUid]))\n ) {\n if (queryArgs.hitTest) {\n result.push(true);\n return true;\n }\n result.push({\n key: this.boxKeys[boxUid],\n x1: bboxes[offset],\n y1: bboxes[offset + 1],\n x2: bboxes[offset + 2],\n y2: bboxes[offset + 3],\n });\n }\n }\n }\n }\n return false;\n }\n\n private forEachCell(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n fn: CallBack,\n arg1: any[] | number,\n arg2?: IQueryArgs,\n predicate?: CallBack,\n ) {\n const cx1 = this.convertToXCellCoord(x1);\n const cy1 = this.convertToYCellCoord(y1);\n const cx2 = this.convertToXCellCoord(x2);\n const cy2 = this.convertToYCellCoord(y2);\n\n for (let x = cx1; x <= cx2; x++) {\n for (let y = cy1; y <= cy2; y++) {\n const cellIndex = this.xCellCount * y + x;\n if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, predicate)) {\n return;\n }\n }\n }\n }\n\n private convertToXCellCoord(x: number) {\n return Math.max(\n 0,\n Math.min(this.xCellCount - 1, Math.floor(x * this.xScale)),\n );\n }\n\n private convertToYCellCoord(y: number) {\n return Math.max(\n 0,\n Math.min(this.yCellCount - 1, Math.floor(y * this.yScale)),\n );\n }\n}\n\nexport default GridIndex;\n"],"file":"grid-index.js"}
@@ -1,9 +0,0 @@
1
- import { vec2 } from 'gl-matrix';
2
- export declare function computeMiter(tangent: vec2, miter: vec2, lineA: vec2, lineB: vec2, halfThick: number): number;
3
- export declare function computeNormal(out: vec2, dir: vec2): vec2;
4
- export declare function direction(out: vec2, a: [number, number], b: [number, number]): vec2;
5
- export default function (points: number[][], closed: boolean, indexOffset: number, isDash?: boolean): {
6
- normals: number[];
7
- attrIndex: number[];
8
- attrPos: number[];
9
- };
@@ -1,171 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { aProjectFlat } from '@antv/l7-utils';
3
- import { vec2 } from 'gl-matrix';
4
- export function computeMiter(tangent, miter, lineA, lineB, halfThick) {
5
- vec2.add(tangent, lineA, lineB);
6
- vec2.normalize(tangent, tangent);
7
- miter = vec2.fromValues(-tangent[1], tangent[0]);
8
- var tmp = vec2.fromValues(-lineA[1], lineA[0]);
9
- return halfThick / vec2.dot(miter, tmp);
10
- }
11
- export function computeNormal(out, dir) {
12
- return vec2.set(out, -dir[1], dir[0]);
13
- }
14
- export function direction(out, a, b) {
15
- vec2.sub(out, a, b);
16
- vec2.normalize(out, out);
17
- return out;
18
- }
19
-
20
- function extrusions(positions, out, miters, point, normal, scale) {
21
- addNext(out, miters, normal, -scale);
22
- addNext(out, miters, normal, scale);
23
- positions.push(point[0], point[1], 0);
24
- positions.push(point[0], point[1], 0);
25
- }
26
-
27
- function addNext(out, miters, normal, length) {
28
- out.push(normal[0], normal[1], 0);
29
- miters.push(length);
30
- }
31
-
32
- function lineSegmentDistance(b1, a1) {
33
- var dx = a1[0] - b1[0];
34
- var dy = a1[1] - b1[1];
35
- return Math.sqrt(dx * dx + dy * dy);
36
- }
37
-
38
- function isPointEqual(a, b) {
39
- return a[0] === b[0] && a[1] === b[1];
40
- }
41
-
42
- export default function (points, closed, indexOffset) {
43
- var isDash = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
44
- var lineA = vec2.fromValues(0, 0);
45
- var lineB = vec2.fromValues(0, 0);
46
- var tangent = vec2.fromValues(0, 0);
47
- var miter = vec2.create();
48
- var started = false;
49
- var lineNormal = null;
50
- var tmp = vec2.create();
51
- var count = indexOffset || 0;
52
- var miterLimit = 4;
53
- var out = [];
54
- var attrPos = [];
55
- var attrIndex = [];
56
- var miters = [];
57
- var attrDistance = [0, 0];
58
-
59
- if (closed) {
60
- points = points.slice();
61
- points.push(points[0]);
62
- }
63
-
64
- var total = points.length;
65
-
66
- for (var i = 1; i < total; i++) {
67
- var index = count;
68
- var last = vec2.fromValues(points[i - 1][0], points[i - 1][1]);
69
- var cur = vec2.fromValues(points[i][0], points[i][1]);
70
- var next = i < points.length - 1 ? vec2.fromValues(points[i + 1][0], points[i + 1][1]) : null;
71
-
72
- if (isPointEqual(last, cur)) {
73
- continue;
74
- }
75
-
76
- if (next) {
77
- var nextIndex = i + 1;
78
-
79
- while (next && isPointEqual(cur, next)) {
80
- next = nextIndex < points.length - 1 ? vec2.fromValues(points[++nextIndex][0], points[nextIndex][1]) : null;
81
- }
82
- }
83
-
84
- var d = 0;
85
- var flatCur = aProjectFlat([cur[0], cur[1]]);
86
- var flatLast = aProjectFlat([last[0], last[1]]);
87
-
88
- if (isDash) {
89
- var lineDistance = lineSegmentDistance(flatCur, flatLast);
90
- d = lineDistance + attrDistance[attrDistance.length - 1];
91
- }
92
-
93
- direction(lineA, flatCur, flatLast);
94
-
95
- if (!lineNormal) {
96
- lineNormal = vec2.create();
97
- computeNormal(lineNormal, lineA);
98
- }
99
-
100
- if (!started) {
101
- started = true;
102
- extrusions(attrPos, out, miters, last, lineNormal, 1);
103
- }
104
-
105
- attrIndex.push(index + 0, index + 2, index + 1);
106
-
107
- if (!next) {
108
- computeNormal(lineNormal, lineA);
109
- extrusions(attrPos, out, miters, cur, lineNormal, 1);
110
- attrDistance.push(d, d);
111
- attrIndex.push(index + 1, index + 2, index + 3);
112
- count += 2;
113
- } else {
114
- var flatNext = aProjectFlat([next[0], next[1]]);
115
- direction(lineB, flatNext, flatCur);
116
- var miterLen = computeMiter(tangent, vec2.fromValues(miter[0], miter[1]), lineA, lineB, 1);
117
- var flip = vec2.dot(tangent, lineNormal) < 0 ? -1 : 1;
118
- var bevel = Math.abs(miterLen) > miterLimit;
119
-
120
- if (Math.abs(miterLen) > 1000) {
121
- extrusions(attrPos, out, miters, cur, lineNormal, 1);
122
- attrIndex.push(index + 1, index + 2, index + 3);
123
- attrIndex.push(index + 2, index + 4, index + 3);
124
- computeNormal(tmp, lineB);
125
- vec2.copy(lineNormal, tmp);
126
- extrusions(attrPos, out, miters, cur, lineNormal, 1);
127
- attrDistance.push(d, d, d, d);
128
- count += 4;
129
- continue;
130
- }
131
-
132
- if (bevel) {
133
- miterLen = miterLimit;
134
- extrusions(attrPos, out, miters, cur, lineNormal, 1);
135
- attrIndex.push(index + 1, index + 2, index + 3);
136
- attrIndex.push.apply(attrIndex, _toConsumableArray(flip === 1 ? [index + 2, index + 4, index + 5] : [index + 4, index + 5, index + 3]));
137
- computeNormal(tmp, lineB);
138
- vec2.copy(lineNormal, tmp);
139
- extrusions(attrPos, out, miters, cur, lineNormal, 1);
140
- attrDistance.push(d, d, d, d);
141
- count += 4;
142
- } else {
143
- extrusions(attrPos, out, miters, cur, lineNormal, 1);
144
- attrIndex.push(index + 1, index + 2, index + 3);
145
- addNext(out, miters, lineNormal, miterLen * -flip);
146
- attrPos.push(cur[0], cur[1], 0);
147
- attrIndex.push(index + 2, index + 4, index + 3);
148
- attrIndex.push(index + 4, index + 5, index + 6);
149
- computeNormal(tmp, lineB);
150
- vec2.copy(lineNormal, tmp);
151
- extrusions(attrPos, out, miters, cur, lineNormal, 1);
152
- attrDistance.push(d, d, d, d, d);
153
- count += 5;
154
- }
155
- }
156
- }
157
-
158
- var pickData = [];
159
-
160
- for (var _i = 0; _i < miters.length; _i++) {
161
- var totalDistance = attrDistance[attrDistance.length - 1];
162
- pickData.push(attrPos[_i * 3], attrPos[_i * 3 + 1], attrPos[_i * 3 + 2], attrDistance[_i], miters[_i], totalDistance);
163
- }
164
-
165
- return {
166
- normals: out,
167
- attrIndex: attrIndex,
168
- attrPos: pickData
169
- };
170
- }
171
- //# sourceMappingURL=polylineNormal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/polylineNormal.ts"],"names":["aProjectFlat","vec2","computeMiter","tangent","miter","lineA","lineB","halfThick","add","normalize","fromValues","tmp","dot","computeNormal","out","dir","set","direction","a","b","sub","extrusions","positions","miters","point","normal","scale","addNext","push","length","lineSegmentDistance","b1","a1","dx","dy","Math","sqrt","isPointEqual","points","closed","indexOffset","isDash","create","started","lineNormal","count","miterLimit","attrPos","attrIndex","attrDistance","slice","total","i","index","last","cur","next","nextIndex","d","flatCur","flatLast","lineDistance","flatNext","miterLen","flip","bevel","abs","copy","pickData","totalDistance","normals"],"mappings":"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","sourcesContent":["import { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport { vec2 } from 'gl-matrix';\nexport function computeMiter(\n tangent: vec2,\n miter: vec2,\n lineA: vec2,\n lineB: vec2,\n halfThick: number,\n) {\n vec2.add(tangent, lineA, lineB);\n vec2.normalize(tangent, tangent);\n miter = vec2.fromValues(-tangent[1], tangent[0]);\n const tmp = vec2.fromValues(-lineA[1], lineA[0]);\n return halfThick / vec2.dot(miter, tmp);\n}\nexport function computeNormal(out: vec2, dir: vec2) {\n return vec2.set(out, -dir[1], dir[0]);\n}\nexport function direction(out: vec2, a: [number, number], b: [number, number]) {\n // const a1 = aProjectFlat([a[0], a[1]]) as [number, number];\n // const b1 = aProjectFlat([b[0], b[1]]) as [number, number];\n vec2.sub(out, a, b);\n vec2.normalize(out, out);\n return out;\n}\nfunction extrusions(\n positions: number[],\n out: number[],\n miters: number[],\n point: vec2,\n normal: vec2,\n scale: number,\n) {\n addNext(out, miters, normal, -scale);\n addNext(out, miters, normal, scale);\n positions.push(point[0], point[1], 0);\n positions.push(point[0], point[1], 0);\n}\n\nfunction addNext(\n out: number[],\n miters: number[],\n normal: vec2,\n length: number,\n) {\n out.push(normal[0], normal[1], 0);\n miters.push(length);\n}\n\nfunction lineSegmentDistance(b1: vec2, a1: vec2) {\n const dx = a1[0] - b1[0];\n const dy = a1[1] - b1[1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction isPointEqual(a: vec2, b: vec2) {\n return a[0] === b[0] && a[1] === b[1];\n}\n\nexport default function(\n points: number[][],\n closed: boolean,\n indexOffset: number,\n isDash: boolean = true,\n) {\n const lineA = vec2.fromValues(0, 0);\n const lineB = vec2.fromValues(0, 0);\n const tangent = vec2.fromValues(0, 0);\n const miter: vec2 = vec2.create();\n let started = false;\n let lineNormal = null;\n const tmp = vec2.create();\n let count = indexOffset || 0;\n const miterLimit = 4;\n\n const out: number[] = [];\n const attrPos: number[] = [];\n const attrIndex: number[] = [];\n const miters: number[] = [];\n const attrDistance = [0, 0];\n if (closed) {\n points = points.slice();\n points.push(points[0]);\n }\n\n const total = points.length;\n\n for (let i = 1; i < total; i++) {\n const index = count;\n const last = vec2.fromValues(points[i - 1][0], points[i - 1][1]);\n const cur = vec2.fromValues(points[i][0], points[i][1]);\n let next =\n i < points.length - 1\n ? vec2.fromValues(points[i + 1][0], points[i + 1][1])\n : null;\n // 如果当前点和前一点相同,跳过\n if (isPointEqual(last, cur)) {\n continue;\n }\n if (next) {\n let nextIndex = i + 1;\n // 找到不相同的下一点\n while (next && isPointEqual(cur, next)) {\n next =\n nextIndex < points.length - 1\n ? vec2.fromValues(points[++nextIndex][0], points[nextIndex][1])\n : null;\n }\n }\n let d = 0;\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n if (isDash) {\n const lineDistance = lineSegmentDistance(flatCur, flatLast);\n d = lineDistance + attrDistance[attrDistance.length - 1];\n }\n\n direction(lineA, flatCur, flatLast);\n if (!lineNormal) {\n lineNormal = vec2.create();\n computeNormal(lineNormal, lineA);\n }\n\n if (!started) {\n started = true;\n extrusions(attrPos, out, miters, last, lineNormal, 1);\n }\n\n attrIndex.push(index + 0, index + 2, index + 1);\n\n // no miter, simple segment\n if (!next) {\n // reset normal\n computeNormal(lineNormal, lineA);\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d);\n attrIndex.push(index + 1, index + 2, index + 3);\n count += 2;\n } else {\n const flatNext = aProjectFlat([next[0], next[1]]) as [number, number];\n // get unit dir of next line\n direction(lineB, flatNext, flatCur);\n\n // stores tangent & miter\n let miterLen = computeMiter(\n tangent,\n vec2.fromValues(miter[0], miter[1]),\n lineA,\n lineB,\n 1,\n );\n\n // get orientation\n const flip = vec2.dot(tangent, lineNormal) < 0 ? -1 : 1;\n const bevel = Math.abs(miterLen) > miterLimit;\n\n // 处理前后两条线段重合的情况,这种情况不需要使用任何接头(miter/bevel)。\n // 理论上这种情况下 miterLen = Infinity,本应通过 isFinite(miterLen) 判断,\n // 但是 AMap 投影变换后丢失精度,只能通过一个阈值(1000)判断。\n\n if (Math.abs(miterLen) > 1000) {\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrIndex.push(index + 1, index + 2, index + 3);\n attrIndex.push(index + 2, index + 4, index + 3);\n computeNormal(tmp, lineB);\n vec2.copy(lineNormal, tmp); // store normal for next round\n\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d, d, d);\n\n // the miter is now the normal for our next join\n count += 4;\n continue;\n }\n if (bevel) {\n miterLen = miterLimit;\n\n // next two points in our first segment\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n\n attrIndex.push(index + 1, index + 2, index + 3);\n\n // now add the bevel triangle\n attrIndex.push(\n ...(flip === 1\n ? [index + 2, index + 4, index + 5]\n : [index + 4, index + 5, index + 3]),\n );\n\n computeNormal(tmp, lineB);\n vec2.copy(lineNormal, tmp); // store normal for next round\n\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d, d, d);\n\n // the miter is now the normal for our next join\n count += 4;\n } else {\n // next two points in our first segment\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrIndex.push(index + 1, index + 2, index + 3);\n\n // now add the miter triangles\n addNext(out, miters, lineNormal, miterLen * -flip);\n attrPos.push(cur[0], cur[1], 0);\n attrIndex.push(index + 2, index + 4, index + 3);\n attrIndex.push(index + 4, index + 5, index + 6);\n computeNormal(tmp, lineB);\n vec2.copy(lineNormal, tmp); // store normal for next round\n\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d, d, d, d);\n\n // the miter is now the normal for our next join\n count += 5;\n }\n }\n }\n const pickData = [];\n for (let i = 0; i < miters.length; i++) {\n const totalDistance = attrDistance[attrDistance.length - 1];\n pickData.push(\n attrPos[i * 3],\n attrPos[i * 3 + 1],\n attrPos[i * 3 + 2],\n attrDistance[i], // dash\n miters[i],\n totalDistance, // dash\n );\n }\n return {\n normals: out,\n attrIndex,\n attrPos: pickData, // [x,y,z, distance, miter ,t0tal ]\n };\n}\n// [x,y,z, distance, miter ]\n"],"file":"polylineNormal.js"}
@@ -1,43 +0,0 @@
1
- interface IPoint {
2
- x: number;
3
- y: number;
4
- }
5
- export declare type anchorType = 'right' | 'top-right' | 'left' | 'bottom-right' | 'left' | 'top-left' | 'bottom-left' | 'bottom' | 'bottom-right' | 'bottom-left' | 'top' | 'top-right' | 'top-left' | 'center';
6
- export interface IGlyphQuad {
7
- tr: IPoint;
8
- tl: IPoint;
9
- bl: IPoint;
10
- br: IPoint;
11
- tex: {
12
- x: number;
13
- y: number;
14
- height: number;
15
- width: number;
16
- advance: number;
17
- };
18
- glyphOffset: [number, number];
19
- }
20
- /**
21
- * 计算文本中每个独立字符相对锚点的位置
22
- *
23
- * @param {string} text 原始文本
24
- * @param {*} glyphs mapping
25
- * @param {number} lineHeight 行高
26
- * @param {string} textAnchor 文本相对于锚点的位置
27
- * @param {string} textJustify 左右对齐
28
- * @param {number} spacing 字符间距
29
- * @param {[number, number]} translate 文本水平 & 垂直偏移量
30
- * @param {[boolean]} isIconFont 是否是 iconfont
31
- * @return {boolean|shaping} 每个字符相对于锚点的位置
32
- */
33
- export declare function shapeText(text: string, glyphs: any, lineHeight: number, textAnchor: anchorType, textJustify: string, spacing: number, translate: [number, number] | undefined, isIconFont: boolean): false | {
34
- positionedGlyphs: any[];
35
- top: number;
36
- bottom: number;
37
- left: number;
38
- right: number;
39
- lineCount: number;
40
- text: string;
41
- };
42
- export declare function getGlyphQuads(shaping: any, textOffset: [number, number] | undefined, alongLine: boolean): IGlyphQuad[];
43
- export {};