gisviewer-vue3-arcgis 1.0.101 → 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 (30) 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 +52 -49
  3. package/es/src/gis-map/index.d.ts +1 -0
  4. package/es/src/gis-map/utils/holo-flow/index.d.ts +1 -0
  5. package/es/src/gis-map/utils/holo-flow/index.mjs +4 -0
  6. package/es/src/gis-map/utils/holo-flow/trace-holo-flow.d.ts +1 -0
  7. package/es/src/gis-map/utils/holo-flow/trace-holo-flow.mjs +44 -44
  8. package/{lib/src/gis-map/utils/holo-flow/trace-layer-renderer.d.ts → es/src/gis-map/utils/holo-flow/trace-renderer-layer.d.ts} +4 -2
  9. package/es/src/gis-map/utils/holo-flow/{trace-layer-renderer.mjs → trace-renderer-layer.mjs} +35 -31
  10. package/{lib/src/gis-map/utils/holo-flow/trace-external-renderer.d.ts → es/src/gis-map/utils/holo-flow/trace-renderer-webgl.d.ts} +7 -1
  11. package/es/src/gis-map/utils/holo-flow/trace-renderer-webgl.mjs +343 -0
  12. package/es/src/types/index.d.ts +2 -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 +1 -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 +1 -0
  19. package/lib/src/gis-map/utils/holo-flow/trace-holo-flow.js +1 -1
  20. package/{es/src/gis-map/utils/holo-flow/trace-layer-renderer.d.ts → lib/src/gis-map/utils/holo-flow/trace-renderer-layer.d.ts} +4 -2
  21. package/lib/src/gis-map/utils/holo-flow/trace-renderer-layer.js +1 -0
  22. package/{es/src/gis-map/utils/holo-flow/trace-external-renderer.d.ts → lib/src/gis-map/utils/holo-flow/trace-renderer-webgl.d.ts} +7 -1
  23. package/lib/src/gis-map/utils/holo-flow/trace-renderer-webgl.js +1 -0
  24. package/lib/src/types/index.d.ts +2 -0
  25. package/package.json +1 -1
  26. package/es/src/gis-map/utils/GreenWaveline.d.ts +0 -68
  27. package/es/src/gis-map/utils/holo-flow/trace-external-renderer.mjs +0 -322
  28. package/lib/src/gis-map/utils/GreenWaveline.d.ts +0 -68
  29. package/lib/src/gis-map/utils/holo-flow/trace-external-renderer.js +0 -1
  30. 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 ne, onMounted as ae, 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";
6
- import fe from "./utils/open-drive-renderer/index.mjs";
7
- import ue from "./utils/overlay.mjs";
8
- import de from "./utils/queue-length.mjs";
5
+ import fe from "./utils/map-initializer.mjs";
6
+ import ue from "./utils/open-drive-renderer/index.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: {},
@@ -16,25 +16,25 @@ const ye = { class: "gis-viewer" }, Le = /* @__PURE__ */ te({
16
16
  },
17
17
  emits: ["mapLoaded", "markerClick", "mapClick"],
18
18
  setup(w, { expose: O, emit: T }) {
19
- const m = ne(null);
19
+ const m = ae(null);
20
20
  let o, s, a, r, t, n, i, l;
21
- me(), ae(async () => {
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: (f, u, d, ee) => {
30
- p("markerClick", f, u, d, ee);
29
+ markerClickCallback: (f, u, d, te) => {
30
+ p("markerClick", f, u, d, te);
31
31
  },
32
32
  mapClickCallback: (f, u, d) => {
33
33
  p("mapClick", f, u, d);
34
34
  }
35
35
  }), t = new g(o), p("mapLoaded");
36
36
  });
37
- const k = oe(() => o), h = async (e) => await s.setMapCenter(e), I = async (e) => await s.setMapCamera(e), b = async (e) => await s.lookAt(e), A = (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);
@@ -42,48 +42,50 @@ const ye = { class: "gis-viewer" }, Le = /* @__PURE__ */ te({
42
42
  a == null || a.clearLaneNumber();
43
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), t == null || t.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) => (n || (n = new ue(o)), n.addOverlays(e)), $ = (e) => n == null ? void 0 : n.removeOverlaysByType(e), G = (e) => n == null ? void 0 : n.removeOverlaysById(e), J = () => n == null ? void 0 : n.removeAllOverlays(), K = () => {
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 = () => {
63
65
  n == null || n.showAllOverlays();
64
- }, U = (e) => {
65
- i || (i = new de(o)), i.updateQueueLength(e);
66
- }, W = () => {
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) => {
69
- l || (l = new fe(o)), await l.showOpenDrive(e, c);
70
- }, Y = async () => {
70
+ }, Y = async (e, c) => {
71
+ l || (l = new ue(o)), await l.showOpenDrive(e, c);
72
+ }, F = async () => {
71
73
  await (l == null ? void 0 : l.hideOpenDrive());
72
74
  }, y = w, p = T;
73
75
  return O({
74
76
  mapViewer: k,
75
77
  setLayerVisibility: A,
76
- setMapCenter: h,
77
- lookAt: b,
78
- setMapCamera: I,
78
+ setMapCenter: I,
79
+ lookAt: h,
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;
@@ -15,4 +15,5 @@ export default class Index {
15
15
  updatePanelContent(contentType: string): void;
16
16
  handleSignalData(data: any): Promise<void>;
17
17
  clearHoloSignal(): void;
18
+ setInterpolate(enable: boolean): void;
18
19
  }
@@ -59,6 +59,10 @@ class h {
59
59
  var e;
60
60
  (e = this.signalHoloFlow) == null || e.clearSignal();
61
61
  }
62
+ setInterpolate(e) {
63
+ var o;
64
+ (o = this.traceHoloFlow) == null || o.setInterpolate(e);
65
+ }
62
66
  }
63
67
  export {
64
68
  h as default
@@ -21,5 +21,6 @@ export default class TraceHoloFlow {
21
21
  updatePanelContent(contentType: EVehiclePlateState): void;
22
22
  toggleGroundVehicle(visible: boolean): void;
23
23
  toggleElevatedVehicle(visible: boolean): void;
24
+ setInterpolate(enable: boolean): void;
24
25
  private buildVehicleTrackData;
25
26
  }
@@ -1,45 +1,41 @@
1
- import * as f from "@arcgis/core/views/3d/externalRenderers";
2
- import u from "../../stores/index.mjs";
3
- import g from "./trace-external-renderer.mjs";
4
- import T 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 = u.useAppDataStore;
9
- this.mapConfig = JSON.parse(JSON.stringify(i.mapConfig)), e.type === "3d" ? (this.traceRenderer = new g(e), f.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
- )) : this.traceRenderer = new T(e);
12
+ )) : this.traceRenderer = new g(e);
13
13
  }
14
14
  /**
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
  }
45
41
  /**
@@ -64,27 +60,31 @@ class N {
64
60
  toggleElevatedVehicle(e) {
65
61
  this.traceRenderer.toggleElevatedVehicle(e);
66
62
  }
67
- buildVehicleTrackData(e, i) {
68
- 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";
69
- 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))
70
69
  return {
71
- ptcId: n,
72
- crossId: i,
73
- x: p,
74
- y: s,
75
- ptcType: o,
76
- vehicleType: a,
77
- 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,
78
78
  vehicleColor: h,
79
- showName: r && r !== "" && r !== "0" && r !== "000000" ? r : "",
80
- plateNo: r,
81
- plateColor: c,
82
- timestamp: t,
83
- localTimestamp: d,
84
- 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
85
85
  };
86
86
  }
87
87
  }
88
88
  export {
89
- N as default
89
+ y as default
90
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
@@ -28,6 +28,8 @@ export default class TraceLayerRenderer implements ITraceRendererInterface {
28
28
  name: string;
29
29
  visible: boolean;
30
30
  }): void;
31
+ updatePanelContent(contentType: EVehiclePlateState): void;
32
+ setInterpolate(needInterpolate: boolean): void;
31
33
  private render;
32
34
  private updatePosition;
33
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, o = Number(t.x), a = Number(t.y), r = Number(t.heading), s = `${l}-${n}`;
15
- this.historyPositionMap.set(s, [
16
- { pos: [o, a, 0], heading: r, time: Date.now() }
14
+ const { vehicleId: o, heading: n, localTimestamp: a } = t, r = Number(t.x), l = Number(t.y);
15
+ this.historyPositionMap.set(o, [
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: o,
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(s, {
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, o = Number(t.x), a = Number(t.y), r = `${l}-${n}`, s = this.vehicleObjectMap.get(r);
41
+ const { vehicleId: o, heading: n, localTimestamp: a } = t, r = Number(t.x), l = Number(t.y), s = this.vehicleObjectMap.get(o);
41
42
  s ? (s.data = t, this.historyPositionMap.get(
42
- r
43
+ o
43
44
  ).push({
44
- pos: [o, 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
@@ -76,6 +74,12 @@ class u {
76
74
  toggleTrafficInfo(i) {
77
75
  i.name === "vehiclePlate" && (this.showVehiclePlate = i.visible);
78
76
  }
77
+ updatePanelContent(i) {
78
+ console.log(i);
79
+ }
80
+ setInterpolate(i) {
81
+ this.needInterpolate = i;
82
+ }
79
83
  render() {
80
84
  this.vehicleObjectMap.forEach((i, e) => {
81
85
  this.updatePosition(e);
@@ -83,16 +87,16 @@ class u {
83
87
  }
84
88
  updatePosition(i) {
85
89
  const e = this.historyPositionMap.get(i), t = this.vehicleObjectMap.get(i);
86
- if (!e || !t || e.length <= 1)
90
+ if (!e || !t || !t.isMoving && e.length <= 2)
87
91
  return;
88
- (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);
89
- const n = Date.now() - t.segmentStartTime, o = 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(
90
94
  1,
91
95
  n / t.segmentTotalTime
92
96
  );
93
- if (o === 1)
97
+ if (a === 1)
94
98
  if (e.shift(), e.length === 1) {
95
- 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);
96
100
  return;
97
101
  } else
98
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 = {
@@ -101,11 +105,11 @@ class u {
101
105
  y: e[0].pos[1]
102
106
  };
103
107
  else {
104
- const a = e[0].pos[0] + (e[1].pos[0] - e[0].pos[0]) * o, r = e[0].pos[1] + (e[1].pos[1] - e[0].pos[1]) * o, s = e[0].heading + (e[1].heading - e[0].heading) * o;
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;
105
109
  t.graphic.geometry = {
106
110
  type: "point",
107
- x: a,
108
- y: r
111
+ x: r,
112
+ y: l
109
113
  }, t.data.heading = s, t.graphic.symbol = this.createCIMSymbol(t.data);
110
114
  }
111
115
  }
@@ -1,5 +1,5 @@
1
1
  import { EVehiclePlateState, IToggleTrafficInfoParams, ITraceRendererInterface, IVehicleTrack } from '../../../types';
2
- export default class TraceExternalRenderer implements ITraceRendererInterface {
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,12 @@ 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;
42
48
  toggleTrafficInfo(params: IToggleTrafficInfoParams): void;
43
49
  /**
44
50
  * 清除全部车辆