@go-home-early/go-home-early98 0.3.1 → 0.3.3

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 (56) hide show
  1. package/README.md +53 -24
  2. package/dist/go-home-early.umd.js +5 -5
  3. package/package.json +4 -18
  4. package/src/packages/Cesium/DrawMap/DrawJs/CesiumEntityEdit.js +427 -0
  5. package/src/packages/Cesium/DrawMap/DrawJs/CreatePolygonOnGround.js +202 -0
  6. package/src/packages/Cesium/DrawMap/DrawJs/DrawAttackArrow.js +477 -0
  7. package/src/packages/Cesium/DrawMap/DrawJs/DrawBillboard.js +114 -0
  8. package/src/packages/Cesium/DrawMap/DrawJs/DrawCircle.js +311 -0
  9. package/src/packages/Cesium/DrawMap/DrawJs/DrawCircleTY.js +237 -0
  10. package/src/packages/Cesium/DrawMap/DrawJs/DrawCurve.js +256 -0
  11. package/src/packages/Cesium/DrawMap/DrawJs/DrawPincerArrow.js +584 -0
  12. package/src/packages/Cesium/DrawMap/DrawJs/DrawPoint.js +158 -0
  13. package/src/packages/Cesium/DrawMap/DrawJs/DrawPolygon.js +215 -0
  14. package/src/packages/Cesium/DrawMap/DrawJs/DrawPolyline.js +213 -0
  15. package/src/packages/Cesium/DrawMap/DrawJs/DrawPolylineJT.js +218 -0
  16. package/src/packages/Cesium/DrawMap/DrawJs/DrawProFile.js +314 -0
  17. package/src/packages/Cesium/DrawMap/DrawJs/DrawRectangle.js +215 -0
  18. package/src/packages/Cesium/DrawMap/DrawJs/DrawstraightArrow.js +364 -0
  19. package/src/packages/Cesium/DrawMap/DrawJs/MeasurePolygon.js +337 -0
  20. package/src/packages/Cesium/DrawMap/DrawJs/MeasurePolyline.js +285 -0
  21. package/src/packages/Cesium/DrawMap/DrawJs/ReminderTip.js +78 -0
  22. package/src/packages/Cesium/DrawMap/DrawJs/SlopeAspect.js +436 -0
  23. package/src/packages/Cesium/DrawMap/DrawJs/measureLength.js +177 -0
  24. package/src/packages/Cesium/DrawMap/index.vue +272 -0
  25. package/src/packages/Cesium/components/LocationDialog.vue +283 -0
  26. package/src/packages/Cesium/components/Popup.vue +591 -0
  27. package/src/packages/Cesium/components/PoumianDialog.vue +200 -0
  28. package/src/packages/Cesium/imgs/add-off.png +0 -0
  29. package/src/packages/Cesium/imgs/add.png +0 -0
  30. package/src/packages/Cesium/imgs/circle.png +0 -0
  31. package/src/packages/Cesium/imgs/icon-position-blue.png +0 -0
  32. package/src/packages/Cesium/imgs/line.png +0 -0
  33. package/src/packages/Cesium/imgs/map-delete.png +0 -0
  34. package/src/packages/Cesium/imgs/map.png +0 -0
  35. package/src/packages/Cesium/imgs/orientation-bg.svg +14 -0
  36. package/src/packages/Cesium/imgs/orientation.svg +21 -0
  37. package/src/packages/Cesium/imgs/poi.png +0 -0
  38. package/src/packages/Cesium/imgs/point.png +0 -0
  39. package/src/packages/Cesium/imgs/polygon.png +0 -0
  40. package/src/packages/Cesium/imgs/popup/back-popup-img.png +0 -0
  41. package/src/packages/Cesium/imgs/popup/backimg-btn.png +0 -0
  42. package/src/packages/Cesium/imgs/popup/dialog-bd.png +0 -0
  43. package/src/packages/Cesium/imgs/popup/dialog-btn.png +0 -0
  44. package/src/packages/Cesium/imgs/popup/dialog-ft.png +0 -0
  45. package/src/packages/Cesium/imgs/popup/dialog-hd.png +0 -0
  46. package/src/packages/Cesium/imgs/reduce-off.png +0 -0
  47. package/src/packages/Cesium/index.md +292 -0
  48. package/src/packages/Cesium/index.vue +3830 -0
  49. package/src/packages/Cesium/materials/CircularDiffusionMaterialProperty.js +98 -0
  50. package/src/packages/Cesium/materials/CircularRippleMaterialProperty.js +126 -0
  51. package/src/packages/Cesium/materials/PolylineArrowMaterialProperty.js +109 -0
  52. package/src/packages/Cesium/utils/MeasureHeight.js +261 -0
  53. package/src/packages/Cesium/utils/MeasureTools.js +1188 -0
  54. package/src/packages/index.js +33 -0
  55. package/src/packages/utils/charts.js +54 -0
  56. package/src/packages/utils/index.js +50 -0
@@ -0,0 +1,215 @@
1
+ // DrawCurve
2
+ /*
3
+ 绘制矩形
4
+ */
5
+ import * as turf from '@turf/turf';
6
+ class DrawRectangle {
7
+ constructor(arg) {
8
+ this.drawName = 'DrawPolygon';
9
+ this.viewer = arg.viewer;
10
+ this.Cesium = arg.Cesium;
11
+ this.Text = arg.data.text || '';
12
+ this.Color = arg.data.color || '#000';
13
+ this.imgUrl = arg.data.imgUrl || '';
14
+ this.FontSize = arg.data.fontSize || 16;
15
+ this.callback = arg.data.callback || null;
16
+ this.pxNum = arg.data.pxNum || 5;
17
+ this.handler = null;
18
+ this.floatingPoint = null; // 标识点
19
+ this._rectangle = null; // 活动矩形
20
+ this._rectangleLast = null; // 最后一个矩形
21
+ this._positions = []; // 活动点
22
+ this._entities_point = []; // 脏数据
23
+ this._entities_rectangle = []; // 脏数据
24
+ this._rectangleData = null; // 用于构造矩形数据
25
+ }
26
+
27
+ // 返回最后图形
28
+ get line() {
29
+ return this._rectangleLast;
30
+ }
31
+ // 修改样式
32
+ updateStyleFunction(data) {
33
+ this.Text = data.text || '';
34
+ this.Color = data.color || '#000';
35
+ this.imgUrl = data.imgUrl || '';
36
+ this.FontSize = data.fontSize || 16;
37
+ this.callback = data.callback || null;
38
+ }
39
+
40
+ // 返回矩形数据
41
+ getData() {
42
+ return this._rectangleData;
43
+ }
44
+
45
+ // 加载
46
+ loadRectangle(data) {
47
+ for (let i = 0; i < this._entities_point.length; i++) {
48
+ this.viewer.entities.remove(this._entities_point[i]);
49
+ }
50
+ var $this = this;
51
+ for (let i = 0; i < $this._entities_point.length; i++) {
52
+ $this.viewer.entities.remove($this._entities_point[i]);
53
+ }
54
+ var shape = this.viewer.entities.add({
55
+ name: 'rectangle',
56
+ rectangle: {
57
+ coordinates: $this.Cesium.Rectangle.fromCartesianArray(data),
58
+ material: $this.Cesium.Color.fromCssColorString($this.Color)
59
+ }
60
+ });
61
+ $this._entities_rectangle.push(shape);
62
+ return shape;
63
+ }
64
+
65
+ // 开始创建
66
+ startCreate() {
67
+ var $this = this;
68
+ this.handler = new this.Cesium.ScreenSpaceEventHandler(
69
+ this.viewer.scene.canvas
70
+ );
71
+
72
+ this.handler.setInputAction(function(evt) {
73
+ // 单机开始绘制
74
+ // 屏幕坐标转地形上坐标
75
+ var cartesian = $this.getCatesian3FromPX(evt.position);
76
+ if ($this._positions.length == 0) {
77
+ $this._positions.push(cartesian.clone());
78
+ $this.floatingPoint = $this.createPoint(cartesian);
79
+ $this.createPoint(cartesian); // 绘制点
80
+ }
81
+ $this._positions.push(cartesian);
82
+ }, $this.Cesium.ScreenSpaceEventType.LEFT_CLICK);
83
+
84
+ this.handler.setInputAction(function(evt) {
85
+ // 移动时绘制线
86
+ if ($this._positions.length < 3) return;
87
+ var cartesian = $this.getCatesian3FromPX(evt.endPosition);
88
+ if (!$this.Cesium.defined($this._rectangle)) {
89
+ $this._rectangle = $this.createRectangle();
90
+ }
91
+ $this.floatingPoint.position.setValue(cartesian);
92
+ if ($this._rectangle) {
93
+ // 因为有时候获取移动的点会出现undefined导致报错,所以在这里控制住
94
+ if (cartesian.x && cartesian.y && cartesian.z) {
95
+ $this._positions.pop();
96
+ $this._positions.push(cartesian);
97
+ }
98
+ }
99
+ }, $this.Cesium.ScreenSpaceEventType.MOUSE_MOVE);
100
+
101
+ this.handler.setInputAction(function(evt) {
102
+ if (!$this._rectangle) return;
103
+ var cartesian = $this.getCatesian3FromPX(evt.position);
104
+ $this._positions.pop();
105
+ $this._positions.push(cartesian);
106
+ $this.createPoint(cartesian); // 绘制点
107
+ $this._rectangleData = $this._positions.concat();
108
+ $this.viewer.entities.remove($this._rectangle); // 移除
109
+ $this._rectangle = null;
110
+ $this._positions = [];
111
+ $this.floatingPoint.position.setValue(cartesian);
112
+ var rectangle = $this.loadRectangle($this._rectangleData); // 加载
113
+ $this._entities_rectangle.push(rectangle);
114
+ $this._rectangleLast = rectangle;
115
+ if (typeof $this.callback == 'function') {
116
+ var entity = rectangle;
117
+
118
+ if (entity.rectangle) {
119
+ // 获取矩形实体的对角线顶点坐标
120
+
121
+ var quadrupoleCoordinate = entity.rectangle.coordinates.getValue(
122
+ $this.Cesium.JulianDate.now()
123
+ );
124
+
125
+ // 将顶点坐标转换为 turf 库中的矩形对象
126
+ const rectangle1 = turf.bboxPolygon([
127
+ $this.Cesium.Math.toDegrees(quadrupoleCoordinate.west),
128
+ $this.Cesium.Math.toDegrees(quadrupoleCoordinate.south),
129
+ $this.Cesium.Math.toDegrees(quadrupoleCoordinate.east),
130
+ $this.Cesium.Math.toDegrees(quadrupoleCoordinate.north)
131
+ ]);
132
+
133
+ // 将矩形对象封装为 GeoJSON 对象
134
+ var geojson = {
135
+ type: 'Feature',
136
+ geometry: rectangle1.geometry,
137
+ properties: {
138
+ color: $this.Color
139
+ }
140
+ };
141
+
142
+ $this.callback(geojson);
143
+ }
144
+ }
145
+ // $this.handler.destroy();
146
+ }, $this.Cesium.ScreenSpaceEventType.RIGHT_CLICK);
147
+ }
148
+
149
+ // 创建点
150
+ createPoint(cartesian) {
151
+ var $this = this;
152
+ var point = this.viewer.entities.add({
153
+ position: cartesian,
154
+ point: {
155
+ pixelSize: 10,
156
+ color: $this.Cesium.Color.YELLOW
157
+ }
158
+ });
159
+ $this._entities_point.push(point);
160
+ return point;
161
+ }
162
+
163
+ // 创建矩形
164
+ createRectangle() {
165
+ var $this = this;
166
+ var shape = this.viewer.entities.add({
167
+ name: 'rectangle',
168
+ rectangle: {
169
+ coordinates: new $this.Cesium.CallbackProperty(function() {
170
+ var obj = $this.Cesium.Rectangle.fromCartesianArray($this._positions);
171
+ return obj;
172
+ }, false),
173
+ material:
174
+ $this.Cesium.Color.fromCssColorString('#ffffff').withAlpha(0.5)
175
+ }
176
+ });
177
+ $this._entities_rectangle.push(shape);
178
+ return shape;
179
+ }
180
+
181
+ // 销毁
182
+ destroy() {
183
+ if (this.handler) {
184
+ this.handler.destroy();
185
+ this.handler = null;
186
+ }
187
+ }
188
+
189
+ // 清空实体对象
190
+ clear() {
191
+ for (let i = 0; i < this._entities_point.length; i++) {
192
+ this.viewer.entities.remove(this._entities_point[i]);
193
+ }
194
+ for (let i = 0; i < this._entities_rectangle.length; i++) {
195
+ this.viewer.entities.remove(this._entities_rectangle[i]);
196
+ }
197
+ this.floatingPoint = null; // 标识点
198
+ this._rectangle = null; // 活动矩形
199
+ this._rectangleLast = null; // 最后一个矩形
200
+ this._positions = []; // 活动点
201
+ this._entities_point = []; // 脏数据
202
+ this._entities_rectangle = []; // 脏数据
203
+ this._rectangleData = null; // 用于构造矩形数据
204
+ }
205
+
206
+ getCatesian3FromPX(px) {
207
+ var cartesian;
208
+ var ray = this.viewer.camera.getPickRay(px);
209
+ if (!ray) return null;
210
+ cartesian = this.viewer.scene.globe.pick(ray, this.viewer.scene);
211
+ return cartesian;
212
+ }
213
+ }
214
+
215
+ export default DrawRectangle;
@@ -0,0 +1,364 @@
1
+ // DrawstraightArrow
2
+ /*
3
+ 绘制进攻箭头
4
+ */
5
+ class DrawstraightArrow {
6
+ constructor(arg) {
7
+ this.drawName = 'DrawstraightArrow';
8
+ this.viewer = arg.viewer;
9
+ this.Cesium = arg.Cesium;
10
+ this.Text = arg.data.text || '';
11
+ this.Color = arg.data.color || '#000';
12
+ this.imgUrl = arg.data.imgUrl || '';
13
+ this.FontSize = arg.data.fontSize || 16;
14
+ this.callback = arg.data.callback || null;
15
+ this.pxNum = arg.data.pxNum || 5;
16
+ this.handler = null;
17
+ this.floatingPoint = null; // 标识点
18
+ this._straightArrow = null; // 活动箭头
19
+ this._straightArrowLast = null; // 最后一个箭头
20
+ this._positions = []; // 活动点
21
+ this._entities_point = []; // 脏数据
22
+ this._entities_straightArrow = []; // 脏数据
23
+ this._straightArrowData = null; // 用于构造箭头数据
24
+ }
25
+
26
+ // 返回箭头
27
+ get straightArrow() {
28
+ return this._straightArrowLast;
29
+ }
30
+
31
+ // 修改样式
32
+ updateStyleFunction(data) {
33
+ this.Text = data.text || '';
34
+ this.Color = data.color || '#000';
35
+ this.imgUrl = data.imgUrl || '';
36
+ this.FontSize = data.fontSize || 16;
37
+ this.callback = data.callback || null;
38
+ }
39
+
40
+ // 返回箭头数据用于加载箭头
41
+ getData() {
42
+ return this._straightArrowData;
43
+ }
44
+
45
+ // 加载箭头
46
+ loadStraightArrow(data) {
47
+ var $this = this;
48
+ if (data.length < 2) {
49
+ return null;
50
+ }
51
+ for (var i = 0; i < this._entities_point.length; i++) {
52
+ this.viewer.entities.remove(this._entities_point[i]);
53
+ }
54
+ var length = data.length;
55
+ var p1 = data[0];
56
+ var p2 = data[length - 1];
57
+ var firstPoint = $this.cartesianToLatlng(p1);
58
+ var endPoints = $this.cartesianToLatlng(p2);
59
+ var arrow = [];
60
+ var res = $this.fineArrow(
61
+ [firstPoint[0], firstPoint[1]],
62
+ [endPoints[0], endPoints[1]]
63
+ );
64
+ for (let i = 0; i < res.length; i++) {
65
+ var cart3 = new $this.Cesium.Cartesian3(res[i].x, res[i].y, res[i].z);
66
+ arrow.push(cart3);
67
+ }
68
+ var arrowEntity = $this.viewer.entities.add({
69
+ polygon: {
70
+ hierarchy: new $this.Cesium.PolygonHierarchy(arrow),
71
+ show: true,
72
+ fill: true,
73
+ clampToGround: true,
74
+ material: $this.Cesium.Color.fromCssColorString($this.Color)
75
+ }
76
+ });
77
+ return arrowEntity;
78
+ }
79
+
80
+ // 开始创建
81
+ startCreate() {
82
+ var $this = this;
83
+ this.handler = new this.Cesium.ScreenSpaceEventHandler(
84
+ this.viewer.scene.canvas
85
+ );
86
+
87
+ this.handler.setInputAction(function(evt) {
88
+ // 单机开始绘制
89
+ // 屏幕坐标转地形上坐标
90
+ var cartesian = $this.getCatesian3FromPX(evt.position);
91
+ if ($this._positions.length == 0) {
92
+ $this._positions.push(cartesian.clone());
93
+ $this.floatingPoint = $this.createPoint(cartesian);
94
+ }
95
+ if (!$this._straightArrow) {
96
+ $this.createPoint(cartesian); // 绘制点
97
+ }
98
+ $this._positions.push(cartesian);
99
+ }, $this.Cesium.ScreenSpaceEventType.LEFT_CLICK);
100
+
101
+ this.handler.setInputAction(function(evt) {
102
+ // 移动时绘制面
103
+ if ($this._positions.length < 2) return;
104
+ var cartesian = $this.getCatesian3FromPX(evt.endPosition);
105
+ if (!$this.Cesium.defined($this._straightArrow)) {
106
+ $this._straightArrow = $this.createStraightArrow();
107
+ }
108
+ $this.floatingPoint.position.setValue(cartesian);
109
+ if ($this._straightArrow) {
110
+ // 因为有时候获取移动的点会出现undefined导致报错,所以在这里控制住
111
+ if (cartesian.x && cartesian.y && cartesian.z) {
112
+ $this._positions.pop();
113
+ $this._positions.push(cartesian);
114
+ }
115
+ }
116
+ }, $this.Cesium.ScreenSpaceEventType.MOUSE_MOVE);
117
+
118
+ this.handler.setInputAction(function(evt) {
119
+ if (!$this._straightArrow) return;
120
+ var cartesian = $this.getCatesian3FromPX(evt.position);
121
+ $this._positions.pop();
122
+ $this._positions.push(cartesian);
123
+ $this._straightArrowData = $this._positions.concat();
124
+ $this.viewer.entities.remove($this._straightArrow); // 移除
125
+ $this._straightArrow = null;
126
+ $this._positions = [];
127
+ $this.floatingPoint.position.setValue(cartesian);
128
+ var straightArrow = $this.loadStraightArrow($this._straightArrowData); // 加载
129
+ $this._entities_straightArrow.push(straightArrow);
130
+ $this._straightArrowLast = straightArrow;
131
+ $this.clearPoint();
132
+ if (typeof $this.callback == 'function') {
133
+ // 提取多边形层次结构
134
+ var hierarchy = straightArrow.polygon.hierarchy.getValue();
135
+
136
+ // 从层次结构中提取坐标
137
+ var coordinates = hierarchy.positions.map(function(position) {
138
+ var cartographic = $this.Cesium.Cartographic.fromCartesian(position);
139
+ return [
140
+ $this.Cesium.Math.toDegrees(cartographic.longitude),
141
+ $this.Cesium.Math.toDegrees(cartographic.latitude)
142
+ ];
143
+ });
144
+
145
+ // 创建GeoJSON对象
146
+ var geojson = {
147
+ type: 'Polygon',
148
+ coordinates: [coordinates],
149
+ geometry: {
150
+ type: 'Polygon'
151
+ },
152
+ properties: {
153
+ color: $this.Color
154
+ }
155
+ };
156
+
157
+ $this.callback(geojson);
158
+ }
159
+ // $this.handler.destroy();
160
+ }, $this.Cesium.ScreenSpaceEventType.RIGHT_CLICK);
161
+ }
162
+
163
+ // 创建直线箭头
164
+ createStraightArrow() {
165
+ var $this = this;
166
+ var arrowEntity = $this.viewer.entities.add({
167
+ polygon: {
168
+ hierarchy: new $this.Cesium.CallbackProperty(function() {
169
+ // return new $this.Cesium.PolygonHierarchy($this._positions);
170
+ var length = $this._positions.length;
171
+ var p1 = $this._positions[0];
172
+ var p2 = $this._positions[length - 1];
173
+ var firstPoint = $this.cartesianToLatlng(p1);
174
+ var endPoints = $this.cartesianToLatlng(p2);
175
+ var arrow = [];
176
+ var res = $this.fineArrow(
177
+ [firstPoint[0], firstPoint[1]],
178
+ [endPoints[0], endPoints[1]]
179
+ );
180
+ for (var i = 0; i < res.length; i++) {
181
+ var cart3 = new $this.Cesium.Cartesian3(
182
+ res[i].x,
183
+ res[i].y,
184
+ res[i].z
185
+ );
186
+ arrow.push(cart3);
187
+ }
188
+ return new $this.Cesium.PolygonHierarchy(arrow);
189
+ }, false),
190
+ show: true,
191
+ fill: true,
192
+ clampToGround: true,
193
+ material:
194
+ $this.Cesium.Color.fromCssColorString('#ffffff').withAlpha(0.5)
195
+ }
196
+ });
197
+ $this._entities_straightArrow.push(arrowEntity);
198
+ return arrowEntity;
199
+ }
200
+
201
+ // 创建点
202
+ createPoint(cartesian) {
203
+ var $this = this;
204
+ var point = this.viewer.entities.add({
205
+ position: cartesian,
206
+ point: {
207
+ pixelSize: 10,
208
+ color: $this.Cesium.Color.YELLOW
209
+ }
210
+ });
211
+ $this._entities_point.push(point);
212
+ return point;
213
+ }
214
+
215
+ cartesianToLatlng(cartesian) {
216
+ var latlng =
217
+ this.viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);
218
+ var lat = this.Cesium.Math.toDegrees(latlng.latitude);
219
+ var lng = this.Cesium.Math.toDegrees(latlng.longitude);
220
+ return [lng, lat];
221
+ }
222
+
223
+ // 销毁
224
+ destroy() {
225
+ if (this.handler) {
226
+ this.handler.destroy();
227
+ this.handler = null;
228
+ }
229
+ }
230
+
231
+ clearPoint() {
232
+ for (var i = 0; i < this._entities_point.length; i++) {
233
+ this.viewer.entities.remove(this._entities_point[i]);
234
+ }
235
+ this._entities_point = []; // 脏数据
236
+ }
237
+
238
+ // 清空实体对象
239
+ clear() {
240
+ for (let i = 0; i < this._entities_point.length; i++) {
241
+ this.viewer.entities.remove(this._entities_point[i]);
242
+ }
243
+ for (let i = 0; i < this._entities_straightArrow.length; i++) {
244
+ this.viewer.entities.remove(this._entities_straightArrow[i]);
245
+ }
246
+
247
+ this.floatingPoint = null; // 标识点
248
+ this._straightArrow = null; // 活动箭头
249
+ this._straightArrowLast = null; // 最后一个箭头
250
+ this._positions = []; // 活动点
251
+ this._entities_point = []; // 脏数据
252
+ this._entities_straightArrow = []; // 脏数据
253
+ this._straightArrowData = null; // 用于构造箭头数据
254
+ }
255
+
256
+ getCatesian3FromPX(px) {
257
+ var cartesian;
258
+ var ray = this.viewer.camera.getPickRay(px);
259
+ if (!ray) return null;
260
+ cartesian = this.viewer.scene.globe.pick(ray, this.viewer.scene);
261
+ return cartesian;
262
+ }
263
+
264
+ // //////////////////////////////////////求取箭头坐标函数/////////////////////////////////////////////////////
265
+ // 箭头配置函数
266
+ fineArrowDefualParam() {
267
+ return {
268
+ tailWidthFactor: 0.15,
269
+ neckWidthFactor: 0.2,
270
+ headWidthFactor: 0.25,
271
+ headAngle: Math.PI / 8.5,
272
+ neckAngle: Math.PI / 13
273
+ };
274
+ }
275
+
276
+ fineArrow(tailPoint, headerPoint) {
277
+ var $this = this;
278
+ if (tailPoint.length < 2 || headerPoint.length < 2) return;
279
+ // 画箭头的函数
280
+ const tailWidthFactor = $this.fineArrowDefualParam().tailWidthFactor;
281
+ const neckWidthFactor = $this.fineArrowDefualParam().neckWidthFactor;
282
+ const headWidthFactor = $this.fineArrowDefualParam().headWidthFactor;
283
+ const headAngle = $this.fineArrowDefualParam().headAngle;
284
+ const neckAngle = $this.fineArrowDefualParam().neckAngle;
285
+ var o = [];
286
+ o[0] = tailPoint;
287
+ o[1] = headerPoint;
288
+ var e = o[0];
289
+ var r = o[1];
290
+ var n = $this.getBaseLength(o);
291
+ var g = n * tailWidthFactor;
292
+ // 尾部宽度因子
293
+ var i = n * neckWidthFactor;
294
+ // 脖子宽度银子
295
+ var s = n * headWidthFactor;
296
+ // 头部宽度因子
297
+ var a = $this.getThirdPoint(r, e, Math.PI / 2, g, !0);
298
+ var l = $this.getThirdPoint(r, e, Math.PI / 2, g, !1);
299
+ var u = $this.getThirdPoint(e, r, headAngle, s, !1);
300
+ var c = $this.getThirdPoint(e, r, headAngle, s, !0);
301
+ var p = $this.getThirdPoint(e, r, neckAngle, i, !1);
302
+ var h = $this.getThirdPoint(e, r, neckAngle, i, !0);
303
+ var d = [];
304
+ d.push(
305
+ a[0],
306
+ a[1],
307
+ p[0],
308
+ p[1],
309
+ u[0],
310
+ u[1],
311
+ r[0],
312
+ r[1],
313
+ c[0],
314
+ c[1],
315
+ h[0],
316
+ h[1],
317
+ l[0],
318
+ l[1],
319
+ e[0],
320
+ e[1]
321
+ );
322
+ return $this.Cesium.Cartesian3.fromDegreesArray(d);
323
+ }
324
+
325
+ getBaseLength(t) {
326
+ return Math.pow(this.wholeDistance(t), 0.99);
327
+ }
328
+
329
+ wholeDistance(t) {
330
+ for (var o = 0, e = 0; e < t.length - 1; e++) {
331
+ o += this.distance(t[e], t[e + 1]);
332
+ }
333
+ return o;
334
+ }
335
+
336
+ distance(t, o) {
337
+ return Math.sqrt(Math.pow(t[0] - o[0], 2) + Math.pow(t[1] - o[1], 2));
338
+ }
339
+
340
+ getThirdPoint(t, o, e, r, n) {
341
+ var g = this.getAzimuth(t, o);
342
+ var i = n ? g + e : g - e;
343
+ var s = r * Math.cos(i);
344
+ var a = r * Math.sin(i);
345
+ return [o[0] + s, o[1] + a];
346
+ }
347
+
348
+ getAzimuth(t, o) {
349
+ var e;
350
+ var r = Math.asin(Math.abs(o[1] - t[1]) / this.distance(t, o));
351
+ return (
352
+ o[1] >= t[1] && o[0] >= t[0]
353
+ ? (e = r + Math.PI)
354
+ : o[1] >= t[1] && o[0] < t[0]
355
+ ? (e = 2 * Math.PI - r)
356
+ : o[1] < t[1] && o[0] < t[0]
357
+ ? (e = r)
358
+ : o[1] < t[1] && o[0] >= t[0] && (e = Math.PI - r),
359
+ e
360
+ );
361
+ }
362
+ }
363
+
364
+ export default DrawstraightArrow;