gisviewer-vue3-arcgis 1.0.100 → 1.0.102

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 (28) hide show
  1. package/es/src/gis-map/gis-map.vue.d.ts +1 -0
  2. package/es/src/gis-map/gis-map.vue.mjs +57 -54
  3. package/es/src/gis-map/index.d.ts +1 -0
  4. package/es/src/gis-map/utils/holo-flow/index.d.ts +2 -0
  5. package/es/src/gis-map/utils/holo-flow/index.mjs +18 -10
  6. package/es/src/gis-map/utils/holo-flow/trace-holo-flow.d.ts +7 -1
  7. package/es/src/gis-map/utils/holo-flow/trace-holo-flow.mjs +50 -43
  8. package/es/src/gis-map/utils/holo-flow/{trace-layer-renderer.d.ts → trace-renderer-layer.d.ts} +8 -2
  9. package/es/src/gis-map/utils/holo-flow/{trace-layer-renderer.mjs → trace-renderer-layer.mjs} +39 -32
  10. package/es/src/gis-map/utils/holo-flow/{trace-external-renderer.d.ts → trace-renderer-webgl.d.ts} +9 -2
  11. package/es/src/gis-map/utils/holo-flow/trace-renderer-webgl.mjs +343 -0
  12. package/es/src/types/index.d.ts +3 -0
  13. package/lib/src/gis-map/gis-map.vue.d.ts +1 -0
  14. package/lib/src/gis-map/gis-map.vue.js +1 -1
  15. package/lib/src/gis-map/index.d.ts +1 -0
  16. package/lib/src/gis-map/utils/holo-flow/index.d.ts +2 -0
  17. package/lib/src/gis-map/utils/holo-flow/index.js +1 -1
  18. package/lib/src/gis-map/utils/holo-flow/trace-holo-flow.d.ts +7 -1
  19. package/lib/src/gis-map/utils/holo-flow/trace-holo-flow.js +1 -1
  20. package/lib/src/gis-map/utils/holo-flow/{trace-layer-renderer.d.ts → trace-renderer-layer.d.ts} +8 -2
  21. package/lib/src/gis-map/utils/holo-flow/trace-renderer-layer.js +1 -0
  22. package/lib/src/gis-map/utils/holo-flow/{trace-external-renderer.d.ts → trace-renderer-webgl.d.ts} +9 -2
  23. package/lib/src/gis-map/utils/holo-flow/trace-renderer-webgl.js +1 -0
  24. package/lib/src/types/index.d.ts +3 -0
  25. package/package.json +1 -1
  26. package/es/src/gis-map/utils/holo-flow/trace-external-renderer.mjs +0 -320
  27. package/lib/src/gis-map/utils/holo-flow/trace-external-renderer.js +0 -1
  28. package/lib/src/gis-map/utils/holo-flow/trace-layer-renderer.js +0 -1
@@ -50,6 +50,7 @@ declare const _sfc_main: import("vue").DefineComponent<{
50
50
  disconnectCarFlow: () => void;
51
51
  handleHoloVehicleTraceData: (vehicleTrace: any) => void;
52
52
  clearHoloTrace: () => void;
53
+ setInterpolate: (enable: boolean) => void;
53
54
  handleHoloSignalData: (signalData: any) => Promise<void>;
54
55
  clearHoloSignal: () => void;
55
56
  toggleTrafficInfo: (params: IToggleTrafficInfoParams) => void;
@@ -1,14 +1,14 @@
1
- import { defineComponent as te, ref as ae, onMounted as ne, getCurrentInstance as re, computed as oe, openBlock as se, createElementBlock as ce, createElementVNode as ie } from "vue";
2
- import le, { registerStore as me } from "./stores/index.mjs";
1
+ import { defineComponent as ne, ref as ae, onMounted as re, getCurrentInstance as oe, computed as se, openBlock as ce, createElementBlock as ie, createElementVNode as le } from "vue";
2
+ import me, { registerStore as pe } from "./stores/index.mjs";
3
3
  import "./style/index.css";
4
4
  import g from "./utils/holo-flow/index.mjs";
5
- import pe from "./utils/map-initializer.mjs";
5
+ import fe from "./utils/map-initializer.mjs";
6
6
  import ue from "./utils/open-drive-renderer/index.mjs";
7
- import fe from "./utils/overlay.mjs";
8
- import de from "./utils/queue-length.mjs";
7
+ import de from "./utils/overlay.mjs";
8
+ import ge from "./utils/queue-length.mjs";
9
9
  import v from "./utils/road-config-tool/index.mjs";
10
- import ge from "./utils/traffic-flow.mjs";
11
- const ye = { class: "gis-viewer" }, Le = /* @__PURE__ */ te({
10
+ import ye from "./utils/traffic-flow.mjs";
11
+ const Ce = { class: "gis-viewer" }, De = /* @__PURE__ */ ne({
12
12
  __name: "gis-map",
13
13
  props: {
14
14
  config: {},
@@ -17,73 +17,75 @@ const ye = { class: "gis-viewer" }, Le = /* @__PURE__ */ te({
17
17
  emits: ["mapLoaded", "markerClick", "mapClick"],
18
18
  setup(w, { expose: O, emit: T }) {
19
19
  const m = ae(null);
20
- let o, s, n, r, t, a, i, l;
21
- me(), ne(async () => {
20
+ let o, s, a, r, t, n, i, l;
21
+ pe(), re(async () => {
22
22
  if (!m.value)
23
23
  return;
24
- const e = re(), { $gisviewerAssetsRoot: c } = e.appContext.config.globalProperties, C = await (await fetch(y.config)).json();
24
+ const e = oe(), { $gisviewerAssetsRoot: c } = e.appContext.config.globalProperties, C = await (await fetch(y.config)).json();
25
25
  C.assetsRoot = y.assetsRoot || c;
26
- const F = le.useAppDataStore;
27
- F.mapConfig = C, s = new pe(), o = await s.initialize({
26
+ const ee = me.useAppDataStore;
27
+ ee.mapConfig = C, s = new fe(), o = await s.initialize({
28
28
  container: m.value,
29
- markerClickCallback: (u, f, d, ee) => {
30
- p("markerClick", u, f, d, ee);
29
+ markerClickCallback: (f, u, d, te) => {
30
+ p("markerClick", f, u, d, te);
31
31
  },
32
- mapClickCallback: (u, f, d) => {
33
- p("mapClick", u, f, d);
32
+ mapClickCallback: (f, u, d) => {
33
+ p("mapClick", f, u, d);
34
34
  }
35
35
  }), t = new g(o), p("mapLoaded");
36
36
  });
37
- const h = oe(() => o), k = async (e) => await s.setMapCenter(e), b = async (e) => await s.setMapCamera(e), A = async (e) => await s.lookAt(e), I = (e) => s.setLayerVisibility(e), L = (e, c) => s.requestCoordinateTransform(e, c), D = (e) => {
37
+ const k = se(() => o), I = async (e) => await s.setMapCenter(e), b = async (e) => await s.setMapCamera(e), h = async (e) => await s.lookAt(e), A = (e) => s.setLayerVisibility(e), L = (e, c) => s.requestCoordinateTransform(e, c), D = (e) => {
38
38
  s.cancelCoordinateTransform(e);
39
39
  }, S = (e) => {
40
40
  s.setMapZoomRange(e);
41
- }, _ = (e) => (n || (n = new v(o)), n.showLaneNumber(e)), M = () => {
42
- n == null || n.clearLaneNumber();
43
- }, R = async (e) => (n || (n = new v(o)), await n.initializeSearch(e)), V = async () => n == null ? void 0 : n.calCrossIndicatorArea(), x = async () => {
41
+ }, _ = (e) => (a || (a = new v(o)), a.showLaneNumber(e)), M = () => {
42
+ a == null || a.clearLaneNumber();
43
+ }, R = async (e) => (a || (a = new v(o)), await a.initializeSearch(e)), V = async () => a == null ? void 0 : a.calCrossIndicatorArea(), x = async () => {
44
44
  }, B = async (e, c) => {
45
- r || (r = new ge(o)), r.connectTrafficFlow(e, c);
45
+ r || (r = new ye(o)), r.connectTrafficFlow(e, c);
46
46
  }, H = () => {
47
47
  r == null || r.disconnectTrafficFlow();
48
48
  }, z = (e) => {
49
49
  t || (t = new g(o)), t.handleVehicleTraceData(e);
50
50
  }, N = () => {
51
51
  t == null || t.clearHoloTrace();
52
- }, Q = async (e) => {
52
+ }, Q = (e) => {
53
+ t == null || t.setInterpolate(e);
54
+ }, j = async (e) => {
53
55
  t || (t = new g(o)), await t.handleSignalData(e);
54
- }, j = () => {
56
+ }, E = () => {
55
57
  t == null || t.clearHoloSignal();
56
- }, E = (e) => {
57
- r == null || r.toggleTrafficInfo(e);
58
58
  }, P = (e) => {
59
- t == null || t.toggleTrafficObject(e), r == null || r.toggleTrafficObject(e);
59
+ r == null || r.toggleTrafficInfo(e), t == null || t.toggleTrafficInfo(e);
60
60
  }, Z = (e) => {
61
+ t == null || t.toggleTrafficObject(e), r == null || r.toggleTrafficObject(e);
62
+ }, q = (e) => {
61
63
  t == null || t.updatePanelContent(e);
62
- }, q = async (e) => (a || (a = new fe(o)), a.addOverlays(e)), $ = (e) => a == null ? void 0 : a.removeOverlaysByType(e), G = (e) => a == null ? void 0 : a.removeOverlaysById(e), J = () => a == null ? void 0 : a.removeAllOverlays(), K = () => {
63
- a == null || a.showAllOverlays();
64
- }, U = (e) => {
65
- i || (i = new de(o)), i.updateQueueLength(e);
66
- }, W = () => {
64
+ }, $ = async (e) => (n || (n = new de(o)), n.addOverlays(e)), G = (e) => n == null ? void 0 : n.removeOverlaysByType(e), J = (e) => n == null ? void 0 : n.removeOverlaysById(e), K = () => n == null ? void 0 : n.removeAllOverlays(), U = () => {
65
+ n == null || n.showAllOverlays();
66
+ }, W = (e) => {
67
+ i || (i = new ge(o)), i.updateQueueLength(e);
68
+ }, X = () => {
67
69
  i == null || i.removeQueueLength();
68
- }, X = async (e, c) => {
70
+ }, Y = async (e, c) => {
69
71
  l || (l = new ue(o)), await l.showOpenDrive(e, c);
70
- }, Y = async () => {
72
+ }, F = async () => {
71
73
  await (l == null ? void 0 : l.hideOpenDrive());
72
74
  }, y = w, p = T;
73
75
  return O({
74
- mapViewer: h,
75
- setLayerVisibility: I,
76
- setMapCenter: k,
77
- lookAt: A,
76
+ mapViewer: k,
77
+ setLayerVisibility: A,
78
+ setMapCenter: I,
79
+ lookAt: h,
78
80
  setMapCamera: b,
79
81
  setMapZoomRange: S,
80
82
  requestCoordinateTransform: L,
81
83
  cancelCoordinateTransform: D,
82
- addOverlays: q,
83
- showAllOverlays: K,
84
- removeOverlaysByType: $,
85
- removeOverlaysById: G,
86
- removeAllOverlays: J,
84
+ addOverlays: $,
85
+ showAllOverlays: U,
86
+ removeOverlaysByType: G,
87
+ removeOverlaysById: J,
88
+ removeAllOverlays: K,
87
89
  showLaneNumber: _,
88
90
  clearLaneNumber: M,
89
91
  initializeAreaTool: R,
@@ -93,17 +95,18 @@ const ye = { class: "gis-viewer" }, Le = /* @__PURE__ */ te({
93
95
  disconnectCarFlow: H,
94
96
  handleHoloVehicleTraceData: z,
95
97
  clearHoloTrace: N,
96
- handleHoloSignalData: Q,
97
- clearHoloSignal: j,
98
- toggleTrafficInfo: E,
99
- toggleTrafficObject: P,
100
- toggleVehicleInfo: Z,
101
- updateQueueLength: U,
102
- removeQueueLength: W,
103
- showOpenDrive: X,
104
- hideOpenDrive: Y
105
- }), (e, c) => (se(), ce("div", ye, [
106
- ie("div", {
98
+ handleHoloSignalData: j,
99
+ clearHoloSignal: E,
100
+ setInterpolate: Q,
101
+ toggleTrafficInfo: P,
102
+ toggleTrafficObject: Z,
103
+ toggleVehicleInfo: q,
104
+ updateQueueLength: W,
105
+ removeQueueLength: X,
106
+ showOpenDrive: Y,
107
+ hideOpenDrive: F
108
+ }), (e, c) => (ce(), ie("div", Ce, [
109
+ le("div", {
107
110
  class: "gis-viewer-main",
108
111
  ref_key: "mapContainer",
109
112
  ref: m
@@ -112,5 +115,5 @@ const ye = { class: "gis-viewer" }, Le = /* @__PURE__ */ te({
112
115
  }
113
116
  });
114
117
  export {
115
- Le as default
118
+ De as default
116
119
  };
@@ -40,6 +40,7 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
40
40
  disconnectCarFlow: () => void;
41
41
  handleHoloVehicleTraceData: (vehicleTrace: any) => void;
42
42
  clearHoloTrace: () => void;
43
+ setInterpolate: (enable: boolean) => void;
43
44
  handleHoloSignalData: (signalData: any) => Promise<void>;
44
45
  clearHoloSignal: () => void;
45
46
  toggleTrafficInfo: (params: import("../types").IToggleTrafficInfoParams) => void;
@@ -11,7 +11,9 @@ export default class Index {
11
11
  handleVehicleTraceData(data: any): void;
12
12
  toggleTrafficObject(params: IToggleTrafficInfoParams): void;
13
13
  clearHoloTrace(): void;
14
+ toggleTrafficInfo(params: IToggleTrafficInfoParams): void;
14
15
  updatePanelContent(contentType: string): void;
15
16
  handleSignalData(data: any): Promise<void>;
16
17
  clearHoloSignal(): void;
18
+ setInterpolate(enable: boolean): void;
17
19
  }
@@ -12,13 +12,13 @@ class h {
12
12
  this.traceHoloFlow || (this.traceHoloFlow = new i(this.view)), this.traceHoloFlow.handleVehicleTraceData(e);
13
13
  }
14
14
  toggleTrafficObject(e) {
15
- var l, o;
15
+ var o, l;
16
16
  switch (e.name.toLowerCase()) {
17
17
  case "groundVehicle".toLowerCase():
18
- (l = this.traceHoloFlow) == null || l.toggleGroundVehicle(e.visible);
18
+ (o = this.traceHoloFlow) == null || o.toggleGroundVehicle(e.visible);
19
19
  break;
20
20
  case "elevatedVehicle".toLowerCase():
21
- (o = this.traceHoloFlow) == null || o.toggleElevatedVehicle(e.visible);
21
+ (l = this.traceHoloFlow) == null || l.toggleElevatedVehicle(e.visible);
22
22
  break;
23
23
  }
24
24
  }
@@ -29,24 +29,28 @@ class h {
29
29
  // public toggleVehiclePlate(visible: boolean): void {
30
30
  // this.traceHoloFlow?.togglePlateLayer(visible);
31
31
  // }
32
- updatePanelContent(e) {
32
+ toggleTrafficInfo(e) {
33
33
  var o;
34
- let l = a.None;
34
+ (o = this.traceHoloFlow) == null || o.toggleTrafficInfo(e);
35
+ }
36
+ updatePanelContent(e) {
37
+ var l;
38
+ let o = a.None;
35
39
  switch (e) {
36
40
  case "none":
37
- l = a.None;
41
+ o = a.None;
38
42
  break;
39
43
  case "plateNumber":
40
- l = a.PlateNumber;
44
+ o = a.PlateNumber;
41
45
  break;
42
46
  case "vehicleId":
43
- l = a.Id;
47
+ o = a.Id;
44
48
  break;
45
49
  case "mix":
46
- l = a.Mix;
50
+ o = a.Mix;
47
51
  break;
48
52
  }
49
- (o = this.traceHoloFlow) == null || o.updatePanelContent(l);
53
+ (l = this.traceHoloFlow) == null || l.updatePanelContent(o);
50
54
  }
51
55
  async handleSignalData(e) {
52
56
  this.signalHoloFlow || (this.signalHoloFlow = new t(this.view)), await this.signalHoloFlow.initializeLayer(), await this.signalHoloFlow.handleSignalData(e);
@@ -55,6 +59,10 @@ class h {
55
59
  var e;
56
60
  (e = this.signalHoloFlow) == null || e.clearSignal();
57
61
  }
62
+ setInterpolate(e) {
63
+ var o;
64
+ (o = this.traceHoloFlow) == null || o.setInterpolate(e);
65
+ }
58
66
  }
59
67
  export {
60
68
  h as default
@@ -1,4 +1,4 @@
1
- import { EVehiclePlateState } from '../../../types';
1
+ import { EVehiclePlateState, IToggleTrafficInfoParams } from '../../../types';
2
2
  export default class TraceHoloFlow {
3
3
  private mapConfig;
4
4
  private view;
@@ -9,6 +9,11 @@ export default class TraceHoloFlow {
9
9
  * 处理全息流轨迹数据
10
10
  * */
11
11
  handleVehicleTraceData(data: any): void;
12
+ /**
13
+ * 切换交通信息可见性
14
+ * @param params
15
+ */
16
+ toggleTrafficInfo(params: IToggleTrafficInfoParams): void;
12
17
  /**
13
18
  * 清除轨迹流
14
19
  * */
@@ -16,5 +21,6 @@ export default class TraceHoloFlow {
16
21
  updatePanelContent(contentType: EVehiclePlateState): void;
17
22
  toggleGroundVehicle(visible: boolean): void;
18
23
  toggleElevatedVehicle(visible: boolean): void;
24
+ setInterpolate(enable: boolean): void;
19
25
  private buildVehicleTrackData;
20
26
  }
@@ -1,12 +1,12 @@
1
- import * as u from "@arcgis/core/views/3d/externalRenderers";
2
- import T from "../../stores/index.mjs";
3
- import f from "./trace-external-renderer.mjs";
4
- import g from "./trace-layer-renderer.mjs";
5
- class N {
1
+ import * as m from "@arcgis/core/views/3d/externalRenderers";
2
+ import f from "../../stores/index.mjs";
3
+ import g from "./trace-renderer-layer.mjs";
4
+ import u from "./trace-renderer-webgl.mjs";
5
+ class y {
6
6
  constructor(e) {
7
7
  this.lastDataTime = 0, this.view = e;
8
- const i = T.useAppDataStore;
9
- this.mapConfig = JSON.parse(JSON.stringify(i.mapConfig)), e.type === "3d" ? (this.traceRenderer = new f(e), u.add(
8
+ const o = f.useAppDataStore;
9
+ this.mapConfig = JSON.parse(JSON.stringify(o.mapConfig)), e.type === "3d" ? (this.traceRenderer = new u(e), m.add(
10
10
  e,
11
11
  this.traceRenderer
12
12
  )) : this.traceRenderer = new g(e);
@@ -15,33 +15,36 @@ class N {
15
15
  * 处理全息流轨迹数据
16
16
  * */
17
17
  handleVehicleTraceData(e) {
18
- const i = new Date().getTime();
19
- if (i - this.lastDataTime < 100)
20
- return;
21
- this.lastDataTime = i;
22
- const { newVehList: s, updateVehList: n, deleteVehList: o, jgsj: l } = e, a = e.crossId || "", h = [], r = [];
18
+ const o = new Date().getTime(), { newVehList: s, updateVehList: a, deleteVehList: c, jgsj: i } = e, n = e.crossId || "", l = [], h = [];
23
19
  if (s && s.length > 0) {
24
- for (const c of s) {
25
- c.localTimestamp || (c.localTimestamp = l || i);
26
- const t = this.buildVehicleTrackData(c, a);
27
- t && h.push(t);
20
+ for (const t of s) {
21
+ t.localTimestamp || (t.localTimestamp = i || o);
22
+ const r = this.buildVehicleTrackData(t, n);
23
+ r && l.push(r);
28
24
  }
29
- this.traceRenderer.addVehicles(h);
25
+ this.traceRenderer.addVehicles(l);
30
26
  }
31
- if (n && n.length > 0) {
32
- for (const c of n) {
33
- const t = this.buildVehicleTrackData(c, a);
34
- t && r.push(t);
27
+ if (a && a.length > 0) {
28
+ for (const t of a) {
29
+ const r = this.buildVehicleTrackData(t, n);
30
+ r && h.push(r);
35
31
  }
36
- this.traceRenderer.updateVehicles(r);
32
+ this.traceRenderer.updateVehicles(h);
37
33
  }
38
- if (o && o.length > 0) {
39
- const c = o.map(
40
- (t) => a + "-" + (t.ptcId || t.vehno || t.vehNo)
34
+ if (c && c.length > 0) {
35
+ const t = c.map(
36
+ (r) => n + "-" + (r.ptcId || r.vehno || r.vehNo)
41
37
  );
42
- this.traceRenderer.deleteVehicles(c);
38
+ this.traceRenderer.deleteVehicles(t);
43
39
  }
44
40
  }
41
+ /**
42
+ * 切换交通信息可见性
43
+ * @param params
44
+ */
45
+ toggleTrafficInfo(e) {
46
+ this.traceRenderer.toggleTrafficInfo(e);
47
+ }
45
48
  /**
46
49
  * 清除轨迹流
47
50
  * */
@@ -57,27 +60,31 @@ class N {
57
60
  toggleElevatedVehicle(e) {
58
61
  this.traceRenderer.toggleElevatedVehicle(e);
59
62
  }
60
- buildVehicleTrackData(e, i) {
61
- const p = e.longitude, s = e.latitude, n = e.ptcId, o = Number(e.ptcType), l = e.heading, a = Number(e.vehicleType), h = Number(e.vehicleColor), r = e.plateNo || e.plateno, c = Number(e.plateColor), t = e.timestamp, d = e.localTimestamp, m = String(e.roadLayer) || "1";
62
- if (!(o < 0 || o > 8))
63
+ setInterpolate(e) {
64
+ this.traceRenderer.setInterpolate(e);
65
+ }
66
+ buildVehicleTrackData(e, o) {
67
+ const s = e.longitude, a = e.latitude, c = e.ptcId, i = Number(e.ptcType), n = e.heading, l = Number(e.vehicleType), h = Number(e.vehicleColor), t = e.plateNo || e.plateno, r = Number(e.plateColor), p = e.timestamp, d = String(e.roadLayer) || "1";
68
+ if (!(i < 0 || i > 8))
63
69
  return {
64
- ptcId: n,
65
- crossId: i,
66
- x: p,
67
- y: s,
68
- ptcType: o,
69
- vehicleType: a,
70
- heading: o === 2 ? -l : l,
70
+ ptcId: c,
71
+ crossId: o,
72
+ vehicleId: o + "-" + c,
73
+ x: s,
74
+ y: a,
75
+ ptcType: i,
76
+ vehicleType: l,
77
+ heading: i === 2 ? -n : n,
71
78
  vehicleColor: h,
72
- showName: r && r !== "" && r !== "0" && r !== "000000" ? r : "",
73
- plateNo: r,
74
- plateColor: c,
75
- timestamp: t,
76
- localTimestamp: d,
77
- roadLayer: m
79
+ showName: t && t !== "" && t !== "0" && t !== "000000" ? t : "",
80
+ plateNo: t,
81
+ plateColor: r,
82
+ timestamp: p,
83
+ localTimestamp: Date.now(),
84
+ roadLayer: d
78
85
  };
79
86
  }
80
87
  }
81
88
  export {
82
- N as default
89
+ y as default
83
90
  };
@@ -1,9 +1,10 @@
1
1
  import { EVehiclePlateState, ITraceRendererInterface, IVehicleTrack } from '../../../types';
2
- export default class TraceLayerRenderer implements ITraceRendererInterface {
2
+ export default class TraceRendererLayer implements ITraceRendererInterface {
3
3
  private view;
4
4
  private readonly vehicleLayer;
5
5
  private mapConfig;
6
6
  constructor(view: __esri.MapView);
7
+ private needInterpolate;
7
8
  private showVehiclePlate;
8
9
  private showGroundVehicle;
9
10
  private showElevatedVehicle;
@@ -13,7 +14,6 @@ export default class TraceLayerRenderer implements ITraceRendererInterface {
13
14
  updateVehicles(objects: IVehicleTrack[]): void;
14
15
  deleteVehicles(idList: string[]): void;
15
16
  clearVehicles(): void;
16
- updatePanelContent(contentType: EVehiclePlateState): void;
17
17
  /**
18
18
  * 设置地面车辆显示隐藏
19
19
  * @param visible
@@ -24,6 +24,12 @@ export default class TraceLayerRenderer implements ITraceRendererInterface {
24
24
  * @param visible
25
25
  */
26
26
  toggleElevatedVehicle(visible: boolean): void;
27
+ toggleTrafficInfo(params: {
28
+ name: string;
29
+ visible: boolean;
30
+ }): void;
31
+ updatePanelContent(contentType: EVehiclePlateState): void;
32
+ setInterpolate(needInterpolate: boolean): void;
27
33
  private render;
28
34
  private updatePosition;
29
35
  /**
@@ -1,49 +1,50 @@
1
1
  import h from "@arcgis/core/Graphic";
2
- import p from "@arcgis/core/layers/GraphicsLayer";
3
- import m from "../../stores/index.mjs";
2
+ import c from "@arcgis/core/layers/GraphicsLayer";
3
+ import p from "../../stores/index.mjs";
4
4
  class u {
5
5
  constructor(i) {
6
- this.showVehiclePlate = !1, this.showGroundVehicle = !0, this.showElevatedVehicle = !0, this.historyPositionMap = /* @__PURE__ */ new Map(), this.vehicleObjectMap = /* @__PURE__ */ new Map(), this.view = i;
7
- const e = m.useAppDataStore;
8
- this.mapConfig = JSON.parse(JSON.stringify(e.mapConfig)), this.vehicleLayer = new p({
6
+ this.needInterpolate = !0, this.showVehiclePlate = !1, this.showGroundVehicle = !0, this.showElevatedVehicle = !0, this.historyPositionMap = /* @__PURE__ */ new Map(), this.vehicleObjectMap = /* @__PURE__ */ new Map(), this.view = i;
7
+ const e = p.useAppDataStore;
8
+ this.mapConfig = JSON.parse(JSON.stringify(e.mapConfig)), this.vehicleLayer = new c({
9
9
  id: "vehicleLayer"
10
10
  }), this.view.map.add(this.vehicleLayer), requestAnimationFrame(() => this.render());
11
11
  }
12
12
  addVehicles(i) {
13
13
  const e = i.map((t) => {
14
- const { crossId: l, ptcId: n } = t, s = Number(t.x), a = Number(t.y), r = Number(t.heading), o = `${l}-${n}`;
14
+ const { vehicleId: o, heading: n, localTimestamp: a } = t, r = Number(t.x), l = Number(t.y);
15
15
  this.historyPositionMap.set(o, [
16
- { pos: [s, a, 0], heading: r, time: Date.now() }
16
+ { pos: [r, l, 0], heading: n, time: a }
17
17
  ]);
18
- const c = new h({
18
+ const s = new h({
19
19
  geometry: {
20
20
  type: "point",
21
- x: s,
22
- y: a
21
+ x: r,
22
+ y: l
23
23
  },
24
24
  attributes: {
25
25
  ...t
26
26
  },
27
27
  symbol: this.createCIMSymbol(t)
28
28
  });
29
- return c.visible = !1, this.vehicleObjectMap.set(o, {
30
- graphic: c,
29
+ return s.visible = !1, this.vehicleObjectMap.set(o, {
30
+ graphic: s,
31
31
  data: t,
32
- waitForDelete: !1
33
- }), c;
32
+ waitForDelete: !1,
33
+ isMoving: !1
34
+ }), s;
34
35
  });
35
36
  this.vehicleLayer.addMany(e);
36
37
  }
37
38
  updateVehicles(i) {
38
39
  const e = [];
39
40
  i.forEach((t) => {
40
- const { crossId: l, ptcId: n } = t, s = Number(t.x), a = Number(t.y), r = `${l}-${n}`, o = this.vehicleObjectMap.get(r);
41
- o ? (o.data = t, this.historyPositionMap.get(
42
- r
41
+ const { vehicleId: o, heading: n, localTimestamp: a } = t, r = Number(t.x), l = Number(t.y), s = this.vehicleObjectMap.get(o);
42
+ s ? (s.data = t, this.historyPositionMap.get(
43
+ o
43
44
  ).push({
44
- pos: [s, a, 0],
45
- heading: t.heading,
46
- time: Date.now()
45
+ pos: [r, l, 0],
46
+ heading: n,
47
+ time: a
47
48
  })) : e.push(t);
48
49
  }), this.addVehicles(e);
49
50
  }
@@ -56,9 +57,6 @@ class u {
56
57
  clearVehicles() {
57
58
  this.vehicleLayer.removeAll(), this.vehicleObjectMap.clear(), this.historyPositionMap.clear();
58
59
  }
59
- updatePanelContent(i) {
60
- console.log(i);
61
- }
62
60
  /**
63
61
  * 设置地面车辆显示隐藏
64
62
  * @param visible
@@ -73,6 +71,15 @@ class u {
73
71
  toggleElevatedVehicle(i) {
74
72
  this.showElevatedVehicle = i;
75
73
  }
74
+ toggleTrafficInfo(i) {
75
+ i.name === "vehiclePlate" && (this.showVehiclePlate = i.visible);
76
+ }
77
+ updatePanelContent(i) {
78
+ console.log(i);
79
+ }
80
+ setInterpolate(i) {
81
+ this.needInterpolate = i;
82
+ }
76
83
  render() {
77
84
  this.vehicleObjectMap.forEach((i, e) => {
78
85
  this.updatePosition(e);
@@ -80,16 +87,16 @@ class u {
80
87
  }
81
88
  updatePosition(i) {
82
89
  const e = this.historyPositionMap.get(i), t = this.vehicleObjectMap.get(i);
83
- if (!e || !t || e.length <= 1)
90
+ if (!e || !t || !t.isMoving && e.length <= 2)
84
91
  return;
85
- (t.graphic.getAttribute("roadLayer") || "1") === "1" ? t.graphic.visible = this.showGroundVehicle : t.graphic.visible = this.showElevatedVehicle, t.segmentStartTime || (t.segmentStartTime = Date.now(), t.segmentTotalTime = e[1].time - e[0].time);
86
- const n = Date.now() - t.segmentStartTime, s = Math.min(
92
+ t.isMoving = !0, (t.graphic.getAttribute("roadLayer") || "1") === "1" ? t.graphic.visible = this.showGroundVehicle : t.graphic.visible = this.showElevatedVehicle, t.segmentStartTime || (t.segmentStartTime = Date.now(), t.segmentTotalTime = e[1].time - e[0].time);
93
+ const n = Date.now() - t.segmentStartTime, a = Math.min(
87
94
  1,
88
95
  n / t.segmentTotalTime
89
96
  );
90
- if (s === 1)
97
+ if (a === 1)
91
98
  if (e.shift(), e.length === 1) {
92
- t.waitForDelete ? (this.vehicleLayer.remove(t.graphic), this.vehicleObjectMap.delete(i), this.historyPositionMap.delete(i)) : (t.segmentStartTime = void 0, t.segmentTotalTime = void 0);
99
+ t.waitForDelete ? (this.vehicleLayer.remove(t.graphic), this.vehicleObjectMap.delete(i), this.historyPositionMap.delete(i)) : (t.segmentStartTime = void 0, t.segmentTotalTime = void 0, t.graphic.visible = !1, t.isMoving = !1);
93
100
  return;
94
101
  } else
95
102
  t.segmentStartTime = Date.now(), t.segmentTotalTime = e[1].time - e[0].time, (e[1].heading >= 270 && e[0].heading <= 90 || e[1].heading <= 90 && e[0].heading >= 270) && (e[1].heading > e[0].heading ? e[0].heading += 360 : e[1].heading += 360), t.graphic.geometry = {
@@ -98,12 +105,12 @@ class u {
98
105
  y: e[0].pos[1]
99
106
  };
100
107
  else {
101
- const a = e[0].pos[0] + (e[1].pos[0] - e[0].pos[0]) * s, r = e[0].pos[1] + (e[1].pos[1] - e[0].pos[1]) * s, o = e[0].heading + (e[1].heading - e[0].heading) * s;
108
+ const r = e[0].pos[0] + (e[1].pos[0] - e[0].pos[0]) * a, l = e[0].pos[1] + (e[1].pos[1] - e[0].pos[1]) * a, s = e[0].heading + (e[1].heading - e[0].heading) * a;
102
109
  t.graphic.geometry = {
103
110
  type: "point",
104
- x: a,
105
- y: r
106
- }, t.data.heading = o, t.graphic.symbol = this.createCIMSymbol(t.data);
111
+ x: r,
112
+ y: l
113
+ }, t.data.heading = s, t.graphic.symbol = this.createCIMSymbol(t.data);
107
114
  }
108
115
  }
109
116
  /**
@@ -1,5 +1,5 @@
1
- import { EVehiclePlateState, ITraceRendererInterface, IVehicleTrack } from '../../../types';
2
- export default class TraceExternalRenderer implements ITraceRendererInterface {
1
+ import { EVehiclePlateState, IToggleTrafficInfoParams, ITraceRendererInterface, IVehicleTrack } from '../../../types';
2
+ export default class TraceRendererWebgl implements ITraceRendererInterface {
3
3
  private renderer;
4
4
  private scene;
5
5
  private camera;
@@ -24,8 +24,12 @@ export default class TraceExternalRenderer implements ITraceRendererInterface {
24
24
  private currentSpriteContent;
25
25
  private historyPositionMap;
26
26
  private vehicleObjectMap;
27
+ private needInterpolate;
27
28
  constructor(view: __esri.SceneView);
29
+ setInterpolate(needInterpolate: boolean): void;
30
+ private context;
28
31
  setup(context: any): Promise<void>;
32
+ private lastRenderTime;
29
33
  render(context: any): Promise<void>;
30
34
  /**
31
35
  * 新增车辆
@@ -35,10 +39,13 @@ export default class TraceExternalRenderer implements ITraceRendererInterface {
35
39
  * 更新车辆
36
40
  * */
37
41
  updateVehicles(objects: IVehicleTrack[]): void;
42
+ private toRenderCoordinates;
38
43
  /**
39
44
  * 删除车辆
40
45
  * */
41
46
  deleteVehicles(idList: string[]): void;
47
+ private deleteVehicle;
48
+ toggleTrafficInfo(params: IToggleTrafficInfoParams): void;
42
49
  /**
43
50
  * 清除全部车辆
44
51
  * */