gisviewer-vue3-arcgis 1.0.265 → 1.0.267

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 (26) hide show
  1. package/es/src/gis-map/gis-map.vue.d.ts +10 -3
  2. package/es/src/gis-map/gis-map.vue.mjs +177 -174
  3. package/es/src/gis-map/index.d.ts +8 -2
  4. package/es/src/gis-map/utils/map-initializer.mjs +86 -79
  5. package/es/src/gis-map/utils/open-drive-renderer/index.d.ts +6 -1
  6. package/es/src/gis-map/utils/open-drive-renderer/index.mjs +15 -12
  7. package/es/src/gis-map/utils/signal-control-area/cross-renderer.mjs +101 -45
  8. package/es/src/gis-map/utils/signal-control-area/{show-area.d.ts → signal-area-controller.d.ts} +3 -0
  9. package/es/src/gis-map/utils/signal-control-area/{show-area.mjs → signal-area-controller.mjs} +11 -11
  10. package/es/src/gis-map/utils/signal-control-area/signal-cross-controller.d.ts +24 -0
  11. package/es/src/gis-map/utils/signal-control-area/signal-cross-controller.mjs +193 -0
  12. package/es/src/types/index.d.ts +15 -0
  13. package/lib/src/gis-map/gis-map.vue.d.ts +10 -3
  14. package/lib/src/gis-map/gis-map.vue.js +1 -1
  15. package/lib/src/gis-map/index.d.ts +8 -2
  16. package/lib/src/gis-map/utils/map-initializer.js +1 -1
  17. package/lib/src/gis-map/utils/open-drive-renderer/index.d.ts +6 -1
  18. package/lib/src/gis-map/utils/open-drive-renderer/index.js +1 -1
  19. package/lib/src/gis-map/utils/signal-control-area/cross-renderer.js +1 -1
  20. package/lib/src/gis-map/utils/signal-control-area/{show-area.d.ts → signal-area-controller.d.ts} +3 -0
  21. package/lib/src/gis-map/utils/signal-control-area/signal-area-controller.js +1 -0
  22. package/lib/src/gis-map/utils/signal-control-area/signal-cross-controller.d.ts +24 -0
  23. package/lib/src/gis-map/utils/signal-control-area/signal-cross-controller.js +1 -0
  24. package/lib/src/types/index.d.ts +15 -0
  25. package/package.json +1 -1
  26. package/lib/src/gis-map/utils/signal-control-area/show-area.js +0 -1
@@ -1,7 +1,7 @@
1
1
  import { Point as h } from "@arcgis/core/geometry";
2
2
  import u from "@arcgis/core/Graphic";
3
- import d from "@arcgis/core/layers/GraphicsLayer";
4
- class C {
3
+ import p from "@arcgis/core/layers/GraphicsLayer";
4
+ class x {
5
5
  constructor(e) {
6
6
  this.crossGraphicSymbol = {
7
7
  type: "cim",
@@ -85,26 +85,28 @@ class C {
85
85
  ]
86
86
  }
87
87
  }
88
- }, this.locations = [], this.clusteredLocations = [], this.filteredLocations = [], this.currentShowMode = "scatter", this.symbolScale = 5e3, this.oldScale = 0, this.clusterRadius = 120, this.minClusterPoints = 2, this.maxClusterSymbolSize = 50, this.minClusterSymbolSize = 25, this.view = e, this.crossLayer = new d(), this.view.map.add(this.crossLayer), this.oldScale = e.scale;
88
+ }, this.locations = [], this.clusteredLocations = [], this.filteredLocations = [], this.currentShowMode = "scatter", this.symbolScale = 5e3, this.oldScale = 0, this.clusterRadius = 120, this.minClusterPoints = 2, this.maxClusterSymbolSize = 50, this.minClusterSymbolSize = 25, this.view = e, this.crossLayer = new p(), this.view.map.add(this.crossLayer), this.oldScale = e.scale;
89
89
  }
90
90
  async addCrosses(e) {
91
91
  e.forEach((t) => {
92
- t.signals.forEach((r) => {
93
- r.longitude && r.latitude && !isNaN(r.longitude) && !isNaN(r.latitude) && this.locations.push({
94
- id: r.id,
95
- x: r.longitude,
96
- y: r.latitude,
92
+ t.signals.forEach((i) => {
93
+ i.longitude && i.latitude && !isNaN(i.longitude) && !isNaN(i.latitude) && this.locations.push({
94
+ id: i.id,
95
+ x: i.longitude,
96
+ y: i.latitude,
97
97
  visited: !1,
98
98
  filtered: !1,
99
99
  clusterId: void 0,
100
100
  properties: {
101
- ...r,
101
+ ...i,
102
102
  districtId: t.id,
103
- subDistrictId: ""
103
+ districtName: t.name,
104
+ subDistrictId: "",
105
+ subDistrictName: ""
104
106
  }
105
107
  });
106
- }), t.subDistricts.forEach((r) => {
107
- r.signals.forEach((s) => {
108
+ }), t.subDistricts.forEach((i) => {
109
+ i.signals.forEach((s) => {
108
110
  s.longitude && s.latitude && !isNaN(s.longitude) && !isNaN(s.latitude) && this.locations.push({
109
111
  id: s.id,
110
112
  x: s.longitude,
@@ -115,7 +117,9 @@ class C {
115
117
  properties: {
116
118
  ...s,
117
119
  districtId: t.id,
118
- subDistrictId: r.id
120
+ districtName: t.name,
121
+ subDistrictId: i.id,
122
+ subDistrictName: i.name
119
123
  }
120
124
  });
121
125
  });
@@ -137,7 +141,7 @@ class C {
137
141
  */
138
142
  clearCrosses() {
139
143
  var e;
140
- console.log("Clearing crosses"), this.crossLayer.removeAll(), this.locations = [], this.clusteredLocations = [], (e = this.zoomWatchHandle) == null || e.remove();
144
+ this.crossLayer.removeAll(), this.locations = [], this.clusteredLocations = [], (e = this.zoomWatchHandle) == null || e.remove();
141
145
  }
142
146
  /**
143
147
  * 更新散点符号
@@ -174,16 +178,42 @@ class C {
174
178
  const e = [];
175
179
  this.locations.forEach((t) => {
176
180
  if (!t.filtered) {
177
- const r = new u({
181
+ const i = new u({
178
182
  geometry: {
179
183
  type: "point",
180
184
  longitude: t.x,
181
185
  latitude: t.y
182
186
  },
183
187
  symbol: this.getCrossSymbol(t.properties),
184
- attributes: t.properties
188
+ attributes: t.properties,
189
+ popupTemplate: {
190
+ title: "{name}信号机",
191
+ content: [
192
+ {
193
+ type: "fields",
194
+ fieldInfos: [
195
+ {
196
+ fieldName: "signalId",
197
+ label: "信号机编号"
198
+ },
199
+ {
200
+ fieldName: "nodeId",
201
+ label: "路口编号"
202
+ },
203
+ {
204
+ fieldName: "districtName",
205
+ label: "区控名称"
206
+ },
207
+ {
208
+ fieldName: "subDistrictName",
209
+ label: "子区名称"
210
+ }
211
+ ]
212
+ }
213
+ ]
214
+ }
185
215
  });
186
- e.push(r);
216
+ e.push(i);
187
217
  }
188
218
  }), this.crossLayer.addMany(e);
189
219
  }
@@ -196,17 +226,17 @@ class C {
196
226
  filter(e) {
197
227
  this.locations.forEach((t) => {
198
228
  if (e.type === "district")
199
- t.filtered = t.properties.districtId === e.id;
229
+ t.filtered = t.properties.districtId !== e.id;
200
230
  else if (e.type === "subDistrict")
201
- t.filtered = t.properties.subDistrictId === e.id;
202
- else if (e.type === "signal" && (t.filtered = t.id === e.id, t.filtered))
231
+ t.filtered = t.properties.subDistrictId !== e.id;
232
+ else if (e.type === "signal" && (t.filtered = t.id !== e.id, t.filtered))
203
233
  return t.properties;
204
234
  });
205
235
  }
206
236
  resetFilter() {
207
237
  this.locations.forEach((e) => {
208
238
  e.filtered = !1;
209
- });
239
+ }), this.currentShowMode === "scatter" ? this.showScatter() : this.currentShowMode === "cluster" && this.showCluster();
210
240
  }
211
241
  /**
212
242
  * 根据当前比例尺更新路口符号
@@ -330,7 +360,7 @@ class C {
330
360
  * @returns
331
361
  */
332
362
  getNeighbors(e, t) {
333
- return this.clusteredLocations.filter((r) => r.id === e.id || r.visited ? !1 : this.getDistance(e, r) <= t);
363
+ return this.clusteredLocations.filter((i) => i.id === e.id || i.visited ? !1 : this.getDistance(e, i) <= t);
334
364
  }
335
365
  /**
336
366
  * 两点间的像素距离
@@ -352,24 +382,24 @@ class C {
352
382
  const e = {}, t = [];
353
383
  for (const s of this.clusteredLocations)
354
384
  s.clusterId === void 0 || s.clusterId === -1 ? t.push(s) : (e[s.clusterId] || (e[s.clusterId] = []), e[s.clusterId].push(s));
355
- const r = Object.keys(e).map((s, i) => {
356
- const o = e[Number(s)], a = o.length, l = o.reduce((n, y) => n + y.x, 0), c = o.reduce((n, y) => n + y.y, 0), m = l / a, p = c / a;
385
+ const i = Object.keys(e).map((s, r) => {
386
+ const o = e[Number(s)], a = o.length, l = o.reduce((n, m) => n + m.x, 0), c = o.reduce((n, m) => n + m.y, 0), y = l / a, d = c / a;
357
387
  return {
358
388
  id: Number(s),
359
389
  items: o,
360
390
  count: a,
361
391
  center: {
362
- x: m,
363
- y: p
392
+ x: y,
393
+ y: d
364
394
  }
365
395
  };
366
396
  });
367
- return t.length > 0 && r.push({
397
+ return t.length > 0 && i.push({
368
398
  id: -1,
369
399
  items: t,
370
400
  count: t.length,
371
401
  center: null
372
- }), r;
402
+ }), i;
373
403
  }
374
404
  /**
375
405
  * 按照像素距离聚类
@@ -380,13 +410,13 @@ class C {
380
410
  */
381
411
  doPixelCluster(e) {
382
412
  let t = 0;
383
- for (let r = 0; r < this.clusteredLocations.length; r++) {
384
- const s = this.clusteredLocations[r];
413
+ for (let i = 0; i < this.clusteredLocations.length; i++) {
414
+ const s = this.clusteredLocations[i];
385
415
  if (s.visited)
386
416
  continue;
387
417
  s.visited = !0;
388
- const i = this.getNeighbors(s, e);
389
- i.length < this.minClusterPoints ? s.clusterId = -1 : (i.forEach((o) => {
418
+ const r = this.getNeighbors(s, e);
419
+ r.length < this.minClusterPoints ? s.clusterId = -1 : (r.forEach((o) => {
390
420
  o.visited = !0, o.clusterId = t;
391
421
  }), s.clusterId = t, t++);
392
422
  }
@@ -394,13 +424,13 @@ class C {
394
424
  }
395
425
  showClusterResult(e) {
396
426
  this.crossLayer.removeAll();
397
- let t = Number.MIN_VALUE, r = Number.MAX_VALUE;
427
+ let t = Number.MIN_VALUE, i = Number.MAX_VALUE;
398
428
  e.forEach((s) => {
399
- s.count > 1 && (r = Math.min(r, s.count), t = Math.max(t, s.count));
429
+ s.count > 1 && (i = Math.min(i, s.count), t = Math.max(t, s.count));
400
430
  }), e.forEach((s) => {
401
431
  if (s.id !== -1) {
402
- let i = r === t ? (this.maxClusterSymbolSize + this.minClusterSymbolSize) / 2 : this.minClusterSymbolSize + (s.count - r) / (t - r) * (this.maxClusterSymbolSize - this.minClusterSymbolSize);
403
- i *= 0.75;
432
+ let r = i === t ? (this.maxClusterSymbolSize + this.minClusterSymbolSize) / 2 : this.minClusterSymbolSize + (s.count - i) / (t - i) * (this.maxClusterSymbolSize - this.minClusterSymbolSize);
433
+ r *= 0.75;
404
434
  const l = (s.count.toString().length * 8 + 6) / 2, c = new u({
405
435
  geometry: new h({ x: s.center.x, y: s.center.y }),
406
436
  attributes: {
@@ -430,7 +460,7 @@ class C {
430
460
  // 聚合数量
431
461
  {
432
462
  type: "CIMVectorMarker",
433
- size: i,
463
+ size: r,
434
464
  colorLocked: !0,
435
465
  anchorPointUnits: "Relative",
436
466
  frame: { xmin: -16, ymin: -16, xmax: 16, ymax: 16 },
@@ -504,7 +534,7 @@ class C {
504
534
  y: 0
505
535
  },
506
536
  anchorPointUnits: "Relative",
507
- size: i,
537
+ size: r,
508
538
  rotateClockwise: !0,
509
539
  textureFilter: "Picture",
510
540
  url: "/GisViewerAssets/Images/cross/gis_xhj_blue.png"
@@ -516,16 +546,42 @@ class C {
516
546
  });
517
547
  this.crossLayer.add(c);
518
548
  } else
519
- s.items.forEach((i) => {
549
+ s.items.forEach((r) => {
520
550
  const o = new u({
521
- geometry: new h({ x: i.x, y: i.y }),
551
+ geometry: new h({ x: r.x, y: r.y }),
522
552
  attributes: {
523
- ...i,
524
- ...i.properties,
553
+ ...r,
554
+ ...r.properties,
525
555
  type: "clusterPoint",
526
- id: i.id
556
+ id: r.id
527
557
  },
528
- symbol: this.crossGraphicSymbol
558
+ symbol: this.crossGraphicSymbol,
559
+ popupTemplate: {
560
+ title: "{name}信号机",
561
+ content: [
562
+ {
563
+ type: "fields",
564
+ fieldInfos: [
565
+ {
566
+ fieldName: "signalId",
567
+ label: "信号机编号"
568
+ },
569
+ {
570
+ fieldName: "nodeId",
571
+ label: "路口编号"
572
+ },
573
+ {
574
+ fieldName: "districtName",
575
+ label: "区控名称"
576
+ },
577
+ {
578
+ fieldName: "subDistrictName",
579
+ label: "子区名称"
580
+ }
581
+ ]
582
+ }
583
+ ]
584
+ }
529
585
  });
530
586
  this.crossLayer.add(o);
531
587
  });
@@ -533,5 +589,5 @@ class C {
533
589
  }
534
590
  }
535
591
  export {
536
- C as default
592
+ x as default
537
593
  };
@@ -1,3 +1,6 @@
1
+ /**
2
+ * 信控区域
3
+ */
1
4
  import { IFindSignalControlAreaParams, ILayerVisibleParams, IResult, IShowSignalControlAreaParams } from '../../../types';
2
5
  export default class SignalControlAreaController1 {
3
6
  private view;
@@ -1,15 +1,15 @@
1
- import a from "../../stores/index.mjs";
2
- import c from "./cross-renderer.mjs";
1
+ import c from "../../stores/index.mjs";
2
+ import o from "./cross-renderer.mjs";
3
3
  import r from "./district-controller.mjs";
4
- import l from "./district-renderer.mjs";
5
- import o from "./signal-renderer.mjs";
4
+ import a from "./district-renderer.mjs";
5
+ import l from "./signal-renderer.mjs";
6
6
  import d from "./sub-district-renderer.mjs";
7
7
  class f {
8
8
  // private roadLines!: IRoadLine[];
9
9
  constructor(t) {
10
10
  this.view = t;
11
- const s = a.useAppDataStore;
12
- this.mapConfig = JSON.parse(JSON.stringify(s.mapConfig)), this.districtRenderer = new l(t), this.subDistrictRenderer = new d(t), this.signalRenderer = new o(t), this.crossRenderer = new c(t);
11
+ const s = c.useAppDataStore;
12
+ this.mapConfig = JSON.parse(JSON.stringify(s.mapConfig)), this.districtRenderer = new a(t), this.subDistrictRenderer = new d(t), this.signalRenderer = new l(t), this.crossRenderer = new o(t);
13
13
  }
14
14
  /**
15
15
  * 显示所有区控、子区、信号机
@@ -26,7 +26,7 @@ class f {
26
26
  );
27
27
  s.push(n), e.push(...n.subDistricts);
28
28
  }
29
- return this.districtRenderer.style = t.style || "", await this.districtRenderer.showDistricts(s), await this.subDistrictRenderer.showSubDistricts(e), await this.signalRenderer.showSignals(s), { status: 0, message: "ok" };
29
+ return this.districtRenderer.style = t.style || "", await this.districtRenderer.showDistricts(s), await this.subDistrictRenderer.showSubDistricts(e), this.crossRenderer.addCrosses(s), { status: 0, message: "ok" };
30
30
  }
31
31
  /**
32
32
  * 显示单个区控
@@ -65,7 +65,7 @@ class f {
65
65
  * @returns
66
66
  */
67
67
  async clearSignalControlArea() {
68
- return this.crossRenderer.clearCrosses(), await this.districtRenderer.clearDistricts(), await this.subDistrictRenderer.clearSubDistricts(), await this.signalRenderer.clearSignals(), { status: 0, message: "ok" };
68
+ return this.crossRenderer.clearCrosses(), await this.districtRenderer.clearDistricts(), await this.subDistrictRenderer.clearSubDistricts(), this.crossRenderer.clearCrosses(), { status: 0, message: "ok" };
69
69
  }
70
70
  /**
71
71
  * 设置区控、子区、信号机图层可见性
@@ -114,10 +114,10 @@ class f {
114
114
  async highlightSignalControlArea(t) {
115
115
  switch (this.view.closePopup(), t.type) {
116
116
  case "district":
117
- return await this.districtRenderer.highlightDistrict(t) ? (this.subDistrictRenderer.filter(t), this.signalRenderer.filter(t), await this.subDistrictRenderer.showRoads(t), { status: 0, message: "ok" }) : { status: 1, message: "未找到区控" };
117
+ return await this.districtRenderer.highlightDistrict(t) ? (this.subDistrictRenderer.filter(t), this.crossRenderer.filter(t), await this.subDistrictRenderer.showRoads(t), { status: 0, message: "ok" }) : { status: 1, message: "未找到区控" };
118
118
  case "subDistrict": {
119
119
  const { count: s, parentId: e } = await this.subDistrictRenderer.highlightSubDistrict(t);
120
- return s > 0 ? (this.districtRenderer.filter(e), this.signalRenderer.filter(t), { status: 0, message: "ok" }) : { status: 1, message: "未找到子区" };
120
+ return s > 0 ? (this.districtRenderer.filter(e), this.crossRenderer.filter(t), { status: 0, message: "ok" }) : { status: 1, message: "未找到子区" };
121
121
  }
122
122
  case "signal": {
123
123
  const { districtId: s, subDistrictId: e, count: i } = await this.signalRenderer.highlightSignal(t.id);
@@ -132,7 +132,7 @@ class f {
132
132
  * @returns
133
133
  */
134
134
  async resetHighlight() {
135
- return this.districtRenderer.resetFilter(), this.subDistrictRenderer.resetFilter(), this.signalRenderer.resetFilter(), { status: 0, message: "ok" };
135
+ return this.districtRenderer.resetFilter(), this.subDistrictRenderer.resetFilter(), this.crossRenderer.resetFilter(), { status: 0, message: "ok" };
136
136
  }
137
137
  }
138
138
  export {
@@ -0,0 +1,24 @@
1
+ import { IResult, IShowSignalCrossParams } from 'packages/components/src/types';
2
+ /**
3
+ * 信控路口
4
+ */
5
+ export default class SignalCrossController {
6
+ private view;
7
+ private crossLayer;
8
+ private readonly symbolScale;
9
+ private scaleWatchHandle;
10
+ private showName;
11
+ private showStyle;
12
+ constructor(view: __esri.MapView | __esri.SceneView);
13
+ /**
14
+ * 显示信控路口
15
+ * @param params
16
+ * @returns
17
+ */
18
+ showSignalCross(params: IShowSignalCrossParams): IResult;
19
+ clearSignalCross(): void;
20
+ private getBrandLabel;
21
+ private getOnlineLabel;
22
+ private getMalfunctionLabel;
23
+ private getCrossSymbol;
24
+ }
@@ -0,0 +1,193 @@
1
+ import o from "@arcgis/core/Graphic";
2
+ import n from "@arcgis/core/layers/GraphicsLayer";
3
+ class b {
4
+ constructor(e) {
5
+ this.symbolScale = 6e3, this.showName = "signalId", this.showStyle = "scatter", this.view = e, this.crossLayer = new n({
6
+ id: "signal-control-cross-layer",
7
+ title: "信控路口图层"
8
+ }), this.view.map.add(this.crossLayer);
9
+ }
10
+ /**
11
+ * 显示信控路口
12
+ * @param params
13
+ * @returns
14
+ */
15
+ showSignalCross(e) {
16
+ if (this.crossLayer.removeAll(), this.showName = e.showName || "signalId", this.showStyle = e.style || "scatter", this.scaleWatchHandle || (this.scaleWatchHandle = this.view.watch("scale", (t, i) => {
17
+ (t <= this.symbolScale && i > this.symbolScale || t > this.symbolScale && i <= this.symbolScale) && this.crossLayer.graphics.forEach((l) => {
18
+ const s = l.attributes;
19
+ l.symbol = this.getCrossSymbol(s);
20
+ });
21
+ })), this.showStyle === "scatter") {
22
+ const t = e.points.map((i) => {
23
+ const l = this.getCrossSymbol(i), s = this.getBrandLabel(i.brand), a = this.getOnlineLabel(i.isOnline), r = this.getMalfunctionLabel(
24
+ i.isMalfunction
25
+ );
26
+ return new o({
27
+ geometry: {
28
+ type: "point",
29
+ longitude: i.x,
30
+ latitude: i.y
31
+ },
32
+ symbol: l,
33
+ attributes: {
34
+ type: "signal-cross",
35
+ id: i.crossId,
36
+ brandLabel: s,
37
+ isOnlineLabel: a,
38
+ isMalfunctionLabel: r,
39
+ ...i
40
+ },
41
+ popupTemplate: {
42
+ title: "{name}信号机",
43
+ content: [
44
+ {
45
+ type: "fields",
46
+ fieldInfos: [
47
+ {
48
+ fieldName: "signalId",
49
+ label: "信号机编号"
50
+ },
51
+ {
52
+ fieldName: "crossId",
53
+ label: "路口编号"
54
+ },
55
+ {
56
+ fieldName: "brandLabel",
57
+ label: "品牌"
58
+ },
59
+ {
60
+ fieldName: "isOnlineLabel",
61
+ label: "是否在线"
62
+ },
63
+ {
64
+ fieldName: "isMalfunctionLabel",
65
+ label: "是否故障"
66
+ }
67
+ ]
68
+ }
69
+ ]
70
+ }
71
+ });
72
+ });
73
+ this.crossLayer.addMany(t);
74
+ }
75
+ return { status: 0, message: "ok" };
76
+ }
77
+ clearSignalCross() {
78
+ var e;
79
+ this.crossLayer.removeAll(), (e = this.scaleWatchHandle) == null || e.remove(), this.scaleWatchHandle = null;
80
+ }
81
+ getBrandLabel(e) {
82
+ const t = (e ?? "").toLowerCase();
83
+ return t === "scats" ? "SCATS" : t === "gc" ? "国产" : e ?? "";
84
+ }
85
+ getOnlineLabel(e) {
86
+ return e ? "在线" : "离线";
87
+ }
88
+ getMalfunctionLabel(e) {
89
+ return e ? "故障" : "正常";
90
+ }
91
+ getCrossSymbol(e) {
92
+ if (this.view.scale <= this.symbolScale) {
93
+ let t = "/GisViewerAssets/Images/cross/ic_";
94
+ return t += e.brand === "scats" ? "scats_" : "gc_", t += e.isOnline ? "online_" : "offline_", t += e.isMalfunction ? "malfunction.png" : "normal.png", {
95
+ type: "cim",
96
+ data: {
97
+ type: "CIMSymbolReference",
98
+ primitiveOverrides: [
99
+ {
100
+ // 将textGraphic的TextString替换为graphic.attributes.name
101
+ type: "CIMPrimitiveOverride",
102
+ primitiveName: "textGraphic",
103
+ propertyName: "TextString",
104
+ valueExpressionInfo: {
105
+ type: "CIMExpressionInfo",
106
+ title: "Custom",
107
+ expression: this.showName === "signalId" ? 'Replace($feature.name, "与", "/") + " " + $feature.signalId' : 'Replace($feature.name, "与", "/") + " " + $feature.crossId',
108
+ returnType: "Default"
109
+ }
110
+ }
111
+ ],
112
+ symbol: {
113
+ type: "CIMPointSymbol",
114
+ symbolLayers: [
115
+ // 路口名称
116
+ {
117
+ type: "CIMVectorMarker",
118
+ size: 25,
119
+ colorLocked: !0,
120
+ anchorPointUnits: "Relative",
121
+ frame: { xmin: -16, ymin: -16, xmax: 16, ymax: 16 },
122
+ markerGraphics: [
123
+ {
124
+ type: "CIMMarkerGraphic",
125
+ primitiveName: "textGraphic",
126
+ geometry: { x: 0, y: 0 },
127
+ symbol: {
128
+ type: "CIMTextSymbol",
129
+ height: 12,
130
+ horizontalAlignment: "Center",
131
+ offsetX: 0,
132
+ offsetY: 20,
133
+ haloSize: 1,
134
+ haloSymbol: {
135
+ type: "CIMPolygonSymbol",
136
+ symbolLayers: [
137
+ {
138
+ type: "CIMSolidFill",
139
+ enable: !0,
140
+ color: [255, 255, 255, 255]
141
+ }
142
+ ]
143
+ },
144
+ symbol: {
145
+ type: "CIMPolygonSymbol",
146
+ symbolLayers: [
147
+ {
148
+ type: "CIMSolidFill",
149
+ enable: !0,
150
+ color: [0, 0, 0, 255]
151
+ }
152
+ ]
153
+ },
154
+ verticalAlignment: "Center"
155
+ },
156
+ textString: ""
157
+ }
158
+ ],
159
+ scaleSymbolsProportionally: !0,
160
+ respectFrame: !0
161
+ },
162
+ // 路口图标
163
+ {
164
+ type: "CIMPictureMarker",
165
+ enable: !0,
166
+ anchorPoint: {
167
+ x: 0,
168
+ y: 0
169
+ },
170
+ anchorPointUnits: "Relative",
171
+ size: 20,
172
+ rotateClockwise: !0,
173
+ textureFilter: "Picture",
174
+ url: t
175
+ }
176
+ ]
177
+ }
178
+ }
179
+ };
180
+ } else {
181
+ const t = {
182
+ type: "simple-marker",
183
+ style: "circle",
184
+ size: 6,
185
+ outline: { width: 0 }
186
+ };
187
+ return e.brand.toLowerCase() === "scats" ? (e.isOnline ? t.color = [23, 169, 100] : t.color = [202, 202, 202], t.outline.color = [23, 169, 100]) : e.isOnline ? t.color = [33, 240, 142] : t.color = [202, 202, 202], t;
188
+ }
189
+ }
190
+ }
191
+ export {
192
+ b as default
193
+ };
@@ -309,6 +309,21 @@ export interface IShowSignalControlAreaParams {
309
309
  areaList: any[];
310
310
  style?: string;
311
311
  }
312
+ export interface ISignalCross {
313
+ signalId: string;
314
+ crossId: string;
315
+ name: string;
316
+ brand: string;
317
+ isOnline: boolean;
318
+ isMalfunction: boolean;
319
+ x: number;
320
+ y: number;
321
+ }
322
+ export interface IShowSignalCrossParams {
323
+ style: string;
324
+ showName: string;
325
+ points: ISignalCross[];
326
+ }
312
327
  export interface IDistrictRoad {
313
328
  id: string;
314
329
  coordinates: number[][];
@@ -12,7 +12,8 @@ import PoliceJurisdiction from './utils/police-jurisdiction';
12
12
  import QueueLength from './utils/queue-length';
13
13
  import RoadConfigTool from './utils/road-config-tool';
14
14
  import EditSignalArea from './utils/signal-control-area/edit-area';
15
- import ShowSignalArea from './utils/signal-control-area/show-area';
15
+ import SignalAreaController from './utils/signal-control-area/signal-area-controller';
16
+ import SignalCrossController from './utils/signal-control-area/signal-cross-controller';
16
17
  import TrafficFlow from './utils/traffic-flow';
17
18
  declare const _sfc_main: import("vue").DefineComponent<{
18
19
  config: {
@@ -34,7 +35,8 @@ declare const _sfc_main: import("vue").DefineComponent<{
34
35
  queueLength: QueueLength;
35
36
  openDriveRenderer: OpenDriveRenderer;
36
37
  editSignalAreaController: EditSignalArea;
37
- showSignalAreaController: ShowSignalArea;
38
+ signalAreaController: SignalAreaController;
39
+ signalCrossController: SignalCrossController;
38
40
  greenWaveBandController: GreenWaveBandController;
39
41
  policeJurisdictionController: PoliceJurisdiction;
40
42
  edpassDeviceController: EdpassDeviceController;
@@ -150,7 +152,7 @@ declare const _sfc_main: import("vue").DefineComponent<{
150
152
  status: number;
151
153
  message: string;
152
154
  }>;
153
- clearBlockOpenDriveLane: () => void | {
155
+ clearBlockOpenDriveLane: (params: IBlockOpenDriveLaneParams) => void | {
154
156
  status: number;
155
157
  message: string;
156
158
  };
@@ -186,6 +188,11 @@ declare const _sfc_main: import("vue").DefineComponent<{
186
188
  status: number;
187
189
  message: string;
188
190
  } | undefined;
191
+ showSignalCross: (params: any) => import("../types").IResult;
192
+ clearSignalCross: () => void | {
193
+ status: number;
194
+ message: string;
195
+ };
189
196
  addGreenWaveBand: (params: IEditSignalControlAreaParams) => void;
190
197
  stopAddGreenWaveBand: () => {
191
198
  status: number;