fuchengshen
2022-07-09 3a25c05b5ab837714f30469cdcb1e2a77d8d7f6c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
import * as mars3d from "mars3d"
 
export let map // mars3d.Map三维地图对象
export let graphicLayer // 矢量图层对象
 
let rectangularSensor
 
// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
export const mapOptions = {
  scene: {
    fxaa: true,
    center: { lat: 30.834006, lng: 118.779512, alt: 306743, heading: 313, pitch: -58 },
    cameraController: {
      constrainedAxis: false
    }
  },
  control: {
    sceneModePicker: false
  }
}
 
export const eventTarget = new mars3d.BaseClass()
 
/**
 * 初始化地图业务,生命周期钩子函数(必须)
 * 框架在地图初始化完成后自动调用该函数
 * @param {mars3d.Map} mapInstance 地图对象
 * @returns {void} 无
 */
export function onMounted(mapInstance) {
  map = mapInstance // 记录map
 
  globalNotify("已知问题提示", `该矢量对象不支持拾取`)
 
  // 创建矢量数据图层
  graphicLayer = new mars3d.layer.GraphicLayer()
  map.addLayer(graphicLayer)
}
 
/**
 * 释放当前地图业务的生命周期函数
 * @returns {void} 无
 */
export function onUnmounted() {
  map = null
}
 
/**
 * 默认相阵控雷达
 * @param {number} heading 方向角
 * @param {number} pitch 仰角
 * @param {number} roll 左右(row)
 * @param {number} radius 半径
 * @param {number} xValue 上下夹角
 * @param {number} yValue 左右夹角
 * @returns {void}
 */
export function addDemoGraphic1(params) {
  rectangularSensor = new mars3d.graphic.RectangularSensor({
    position: [117.218875, 31.817812, 138],
    style: {
      heading: params.headingValue,
      pitch: params.pitchValue,
      roll: params.rollValue,
 
      radius: params.radius, // 传感器的半径
      xHalfAngleDegree: params.xValue, // 传感器水平半角
      yHalfAngleDegree: params.yValue, // 传感器垂直半角
 
      color: "#00ffff",
      opacity: 0.4,
      lineColor: "#ffffff", // 线的颜色
 
      showScanPlane: true, // 是否显示扫描面
      scanPlaneColor: "#00ffff",
      scanPlaneOpacity: 0.9,
      scanPlaneMode: "vertical", // 扫描面模式 垂直vertical/水平horizontal
      scanPlaneRate: 3, // 扫描速率,
      depthTest: true
    }
  })
 
  graphicLayer.addGraphic(rectangularSensor)
}
 
/**
 * 半径发生改变
 *
 * @export
 * @param {number} value 半径值
 * @returns {void}
 */
export function radiusChange(value) {
  graphicLayer.eachGraphic((rectangularSensor) => {
    rectangularSensor.radius = value
  })
}
 
/**
 * 方向发生改变
 *
 * @export
 * @param {number} value 角度
 * @returns {void}
 */
export function headingChange(value) {
  graphicLayer.eachGraphic((rectangularSensor) => {
    rectangularSensor.heading = value
  })
}
 
/**
 * 仰角发生改变
 *
 * @export
 * @param {number} value 仰角
 * @returns {void}
 */
export function pitchChange(value) {
  graphicLayer.eachGraphic((rectangularSensor) => {
    rectangularSensor.pitch = value
  })
}
 
/**
 * roll发生改变
 *
 * @export
 * @param {number} value 仰角
 * @returns {void}
 */
export function rollChange(value) {
  graphicLayer.eachGraphic((rectangularSensor) => {
    rectangularSensor.roll = value
  })
}
 
/**
 * 上下夹角
 *
 * @export
 * @param {number} value 夹角
 * @returns {void}
 */
export function xHalfAngle(value) {
  graphicLayer.eachGraphic((rectangularSensor) => {
    rectangularSensor.style = { xHalfAngleDegree: value }
  })
}
 
/**
 * 左右夹角
 *
 * @export
 * @param {number} value 夹角
 * @returns {void}
 */
export function yHalfAngle(value) {
  graphicLayer.eachGraphic((rectangularSensor) => {
    rectangularSensor.style = { yHalfAngleDegree: value }
  })
}
 
/**
 * 是否显示扫描面
 *
 * @export
 * @param {boolean} value  value = true/false
 * @returns {void}
 */
export function ShowScanPlane(value) {
  graphicLayer.eachGraphic((rectangularSensor) => {
    rectangularSensor.style = { showScanPlane: value } // 是否显示扫描面
  })
}
 
/**
 * 绘制相阵控雷达
 *
 * @param {number} heading 方向
 * @param {number} pitch 仰角
 * @param {number} roll 左右(row)
 * @param {number} radius 半径
 * @param {number} xHalfAngle 上下夹角
 * @param {number} yHalfAngle 左右夹角
 * @returns {void}
 */
export function startDraw(params) {
  // 开始绘制
  graphicLayer.startDraw({
    type: "rectangularSensor",
    style: {
      heading: params.headingValue,
      pitch: params.pitchValue,
      roll: params.rollValue,
 
      radius: params.radius, // 传感器的半径
      xHalfAngleDegree: params.xValue, // 传感器水平半角
      yHalfAngleDegree: params.yValue, // 传感器垂直半角
 
      color: "#00ffff",
      opacity: 0.4,
      lineColor: "#ffffff", // 线的颜色
 
      showScanPlane: true, // 是否显示扫描面
      scanPlaneColor: "#00ffff",
      scanPlaneOpacity: 0.9,
      scanPlaneMode: "vertical", // 扫描面模式 垂直vertical/水平horizontal
      scanPlaneRate: 3, // 扫描速率,
      depthTest: true
    }
  })
}