gisviewer-vue3-arcgis
Version:
在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:
107 lines (106 loc) • 3.49 kB
JavaScript
import * as g from "@arcgis/core/views/3d/externalRenderers";
import f from "./trace-renderer-external.mjs";
import R from "./trace-renderer-layer.mjs";
class V {
constructor(e) {
this.nullDataCount = 0, this.clearTraceTimer = null, e.type === "3d" ? (this.traceRenderer = new f(e), g.add(
e,
this.traceRenderer
)) : this.traceRenderer = new R(e);
}
async init() {
await this.traceRenderer.init();
}
downloadLog() {
const e = this.traceRenderer.getLog().map((o) => o.join(",")).join(`
`).replace(/null/g, ""), n = new Blob([e], { type: "text/csv;charset=utf-8;" }), i = URL.createObjectURL(n), r = document.createElement("a");
r.setAttribute("href", i), r.setAttribute("download", "trace-log.csv"), r.style.visibility = "hidden", document.body.appendChild(r), r.click(), document.body.removeChild(r);
}
/**
* 处理全息流轨迹数据
* */
async handleVehicleTraceData(e) {
this.clearTraceTimer || (this.clearTraceTimer = setInterval(() => {
this.nullDataCount++, this.nullDataCount >= 5 && (console.log("clear trace data"), this.clearTrace(), this.nullDataCount = 0);
}, 1e3)), this.nullDataCount = 0;
const { newVehList: n, updateVehList: i, deleteVehList: r, jgsj: o } = e, l = e.crossId || "", a = [], s = [];
if (n && n.length > 0) {
for (const c of n) {
c.localTimestamp || (c.localTimestamp = o || Date.now());
const t = this.buildVehicleTrackData(c, l);
t && a.push(t);
}
await this.traceRenderer.addVehicles(a);
}
if (i && i.length > 0) {
for (const c of i) {
const t = this.buildVehicleTrackData(c, l);
t && s.push(t);
}
await this.traceRenderer.updateVehicles(s);
}
if (r && r.length > 0) {
const c = r.map(
(t) => l + "-" + (t.ptcId || t.vehno || t.vehNo)
);
this.traceRenderer.deleteVehicles(c);
}
}
/**
* 切换交通信息可见性
* @param params
*/
toggleTrafficInfo(e) {
this.traceRenderer.toggleTrafficInfo(e);
}
/**
* 清除轨迹流
* */
clearTrace() {
this.clearTraceTimer && (clearInterval(this.clearTraceTimer), this.clearTraceTimer = null), this.traceRenderer.clearVehicles();
}
/**
* 切换暂停
* */
togglePause(e) {
this.traceRenderer.togglePause(e);
}
updatePanelContent(e) {
this.traceRenderer.updatePanelContent(e);
}
toggleGroundVehicle(e) {
this.traceRenderer.toggleGroundVehicle(e);
}
toggleElevatedVehicle(e) {
this.traceRenderer.toggleElevatedVehicle(e);
}
setInterpolate(e) {
this.traceRenderer.setInterpolate(e);
}
buildVehicleTrackData(e, n) {
const i = e.longitude, r = e.latitude, o = e.ptcId, l = Number(e.ptcType), a = e.heading, s = Number(e.vehicleType), c = Number(e.vehicleColor), t = e.plateNo || e.plateno, h = Number(e.plateColor), d = e.timestamp, u = e.localTimestamp, p = e.roadLayer ? String(e.roadLayer) : "1", m = e.step, T = e.speed;
if (!(l < 0 || l > 8))
return {
ptcId: o,
crossId: n,
vehicleId: n + "-" + o,
x: i,
y: r,
ptcType: l,
vehicleType: s,
heading: l === 2 ? -a : a,
vehicleColor: c,
showName: t && t !== "" && t !== "0" && t !== "000000" ? t : "",
plateNo: t,
plateColor: h,
timestamp: d,
localTimestamp: u,
roadLayer: p,
step: m,
speed: T
};
}
}
export {
V as default
};