gisviewer-vue3-arcgis 1.0.223 → 1.0.224

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.
@@ -1,46 +1,46 @@
1
- import * as d from "@arcgis/core/core/reactiveUtils";
2
- import { Point as f } from "@arcgis/core/geometry";
1
+ import * as g from "@arcgis/core/core/reactiveUtils";
2
+ import { Point as d } from "@arcgis/core/geometry";
3
3
  import * as u from "@arcgis/core/geometry/support/webMercatorUtils.js";
4
4
  import w from "@arcgis/core/layers/GraphicsLayer";
5
- import g from "./signal-holo-flow.mjs";
6
- class M extends g {
7
- constructor(t, o) {
8
- var r, i;
9
- super(t), this.stopLineLayer = new w(), this.watchHandle = null, this.trajectoryDelayTime = 2, this.stopLineMap = /* @__PURE__ */ new Map(), this.lampGroupMap = /* @__PURE__ */ new Map(), this.countdownPanelProps = o, this.view.map.add(this.stopLineLayer), this.trajectoryDelayTime = ((i = (r = this.mapConfig.holoFlow) == null ? void 0 : r.signal) == null ? void 0 : i.delay) || 2;
5
+ import P from "./signal-holo-flow.mjs";
6
+ class M extends P {
7
+ constructor(e, s) {
8
+ var l, i;
9
+ super(e), this.stopLineLayer = new w(), this.watchHandle = null, this.trajectoryDelayTime = 2, this.stopLineMap = /* @__PURE__ */ new Map(), this.lampGroupMap = /* @__PURE__ */ new Map(), this.countdownPanelProps = s, this.view.map.add(this.stopLineLayer), this.trajectoryDelayTime = ((i = (l = this.mapConfig.holoFlow) == null ? void 0 : l.signal) == null ? void 0 : i.delay) || 2;
10
10
  }
11
11
  /**
12
12
  * 读取停止线图层,将灯组面板沿着停止线放置
13
13
  * @returns
14
14
  */
15
15
  async initializeLayer() {
16
- var i, e;
16
+ var i, t;
17
17
  if (this.stopLineMap.size > 0)
18
18
  return;
19
19
  console.time("初始化停止线图层");
20
- let t = (e = (i = this.mapConfig.holoFlow) == null ? void 0 : i.signal) == null ? void 0 : e.stopLineLayer;
21
- if (!t)
20
+ let e = (t = (i = this.mapConfig.holoFlow) == null ? void 0 : i.signal) == null ? void 0 : t.stopLineLayer;
21
+ if (!e)
22
22
  return;
23
- t = this.mapConfig.assetsRoot + "/" + t;
24
- const r = await (await fetch(t)).json();
25
- for (const s of r.features) {
26
- const { roadId: a } = s.properties;
27
- let { destinationPoint: n } = s.properties;
28
- const { coordinates: l } = s.geometry;
29
- if (n) {
30
- if (typeof n == "string")
23
+ e = this.mapConfig.assetsRoot + "/" + e;
24
+ const l = await (await fetch(e)).json();
25
+ for (const n of l.features) {
26
+ const { roadId: a } = n.properties;
27
+ let { destinationPoint: o } = n.properties;
28
+ const { coordinates: r } = n.geometry;
29
+ if (o) {
30
+ if (typeof o == "string")
31
31
  try {
32
- n = JSON.parse(n);
32
+ o = JSON.parse(o);
33
33
  } catch (c) {
34
34
  console.error("解析面板基准点失败", c);
35
35
  continue;
36
36
  }
37
37
  } else {
38
- const c = l[0], h = l[l.length - 1], p = (c[0] + h[0]) / 2, m = (c[1] + h[1]) / 2;
39
- n = [p, m];
38
+ const c = r[0], h = r[r.length - 1], p = (c[0] + h[0]) / 2, f = (c[1] + h[1]) / 2;
39
+ o = [p, f];
40
40
  }
41
41
  this.stopLineMap.set(a, {
42
- coord: l,
43
- panelPoint: n
42
+ coord: r,
43
+ panelPoint: o
44
44
  });
45
45
  }
46
46
  console.timeEnd("初始化停止线图层");
@@ -48,11 +48,11 @@ class M extends g {
48
48
  /**
49
49
  * 初始化灯组与进口道的关联关系
50
50
  */
51
- initializeLampGroup(t) {
52
- const { sigId: o, lampGroupList: r } = t, i = [];
53
- r.forEach((e) => {
54
- const { lampGroupNo: s, lampGroupType: a, crossFlowList: n, pedList: l } = e;
55
- n.length > 0 && n.forEach((c) => {
51
+ initializeLampGroup(e) {
52
+ const { sigId: s, lampGroupList: l } = e, i = [];
53
+ l.forEach((t) => {
54
+ const { lampGroupNo: n, lampGroupType: a, crossFlowList: o, pedList: r } = t;
55
+ o.length > 0 && o.forEach((c) => {
56
56
  const h = c.upSectionId;
57
57
  let p = "s";
58
58
  switch (c.turn) {
@@ -70,125 +70,167 @@ class M extends g {
70
70
  break;
71
71
  }
72
72
  a === 81 && (p = "bl"), i.push({
73
- lampGroupId: s,
73
+ lampGroupId: n,
74
74
  roadId: h,
75
75
  dir: p
76
76
  });
77
- }), l.length > 0;
78
- }), this.lampGroupMap.set(o, i), console.log(i);
77
+ }), r.length > 0;
78
+ }), this.lampGroupMap.set(s, i);
79
79
  }
80
80
  /**
81
81
  * 处理统一信控平台信号灯数据
82
82
  * @param data
83
83
  */
84
- handleUniSignalData(t) {
85
- this.watchHandle || (this.watchHandle = d.watch(
84
+ handleUniSignalData(e) {
85
+ this.watchHandle || (this.watchHandle = g.watch(
86
86
  () => this.view.extent,
87
87
  () => this.updatePanelPosition()
88
88
  ));
89
- const { sigId: o } = t.data.basicInfo, r = this.lampGroupMap.get(o);
90
- if (!r)
89
+ const { sigId: s, runningStatus: l } = e.data.basicInfo, i = this.lampGroupMap.get(s);
90
+ if (!i)
91
91
  return { status: -1, message: "灯组未初始化" };
92
- const { curSigColorInfo: i } = t.data, e = /* @__PURE__ */ new Map();
93
- return i.forEach((s) => {
94
- const a = String(s.lamgroupId), { color: n, leftTime: l } = s, c = r.find(
95
- (h) => h.lampGroupId === a
96
- );
97
- if (c) {
98
- const { roadId: h, dir: p } = c;
99
- e.set(h, {
100
- ...e.get(h) || {},
101
- [`${p}Number`]: l,
102
- [`${p}Color`]: n === 1 ? "red" : n === 2 ? "yellow" : "green"
92
+ const t = /* @__PURE__ */ new Map();
93
+ let n = !1;
94
+ switch (String(l)) {
95
+ case "4": {
96
+ n = !0, i.forEach((a) => {
97
+ const { roadId: o, dir: r } = a;
98
+ t.set(o, {
99
+ ...t.get(o) || {},
100
+ [`${r}Number`]: "",
101
+ [`${r}Color`]: "yellow"
102
+ });
103
+ });
104
+ break;
105
+ }
106
+ case "5": {
107
+ i.forEach((a) => {
108
+ const { roadId: o, dir: r } = a;
109
+ t.set(o, {
110
+ ...t.get(o) || {},
111
+ [`${r}Number`]: "",
112
+ [`${r}Color`]: "red"
113
+ });
114
+ });
115
+ break;
116
+ }
117
+ case "6":
118
+ case "9": {
119
+ i.forEach((a) => {
120
+ const { roadId: o, dir: r } = a;
121
+ t.set(o, {
122
+ ...t.get(o) || {},
123
+ [`${r}Number`]: "",
124
+ [`${r}Color`]: "off"
125
+ });
103
126
  });
127
+ break;
104
128
  }
105
- }), this.updateLampGroupPanelStatus(o, e), { status: 0, message: "ok" };
129
+ default: {
130
+ const { curSigColorInfo: a } = e.data;
131
+ a.forEach((o) => {
132
+ const r = String(o.lamgroupId), { color: c, leftTime: h } = o, p = i.find(
133
+ (f) => f.lampGroupId === r
134
+ );
135
+ if (p) {
136
+ const { roadId: f, dir: m } = p;
137
+ t.set(f, {
138
+ ...t.get(f) || {},
139
+ [`${m}Number`]: h,
140
+ [`${m}Color`]: c === 1 ? "red" : c === 2 ? "yellow" : "green"
141
+ });
142
+ }
143
+ });
144
+ }
145
+ }
146
+ return this.updateLampGroupPanelStatus(s, t, n), { status: 0, message: "ok" };
106
147
  }
107
148
  /**
108
149
  * 根据地图比例尺计算灯组面板缩放比例
109
150
  */
110
151
  getPanelScale() {
111
- const t = this.view.scale;
112
- let o = 1;
113
- return t < 1e3 ? o = 1 : t < 2e3 ? o = 0.8 : t < 4e3 ? o = 0.4 : o = 0, o;
152
+ const e = this.view.scale;
153
+ let s = 1;
154
+ return e < 1e3 ? s = 1 : e < 2e3 ? s = 0.8 : e < 4e3 ? s = 0.4 : s = 0, s;
114
155
  }
115
156
  /**
116
157
  * 地图移动时更新灯组面板位置
117
158
  */
118
159
  updatePanelPosition() {
119
- const t = this.getPanelScale();
120
- for (const o of this.countdownPanelProps) {
121
- t !== this.currentPanelScale && (o.scale = t);
122
- const { mapPoint: r } = o;
123
- let i = new f({
124
- x: r[0],
125
- y: r[1]
160
+ const e = this.getPanelScale();
161
+ for (const s of this.countdownPanelProps) {
162
+ e !== this.currentPanelScale && (s.scale = e);
163
+ const { mapPoint: l } = s;
164
+ let i = new d({
165
+ x: l[0],
166
+ y: l[1]
126
167
  });
127
168
  this.view.spatialReference.isWebMercator && (i = u.geographicToWebMercator(
128
169
  i
129
170
  ));
130
- const e = this.view.toScreen(i);
131
- if (o.position.left = e.x, o.position.top = e.y, this.view.type === "3d") {
132
- const s = this.getPanelRotation(o.stopLine);
133
- o.rotation = s;
171
+ const t = this.view.toScreen(i);
172
+ if (s.position.left = t.x, s.position.top = t.y, this.view.type === "3d") {
173
+ const n = this.getPanelRotation(s.stopLine);
174
+ s.rotation = n;
134
175
  }
135
176
  }
136
- this.currentPanelScale = t;
177
+ this.currentPanelScale = e;
137
178
  }
138
- doHoloSignalData(t) {
139
- const o = t.crossId, r = t.phaseCountDownList, i = /* @__PURE__ */ new Map();
140
- for (const e of r) {
141
- let s = "";
142
- for (let c of e.roadIdList)
179
+ doHoloSignalData(e) {
180
+ const s = e.crossId, l = e.phaseCountDownList, i = /* @__PURE__ */ new Map();
181
+ for (const t of l) {
182
+ let n = "";
183
+ for (let c of t.roadIdList)
143
184
  if (c.startsWith("-") && (c = c.slice(1)), this.stopLineMap.has(c)) {
144
- s = c;
185
+ n = c;
145
186
  break;
146
187
  }
147
- if (!s) {
148
- console.log(`没有找到对应的进口道${o}--${s}`);
188
+ if (!n) {
189
+ console.log(`没有找到对应的进口道${s}--${n}`);
149
190
  continue;
150
191
  }
151
- let a = i.get(s);
152
- if (a || (a = {}, i.set(s, a)), !e.direction)
192
+ let a = i.get(n);
193
+ if (a || (a = {}, i.set(n, a)), !t.direction)
153
194
  continue;
154
- const n = e.direction.toLowerCase(), l = e.color === 1 ? "red" : e.color === 2 ? "yellow" : "green";
155
- n === "u" ? (a.uNumber = e.leftTime, a.uColor = l) : n === "l" ? (a.lNumber = e.leftTime, a.lColor = l) : n === "s" ? (a.sNumber = e.leftTime, a.sColor = l) : n === "r" && (a.rNumber = e.leftTime, a.rColor = l);
195
+ const o = t.direction.toLowerCase(), r = t.color === 1 ? "red" : t.color === 2 ? "yellow" : "green";
196
+ o === "u" ? (a.uNumber = t.leftTime, a.uColor = r) : o === "l" ? (a.lNumber = t.leftTime, a.lColor = r) : o === "s" ? (a.sNumber = t.leftTime, a.sColor = r) : o === "r" && (a.rNumber = t.leftTime, a.rColor = r);
156
197
  }
157
- this.updateLampGroupPanelStatus(o, i);
198
+ this.updateLampGroupPanelStatus(s, i);
158
199
  }
159
- updateLampGroupPanelStatus(t, o) {
160
- o.forEach((r, i) => {
161
- const e = this.stopLineMap.get(i);
162
- if (!e)
200
+ updateLampGroupPanelStatus(e, s, l = !1) {
201
+ s.forEach((i, t) => {
202
+ const n = this.stopLineMap.get(t);
203
+ if (!n)
163
204
  return;
164
- const s = this.countdownPanelProps.find(
165
- (a) => a.roadId === i
205
+ const a = this.countdownPanelProps.find(
206
+ (o) => o.roadId === t
166
207
  );
167
- if (s)
168
- s.lampStatus = r;
208
+ if (a)
209
+ a.lampStatus = i, a.flash = l;
169
210
  else {
170
- let a = new f({
171
- x: e.panelPoint[0],
172
- y: e.panelPoint[1]
211
+ let o = new d({
212
+ x: n.panelPoint[0],
213
+ y: n.panelPoint[1]
173
214
  });
174
- this.view.spatialReference.isWebMercator && (a = u.geographicToWebMercator(
175
- a
215
+ this.view.spatialReference.isWebMercator && (o = u.geographicToWebMercator(
216
+ o
176
217
  ));
177
- const n = this.view.toScreen(a), l = this.getPanelRotation(e.coord);
218
+ const r = this.view.toScreen(o), c = this.getPanelRotation(n.coord);
178
219
  this.countdownPanelProps.push({
179
220
  displayMode: "complex",
180
- crossId: t,
181
- roadId: i,
182
- mapPoint: e.panelPoint,
221
+ flash: l,
222
+ crossId: e,
223
+ roadId: t,
224
+ mapPoint: n.panelPoint,
183
225
  // 定位点地理坐标
184
- stopLine: e.coord,
226
+ stopLine: n.coord,
185
227
  // 关联的停止线坐标
186
- position: { left: n.x, top: n.y },
228
+ position: { left: r.x, top: r.y },
187
229
  // 定位点屏幕坐标
188
- rotation: l,
230
+ rotation: c,
189
231
  // 面板旋转角度
190
232
  scale: this.getPanelScale(),
191
- lampStatus: r
233
+ lampStatus: i
192
234
  // 灯组状态
193
235
  });
194
236
  }
@@ -199,43 +241,43 @@ class M extends g {
199
241
  * @param data
200
242
  * @returns
201
243
  */
202
- async handleHoloSignalData(t) {
203
- this.watchHandle || (this.watchHandle = d.watch(
244
+ async handleHoloSignalData(e) {
245
+ this.watchHandle || (this.watchHandle = g.watch(
204
246
  () => this.view.extent,
205
247
  () => this.updatePanelPosition()
206
- )), this.trajectoryDelayTime === 0 ? this.doHoloSignalData(t) : setTimeout(
207
- () => this.doHoloSignalData(t),
248
+ )), this.trajectoryDelayTime === 0 ? this.doHoloSignalData(e) : setTimeout(
249
+ () => this.doHoloSignalData(e),
208
250
  this.trajectoryDelayTime * 1e3
209
251
  );
210
252
  }
211
253
  clearSignal() {
212
- var t;
213
- this.stopLineLayer.removeAll(), this.countdownPanelProps.length = 0, (t = this.watchHandle) == null || t.remove(), this.watchHandle = null;
254
+ var e;
255
+ this.stopLineLayer.removeAll(), this.countdownPanelProps.length = 0, (e = this.watchHandle) == null || e.remove(), this.watchHandle = null;
214
256
  }
215
257
  /**
216
258
  * 从停止线坐标计算面板旋转角度
217
259
  * @param coordinates
218
260
  * @returns
219
261
  */
220
- getPanelRotation(t) {
221
- const o = t[0];
222
- let r = new f({
223
- x: o[0],
224
- y: o[1]
262
+ getPanelRotation(e) {
263
+ const s = e[0];
264
+ let l = new d({
265
+ x: s[0],
266
+ y: s[1]
225
267
  });
226
- this.view.spatialReference.isWebMercator && (r = u.geographicToWebMercator(
227
- r
268
+ this.view.spatialReference.isWebMercator && (l = u.geographicToWebMercator(
269
+ l
228
270
  ));
229
- const i = this.view.toScreen(r), e = t[t.length - 1];
230
- let s = new f({
231
- x: e[0],
232
- y: e[1]
271
+ const i = this.view.toScreen(l), t = e[e.length - 1];
272
+ let n = new d({
273
+ x: t[0],
274
+ y: t[1]
233
275
  });
234
- this.view.spatialReference.isWebMercator && (s = u.geographicToWebMercator(
235
- s
276
+ this.view.spatialReference.isWebMercator && (n = u.geographicToWebMercator(
277
+ n
236
278
  ));
237
- const a = this.view.toScreen(s), n = a.x - i.x, l = a.y - i.y;
238
- return Math.atan2(l, n) * (180 / Math.PI);
279
+ const a = this.view.toScreen(n), o = a.x - i.x, r = a.y - i.y;
280
+ return Math.atan2(r, o) * (180 / Math.PI);
239
281
  }
240
282
  }
241
283
  export {
@@ -49,6 +49,7 @@ export default class SketchView {
49
49
  options: sketchViewOptions;
50
50
  constructor(view: MapView | SceneView, options?: sketchViewOptions);
51
51
  updateSketch(ring: number[][]): void;
52
+ cancelSketch(): void;
52
53
  init(): void;
53
54
  /**
54
55
  * 初始化绘图
@@ -78,6 +78,9 @@ class C {
78
78
  enableRotation: !0
79
79
  });
80
80
  }
81
+ cancelSketch() {
82
+ this.sketchViewModel.cancel();
83
+ }
81
84
  init() {
82
85
  this.sketchViewModel = new S({
83
86
  layer: this.graphicsLayer,
@@ -248,6 +248,7 @@ export interface IJunctionTableData {
248
248
  factoryCode?: string;
249
249
  }
250
250
  export interface ISignalCountdownProps {
251
+ flash: boolean;
251
252
  displayMode: string;
252
253
  crossId: string;
253
254
  roadId: string;
@@ -41,6 +41,7 @@ declare const _sfc_main: import("vue").DefineComponent<{
41
41
  countdownPanels: ISignalCountdownProps[];
42
42
  }, {}, {}>;
43
43
  countdownPanelProps: {
44
+ flash: boolean;
44
45
  displayMode: string;
45
46
  crossId: string;
46
47
  roadId: string;
@@ -164,6 +165,10 @@ declare const _sfc_main: import("vue").DefineComponent<{
164
165
  type: StringConstructor;
165
166
  required: true;
166
167
  };
168
+ flash: {
169
+ type: BooleanConstructor;
170
+ required: true;
171
+ };
167
172
  crossId: {
168
173
  type: StringConstructor;
169
174
  required: true;
@@ -197,6 +202,7 @@ declare const _sfc_main: import("vue").DefineComponent<{
197
202
  required: true;
198
203
  };
199
204
  }, {
205
+ colors: string[];
200
206
  props: any;
201
207
  panelStyle: import("vue").ComputedRef<{
202
208
  top: string;
@@ -204,16 +210,36 @@ declare const _sfc_main: import("vue").DefineComponent<{
204
210
  'transform-origin': string;
205
211
  transform: string;
206
212
  }>;
207
- uImage: import("vue").ComputedRef<string>;
208
- uNumberStyle: import("vue").ComputedRef<any>;
209
213
  blImage: import("vue").ComputedRef<string>;
210
214
  blNumberStyle: import("vue").ComputedRef<any>;
215
+ blLampStyle: import("vue").ComputedRef<{
216
+ display: string;
217
+ animation: string;
218
+ }>;
219
+ uImage: import("vue").ComputedRef<string>;
220
+ uNumberStyle: import("vue").ComputedRef<any>;
221
+ uLampStyle: import("vue").ComputedRef<{
222
+ display: string;
223
+ animation: string;
224
+ }>;
211
225
  lImage: import("vue").ComputedRef<string>;
212
226
  lNumberStyle: import("vue").ComputedRef<any>;
227
+ lLampStyle: import("vue").ComputedRef<{
228
+ display: string;
229
+ animation: string;
230
+ }>;
213
231
  sImage: import("vue").ComputedRef<string>;
214
232
  sNumberStyle: import("vue").ComputedRef<any>;
233
+ sLampStyle: import("vue").ComputedRef<{
234
+ display: string;
235
+ animation: string;
236
+ }>;
215
237
  rImage: import("vue").ComputedRef<string>;
216
238
  rNumberStyle: import("vue").ComputedRef<any>;
239
+ rLampStyle: import("vue").ComputedRef<{
240
+ display: string;
241
+ animation: string;
242
+ }>;
217
243
  getColorString: (color: string | undefined) => "red" | "rgb(255, 192, 2)" | "lime" | "white";
218
244
  getNumberStyle: (color: string | undefined) => any;
219
245
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -221,6 +247,10 @@ declare const _sfc_main: import("vue").DefineComponent<{
221
247
  type: StringConstructor;
222
248
  required: true;
223
249
  };
250
+ flash: {
251
+ type: BooleanConstructor;
252
+ required: true;
253
+ };
224
254
  crossId: {
225
255
  type: StringConstructor;
226
256
  required: true;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),b=require("./stores/index.js");require("./style/index.css");const je=require("./utils/detect-gpu.js"),A=require("./utils/green-wave-band-controller/index.js"),Qe=require("./utils/holo-flow/index.js"),Ue=require("./utils/holo-flow/signal-countdown-panel.vue.js"),Ze=require("./utils/map-initializer.js"),L=require("./utils/open-drive-renderer/index.js"),D=require("./utils/overlay.js"),Ke=require("./utils/queue-length.js"),T=require("./utils/road-config-tool/index.js"),Je=require("./utils/signal-control-area-controller/edit-area.js"),Xe=require("./utils/signal-control-area-controller/show-area.js"),Ye=require("./utils/traffic-flow.js"),Fe={class:"gis-viewer"},Re={style:{position:"absolute",bottom:"80px",left:"10px","z-index":"9999"}},$e=n.defineComponent({__name:"gis-map",props:{config:{},assetsRoot:{}},emits:["mapLoaded","markerClick","mapClick"],setup(_,{expose:B,emit:q}){const S=n.ref(null);let o,d,l,i,a,r,f,t,u,s,m;const y=n.ref(!1);b.registerStore();const I=b.default.useAppDataStore,k=n.reactive([]);je.default(),n.onMounted(async()=>{if(!S.value)return;document.addEventListener("keydown",p=>{p.ctrlKey&&p.key==="i"&&(y.value=!y.value)});const e=n.getCurrentInstance(),{$gisviewerAssetsRoot:g}=e.appContext.config.globalProperties,c=await(await fetch(O.config)).json();c.assetsRoot=O.assetsRoot||g,I.mapConfig=c,d=new Ze.default,o=await d.initialize({container:S.value,mapConfig:c,markerClickCallback:(p,C,h,We)=>{w("markerClick",p,C,h,We)},mapClickCallback:(p,C,h)=>{w("mapClick",p,C,h)}}),a=new Qe.default(o,k),await a.init(),w("mapLoaded")}),n.onUnmounted(()=>{s==null||s.clearSignalControlArea(),t==null||t.clearOpenDrive(),a.clearHoloTrace(),a.clearHoloSignal(),i==null||i.disconnectTrafficFlow()});const V=n.computed(()=>o),x=()=>{const e=b.default.useAppDataStore;e.saveTrackLog=!0},M=()=>{a.downloadTrackLog()},N=()=>{v("vehicleId")},E=()=>{v("plateNumber")},H=async e=>await d.setMapCenter(e),P=async e=>await d.setMapCamera(e),G=async e=>await d.lookAt(e),z=e=>d.setLayerVisibility(e),W=(e,g)=>d.requestCoordinateTransform(e,g),j=e=>{d.cancelCoordinateTransform(e)},Q=e=>{d.setMapZoomRange(e)},U=e=>(l||(l=new T.default(o)),l.showLaneNumber(e)),Z=()=>{l==null||l.clearLaneNumber()},K=async e=>(l||(l=new T.default(o)),await l.initializeSearch(e)),J=async()=>l==null?void 0:l.calCrossIndicatorArea(),X=async()=>{},Y=async(e,g)=>{i||(i=new Ye.default(o)),i.connectTrafficFlow(e,g)},F=()=>{i==null||i.disconnectTrafficFlow()},R=async e=>{a.handleVehicleTraceData(e)},$=()=>{a.clearHoloTrace()},ee=e=>{a.setInterpolate(e)},te=async e=>{await a.handleSignalData(e)},ae=async e=>{await a.initializeLampGroup(e)},ne=e=>{a.handleUniSignalData(e)},re=()=>{a.clearHoloSignal()},se=e=>{i==null||i.toggleTrafficInfo(e),a==null||a.toggleTrafficInfo(e)},oe=e=>{a==null||a.togglePause(e)},ie=e=>{i==null||i.toggleTrafficObject(e),a==null||a.toggleTrafficObject(e)},v=e=>{a==null||a.updatePanelContent(e)},ce=async e=>(r||(r=new D.default(o)),r.addOverlays(e)),le=e=>(r||(r=new D.default(o)),r.addMask(e)),ue=()=>{r==null||r.removeMask()},de=e=>r==null?void 0:r.removeOverlaysByType(e),me=e=>r==null?void 0:r.removeOverlaysById(e),ge=()=>r==null?void 0:r.removeAllOverlays(),pe=()=>{r==null||r.showAllOverlays()},fe=e=>{f||(f=new Ke.default(o)),f.updateQueueLength(e)},Se=()=>{f==null||f.removeQueueLength()},ye=async(e,g)=>(t||(t=new L.default(o)),await t.showOpenDriveFromServer(e,g)),ve=async e=>(t||(t=new L.default(o)),await t.clearOpenDrive(),await t.showOpenDriveFromFile(e)),we=async()=>await(t==null?void 0:t.clearOpenDrive()),Ce=async e=>t?await(t==null?void 0:t.findSumo(e)):{status:-1,message:"未加载OpenDrive地图"},he=async e=>t?t.selectSumo(e):{status:-1,message:"未加载OpenDrive地图"},be=async e=>t?t.unselectSumo(e):{status:-1,message:"未加载OpenDrive地图"},ke=async e=>t?await t.geometrySearch(e):{status:-1,message:"未加载OpenDrive地图"},Oe=async e=>t?await t.getSumoInfo(e):{status:-1,message:"未加载OpenDrive地图"},Ae=async e=>t?await(t==null?void 0:t.splitLane(e)):{status:-1,message:"未加载OpenDrive地图"},Le=async()=>t?t==null?void 0:t.clearSplitLane():{status:-1,message:"未加载OpenDrive地图"},De=async e=>(s||(s=new Xe.default(o)),await s.showSignalControlArea(e)),Te=async()=>await(s==null?void 0:s.clearSignalControlArea()),_e=e=>s==null?void 0:s.setLayerVisibility(e),Be=async e=>s?await(s==null?void 0:s.locateSignalControlArea(e)):{status:-1,message:"未加载信号控制区"},qe=async e=>s?await s.highlightSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Ie=()=>s?s.resetHighlight():{status:-1,message:"未加载信号控制区"},Ve=e=>(u||(u=new Je.default(o)),u.showSubSignalControlArea(e)),xe=e=>u?u.editSubSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Me=()=>u?u.stopEditSubSignalControlArea():{status:-1,message:"未加载信号控制区"},Ne=e=>u?u.selectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},Ee=e=>u?u.unselectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},He=e=>{if(!u)return{status:-1,message:"未加载信号控制区"}},Pe=e=>(m||(m=new A.default(o)),m.addGreenWaveBand(e)),Ge=()=>{if(!m)return{status:-1,message:"未加载绿波带"};m.stopAddGreenWaveBand()},ze=async e=>(m||(m=new A.default(o)),await m.showGreenWaveBand(e)),O=_,w=q;return B({mapViewer:V,setLayerVisibility:z,setMapCenter:H,lookAt:G,setMapCamera:P,setMapZoomRange:Q,requestCoordinateTransform:W,cancelCoordinateTransform:j,addOverlays:ce,addMask:le,removeMask:ue,showAllOverlays:pe,removeOverlaysByType:de,removeOverlaysById:me,removeAllOverlays:ge,showLaneNumber:U,clearLaneNumber:Z,initializeAreaTool:K,calCrossIndicatorArea:J,calRoadIndicatorArea:X,connectCarFlow:Y,disconnectCarFlow:F,handleHoloVehicleTraceData:R,clearHoloTrace:$,initializeLampGroup:ae,handleUniSignalData:ne,handleHoloSignalData:te,clearHoloSignal:re,setInterpolate:ee,toggleTrafficInfo:se,toggleTrafficObject:ie,toggleVehicleInfo:v,togglePause:oe,updateQueueLength:fe,removeQueueLength:Se,showOpenDriveFromServer:ye,showOpenDriveFromFile:ve,clearOpenDrive:we,geometrySearchInOpenDrive:ke,findSumoInOpenDrive:Ce,selectSumoInOpenDrive:he,unselectSumoInOpenDrive:be,getSumoInfo:Oe,splitOpenDriveLane:Ae,clearSplitOpenDriveLane:Le,showSignalControlArea:De,clearSignalControlArea:Te,setSignalControlAreaVisibility:_e,locateSignalControlArea:Be,highlightSignalControlArea:qe,resetHighlightSignalControlArea:Ie,showSubSignalControlArea:Ve,editSubSignalControlArea:xe,stopEditSubSignalControlArea:Me,selectSubSignalControlAreaCross:Ne,unselectSubSignalControlAreaCross:Ee,changeSubSignalControlAreaBorderVisibility:He,addGreenWaveBand:Pe,stopAddGreenWaveBand:Ge,showGreenWaveBand:ze}),(e,g)=>(n.openBlock(),n.createElementBlock("div",Fe,[n.createElementVNode("div",{class:"gis-viewer-main",ref_key:"mapContainer",ref:S},[n.withDirectives(n.createElementVNode("div",Re,[n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:x}," 开始记录 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:M}," 下载日志 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:N}," 显示车辆id "),n.createElementVNode("button",{onClick:E},"显示车辆号牌")],512),[[n.vShow,y.value]])],512),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(k,(c,p)=>(n.openBlock(),n.createBlock(Ue.default,{key:p,"display-mode":c.displayMode,"road-id":c.crossId,"cross-id":c.roadId,"map-point":c.mapPoint,"stop-line":c.stopLine,position:c.position,rotation:c.rotation,scale:c.scale,"lamp-status":c.lampStatus},null,8,["display-mode","road-id","cross-id","map-point","stop-line","position","rotation","scale","lamp-status"]))),128))]))}});exports.default=$e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),b=require("./stores/index.js");require("./style/index.css");const je=require("./utils/detect-gpu.js"),A=require("./utils/green-wave-band-controller/index.js"),Qe=require("./utils/holo-flow/index.js"),Ue=require("./utils/holo-flow/signal-countdown-panel.vue.js"),Ze=require("./utils/map-initializer.js"),L=require("./utils/open-drive-renderer/index.js"),D=require("./utils/overlay.js"),Ke=require("./utils/queue-length.js"),T=require("./utils/road-config-tool/index.js"),Je=require("./utils/signal-control-area-controller/edit-area.js"),Xe=require("./utils/signal-control-area-controller/show-area.js"),Ye=require("./utils/traffic-flow.js"),Fe={class:"gis-viewer"},Re={style:{position:"absolute",bottom:"80px",left:"10px","z-index":"9999"}},$e=n.defineComponent({__name:"gis-map",props:{config:{},assetsRoot:{}},emits:["mapLoaded","markerClick","mapClick"],setup(_,{expose:B,emit:q}){const S=n.ref(null);let o,d,l,i,a,r,f,t,u,s,m;const y=n.ref(!1);b.registerStore();const V=b.default.useAppDataStore,k=n.reactive([]);je.default(),n.onMounted(async()=>{if(!S.value)return;document.addEventListener("keydown",p=>{p.ctrlKey&&p.key==="i"&&(y.value=!y.value)});const e=n.getCurrentInstance(),{$gisviewerAssetsRoot:g}=e.appContext.config.globalProperties,c=await(await fetch(O.config)).json();c.assetsRoot=O.assetsRoot||g,V.mapConfig=c,d=new Ze.default,o=await d.initialize({container:S.value,mapConfig:c,markerClickCallback:(p,C,h,We)=>{w("markerClick",p,C,h,We)},mapClickCallback:(p,C,h)=>{w("mapClick",p,C,h)}}),a=new Qe.default(o,k),await a.init(),w("mapLoaded")}),n.onUnmounted(()=>{s==null||s.clearSignalControlArea(),t==null||t.clearOpenDrive(),a.clearHoloTrace(),a.clearHoloSignal(),i==null||i.disconnectTrafficFlow()});const x=n.computed(()=>o),I=()=>{const e=b.default.useAppDataStore;e.saveTrackLog=!0},M=()=>{a.downloadTrackLog()},N=()=>{v("vehicleId")},E=()=>{v("plateNumber")},H=async e=>await d.setMapCenter(e),P=async e=>await d.setMapCamera(e),G=async e=>await d.lookAt(e),z=e=>d.setLayerVisibility(e),W=(e,g)=>d.requestCoordinateTransform(e,g),j=e=>{d.cancelCoordinateTransform(e)},Q=e=>{d.setMapZoomRange(e)},U=e=>(l||(l=new T.default(o)),l.showLaneNumber(e)),Z=()=>{l==null||l.clearLaneNumber()},K=async e=>(l||(l=new T.default(o)),await l.initializeSearch(e)),J=async()=>l==null?void 0:l.calCrossIndicatorArea(),X=async()=>{},Y=async(e,g)=>{i||(i=new Ye.default(o)),i.connectTrafficFlow(e,g)},F=()=>{i==null||i.disconnectTrafficFlow()},R=async e=>{a.handleVehicleTraceData(e)},$=()=>{a.clearHoloTrace()},ee=e=>{a.setInterpolate(e)},te=async e=>{await a.handleSignalData(e)},ae=async e=>{await a.initializeLampGroup(e)},ne=e=>{a.handleUniSignalData(e)},re=()=>{a.clearHoloSignal()},se=e=>{i==null||i.toggleTrafficInfo(e),a==null||a.toggleTrafficInfo(e)},oe=e=>{a==null||a.togglePause(e)},ie=e=>{i==null||i.toggleTrafficObject(e),a==null||a.toggleTrafficObject(e)},v=e=>{a==null||a.updatePanelContent(e)},ce=async e=>(r||(r=new D.default(o)),r.addOverlays(e)),le=e=>(r||(r=new D.default(o)),r.addMask(e)),ue=()=>{r==null||r.removeMask()},de=e=>r==null?void 0:r.removeOverlaysByType(e),me=e=>r==null?void 0:r.removeOverlaysById(e),ge=()=>r==null?void 0:r.removeAllOverlays(),pe=()=>{r==null||r.showAllOverlays()},fe=e=>{f||(f=new Ke.default(o)),f.updateQueueLength(e)},Se=()=>{f==null||f.removeQueueLength()},ye=async(e,g)=>(t||(t=new L.default(o)),await t.showOpenDriveFromServer(e,g)),ve=async e=>(t||(t=new L.default(o)),await t.clearOpenDrive(),await t.showOpenDriveFromFile(e)),we=async()=>await(t==null?void 0:t.clearOpenDrive()),Ce=async e=>t?await(t==null?void 0:t.findSumo(e)):{status:-1,message:"未加载OpenDrive地图"},he=async e=>t?t.selectSumo(e):{status:-1,message:"未加载OpenDrive地图"},be=async e=>t?t.unselectSumo(e):{status:-1,message:"未加载OpenDrive地图"},ke=async e=>t?await t.geometrySearch(e):{status:-1,message:"未加载OpenDrive地图"},Oe=async e=>t?await t.getSumoInfo(e):{status:-1,message:"未加载OpenDrive地图"},Ae=async e=>t?await(t==null?void 0:t.splitLane(e)):{status:-1,message:"未加载OpenDrive地图"},Le=async()=>t?t==null?void 0:t.clearSplitLane():{status:-1,message:"未加载OpenDrive地图"},De=async e=>(s||(s=new Xe.default(o)),await s.showSignalControlArea(e)),Te=async()=>await(s==null?void 0:s.clearSignalControlArea()),_e=e=>s==null?void 0:s.setLayerVisibility(e),Be=async e=>s?await(s==null?void 0:s.locateSignalControlArea(e)):{status:-1,message:"未加载信号控制区"},qe=async e=>s?await s.highlightSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Ve=()=>s?s.resetHighlight():{status:-1,message:"未加载信号控制区"},xe=e=>(u||(u=new Je.default(o)),u.showSubSignalControlArea(e)),Ie=e=>u?u.editSubSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Me=()=>u?u.stopEditSubSignalControlArea():{status:-1,message:"未加载信号控制区"},Ne=e=>u?u.selectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},Ee=e=>u?u.unselectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},He=e=>{if(!u)return{status:-1,message:"未加载信号控制区"}},Pe=e=>(m||(m=new A.default(o)),m.addGreenWaveBand(e)),Ge=()=>{if(!m)return{status:-1,message:"未加载绿波带"};m.stopAddGreenWaveBand()},ze=async e=>(m||(m=new A.default(o)),await m.showGreenWaveBand(e)),O=_,w=q;return B({mapViewer:x,setLayerVisibility:z,setMapCenter:H,lookAt:G,setMapCamera:P,setMapZoomRange:Q,requestCoordinateTransform:W,cancelCoordinateTransform:j,addOverlays:ce,addMask:le,removeMask:ue,showAllOverlays:pe,removeOverlaysByType:de,removeOverlaysById:me,removeAllOverlays:ge,showLaneNumber:U,clearLaneNumber:Z,initializeAreaTool:K,calCrossIndicatorArea:J,calRoadIndicatorArea:X,connectCarFlow:Y,disconnectCarFlow:F,handleHoloVehicleTraceData:R,clearHoloTrace:$,initializeLampGroup:ae,handleUniSignalData:ne,handleHoloSignalData:te,clearHoloSignal:re,setInterpolate:ee,toggleTrafficInfo:se,toggleTrafficObject:ie,toggleVehicleInfo:v,togglePause:oe,updateQueueLength:fe,removeQueueLength:Se,showOpenDriveFromServer:ye,showOpenDriveFromFile:ve,clearOpenDrive:we,geometrySearchInOpenDrive:ke,findSumoInOpenDrive:Ce,selectSumoInOpenDrive:he,unselectSumoInOpenDrive:be,getSumoInfo:Oe,splitOpenDriveLane:Ae,clearSplitOpenDriveLane:Le,showSignalControlArea:De,clearSignalControlArea:Te,setSignalControlAreaVisibility:_e,locateSignalControlArea:Be,highlightSignalControlArea:qe,resetHighlightSignalControlArea:Ve,showSubSignalControlArea:xe,editSubSignalControlArea:Ie,stopEditSubSignalControlArea:Me,selectSubSignalControlAreaCross:Ne,unselectSubSignalControlAreaCross:Ee,changeSubSignalControlAreaBorderVisibility:He,addGreenWaveBand:Pe,stopAddGreenWaveBand:Ge,showGreenWaveBand:ze}),(e,g)=>(n.openBlock(),n.createElementBlock("div",Fe,[n.createElementVNode("div",{class:"gis-viewer-main",ref_key:"mapContainer",ref:S},[n.withDirectives(n.createElementVNode("div",Re,[n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:I}," 开始记录 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:M}," 下载日志 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:N}," 显示车辆id "),n.createElementVNode("button",{onClick:E},"显示车辆号牌")],512),[[n.vShow,y.value]])],512),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(k,(c,p)=>(n.openBlock(),n.createBlock(Ue.default,{key:p,"display-mode":c.displayMode,flash:c.flash,"road-id":c.crossId,"cross-id":c.roadId,"map-point":c.mapPoint,"stop-line":c.stopLine,position:c.position,rotation:c.rotation,scale:c.scale,"lamp-status":c.lampStatus},null,8,["display-mode","flash","road-id","cross-id","map-point","stop-line","position","rotation","scale","lamp-status"]))),128))]))}});exports.default=$e;
@@ -28,6 +28,7 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
28
28
  countdownPanels: import("../types").ISignalCountdownProps[];
29
29
  }, {}, {}>;
30
30
  countdownPanelProps: {
31
+ flash: boolean;
31
32
  displayMode: string;
32
33
  crossId: string;
33
34
  roadId: string;
@@ -151,6 +152,10 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
151
152
  type: StringConstructor;
152
153
  required: true;
153
154
  };
155
+ flash: {
156
+ type: BooleanConstructor;
157
+ required: true;
158
+ };
154
159
  crossId: {
155
160
  type: StringConstructor;
156
161
  required: true;
@@ -184,6 +189,7 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
184
189
  required: true;
185
190
  };
186
191
  }, {
192
+ colors: string[];
187
193
  props: any;
188
194
  panelStyle: import("vue").ComputedRef<{
189
195
  top: string;
@@ -191,16 +197,36 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
191
197
  'transform-origin': string;
192
198
  transform: string;
193
199
  }>;
194
- uImage: import("vue").ComputedRef<string>;
195
- uNumberStyle: import("vue").ComputedRef<any>;
196
200
  blImage: import("vue").ComputedRef<string>;
197
201
  blNumberStyle: import("vue").ComputedRef<any>;
202
+ blLampStyle: import("vue").ComputedRef<{
203
+ display: string;
204
+ animation: string;
205
+ }>;
206
+ uImage: import("vue").ComputedRef<string>;
207
+ uNumberStyle: import("vue").ComputedRef<any>;
208
+ uLampStyle: import("vue").ComputedRef<{
209
+ display: string;
210
+ animation: string;
211
+ }>;
198
212
  lImage: import("vue").ComputedRef<string>;
199
213
  lNumberStyle: import("vue").ComputedRef<any>;
214
+ lLampStyle: import("vue").ComputedRef<{
215
+ display: string;
216
+ animation: string;
217
+ }>;
200
218
  sImage: import("vue").ComputedRef<string>;
201
219
  sNumberStyle: import("vue").ComputedRef<any>;
220
+ sLampStyle: import("vue").ComputedRef<{
221
+ display: string;
222
+ animation: string;
223
+ }>;
202
224
  rImage: import("vue").ComputedRef<string>;
203
225
  rNumberStyle: import("vue").ComputedRef<any>;
226
+ rLampStyle: import("vue").ComputedRef<{
227
+ display: string;
228
+ animation: string;
229
+ }>;
204
230
  getColorString: (color: string | undefined) => "red" | "rgb(255, 192, 2)" | "lime" | "white";
205
231
  getNumberStyle: (color: string | undefined) => any;
206
232
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -208,6 +234,10 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
208
234
  type: StringConstructor;
209
235
  required: true;
210
236
  };
237
+ flash: {
238
+ type: BooleanConstructor;
239
+ required: true;
240
+ };
211
241
  crossId: {
212
242
  type: StringConstructor;
213
243
  required: true;
@@ -11,6 +11,17 @@
11
11
  .esri-view .esri-view-surface:focus::after {
12
12
  outline: none !important;
13
13
  }
14
+ @keyframes blink {
15
+ 0% {
16
+ opacity: 1;
17
+ }
18
+ 50% {
19
+ opacity: 0;
20
+ }
21
+ 100% {
22
+ opacity: 1;
23
+ }
24
+ }
14
25
  .signal-countdown-panel {
15
26
  position: absolute;
16
27
  display: flex;
@@ -36,4 +47,5 @@
36
47
  }
37
48
  .signal-countdown-number {
38
49
  font: 28px Digital;
50
+ height: 34px;
39
51
  }