gisviewer-vue3-arcgis
Version:
在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:
303 lines (302 loc) • 14 kB
JavaScript
import { defineComponent as Bt, ref as G, reactive as It, onMounted as Mt, getCurrentInstance as Pt, onUnmounted as Vt, computed as zt, openBlock as I, createElementBlock as H, createElementVNode as w, withDirectives as _t, vShow as xt, Fragment as Gt, renderList as Ht, createBlock as Nt } from "vue";
import N, { registerStore as Et } from "../stores/index.mjs";
import Wt from "./utils/dbscan-cluster/index.mjs";
import Zt from "./utils/detect-gpu.mjs";
import Qt from "./utils/edpass-device-controller.mjs";
import E from "./utils/green-wave-band-controller/index.mjs";
import jt from "./utils/holo-flow/index.mjs";
import Jt from "./utils/holo-flow/signal-countdown-panel.vue.mjs";
import Ut from "./utils/map-initializer.mjs";
import W from "./utils/open-drive-renderer/index.mjs";
import Z from "./utils/overlay.mjs";
import Ft from "./utils/police-jurisdiction.mjs";
import $t from "./utils/queue-length.mjs";
import Q from "./utils/road-config-tool/index.mjs";
import qt from "./utils/signal-control-area/edit-area.mjs";
import M from "./utils/signal-control-area/signal-area-controller.mjs";
import Kt from "./utils/signal-control-area/signal-cross-controller.mjs";
import j from "./utils/signal-system/signal-system-controller.mjs";
import Xt from "./utils/traffic-flow.mjs";
const Yt = { class: "gis-viewer" }, Rt = { style: { position: "absolute", bottom: "80px", left: "10px", "z-index": "9999" } }, Cn = /* @__PURE__ */ Bt({
__name: "gis-map",
props: {
config: {},
assetsRoot: {}
},
emits: ["mapLoaded", "markerClick", "mapClick", "update:zoom"],
setup(J, { expose: U, emit: F }) {
const O = G(null);
let n, g, c, o, r, s, f, t, l, a, S, p, h, A, y, d;
const k = G(!1);
Et();
const P = N.useAppDataStore, V = It([]), z = (e) => Math.log2(591657527591555e-6 / e);
let C = null, _ = null;
const D = (e) => {
if (!Number.isFinite(e))
return;
const u = Math.round(e);
u !== _ && (_ = u, v("update:zoom", u));
};
Zt(), Mt(async () => {
if (!O.value)
return;
document.addEventListener("keydown", (m) => {
m.ctrlKey && m.key === "i" && (k.value = !k.value);
});
const e = Pt(), { $gisviewerAssetsRoot: u } = e.appContext.config.globalProperties, i = await (await fetch(x.config)).json();
i.assetsRoot = x.assetsRoot || u, P.mapConfig = i, g = new Ut(), P.mapInitializer = g, n = await g.initialize({
container: O.value,
mapConfig: i,
markerClickCallback: (m, T, B, Tt) => {
v("markerClick", m, T, B, Tt);
},
mapClickCallback: (m, T, B) => {
v("mapClick", m, T, B);
}
});
const b = n.zoom ?? (n.scale ? z(n.scale) : void 0);
typeof b == "number" && D(b);
const Lt = n.zoom !== void 0 ? n.watch("zoom", (m) => {
D(m);
}) : n.watch("scale", (m) => {
typeof m == "number" && m > 0 && D(z(m));
});
C = () => Lt.remove(), r = new jt(n, V), await r.init(), v("mapLoaded");
}), Vt(() => {
a == null || a.clearSignalControlArea(), t == null || t.clearOpenDrive(), r.clearHoloTrace(), r.clearHoloSignal(), o == null || o.disconnectTrafficFlow(), C == null || C(), C = null;
});
const $ = zt(() => n), q = () => {
const e = N.useAppDataStore;
e.saveTrackLog = !0;
}, K = () => {
r.downloadTrackLog();
}, X = () => {
L("vehicleId");
}, Y = () => {
L("plateNumber");
}, R = async (e) => await g.setMapCenter(e), ee = async (e) => await g.setMapCamera(e), te = (e) => g.setMapZoom(e), ne = async (e) => await g.lookAt(e), ae = (e) => g.setLayerVisibility(e), se = (e, u) => g.requestCoordinateTransform(e, u), re = (e) => {
g.cancelCoordinateTransform(e);
}, oe = (e) => {
g.setMapZoomRange(e);
}, ie = (e) => (c || (c = new Q(n)), c.showLaneNumber(e)), ce = () => {
c == null || c.clearLaneNumber();
}, le = async (e) => (c || (c = new Q(n)), await c.initializeSearch(e)), ue = async () => c == null ? void 0 : c.calCrossIndicatorArea(), me = async () => {
}, ge = async (e, u) => {
o || (o = new Xt(n)), o.connectTrafficFlow(e, u);
}, pe = () => {
o == null || o.disconnectTrafficFlow();
}, de = async (e) => {
r.handleVehicleTraceData(e);
}, Se = () => {
r.clearHoloTrace();
}, fe = (e) => {
r.setInterpolate(e);
}, ye = async (e) => {
await r.handleSignalData(e);
}, we = async (e) => {
await r.initializeLampGroup(e);
}, he = (e) => {
r.handleUniSignalData(e);
}, Ce = () => {
r.clearHoloSignal();
}, ve = (e) => {
o == null || o.toggleTrafficInfo(e), r == null || r.toggleTrafficInfo(e);
}, be = (e) => {
r == null || r.togglePause(e);
}, Oe = (e) => {
o == null || o.toggleTrafficObject(e), r == null || r.toggleTrafficObject(e);
}, L = (e) => {
r == null || r.updatePanelContent(e);
}, Ae = async (e) => (s || (s = new Z(n)), s.addOverlays(e)), ke = async (e) => s ? await s.flashOverlay(e) : { status: -1, message: "未加载覆盖物工具" }, De = async (e) => s ? s.stopFlash(e) : { status: -1, message: "未加载覆盖物工具" }, Le = async (e) => (y || (y = new Wt(n)), y.addClusterPoints(e)), Te = () => {
y == null || y.removeAllClusterPoints();
}, Be = (e) => (s || (s = new Z(n)), s.addMask(e)), Ie = () => {
s == null || s.removeMask();
}, Me = (e) => s == null ? void 0 : s.removeOverlaysByType(e), Pe = (e) => s == null ? void 0 : s.removeOverlaysById(e), Ve = () => s == null ? void 0 : s.removeAllOverlays(), ze = () => {
s == null || s.showAllOverlays();
}, _e = (e) => {
f || (f = new $t(n)), f.updateQueueLength(e);
}, xe = () => {
f == null || f.removeQueueLength();
}, Ge = async (e, u) => (t || (t = new W(n)), await t.showOpenDriveFromServer(e, u)), He = async (e) => (t || (t = new W(n)), await t.clearOpenDrive(), await t.showOpenDriveFromFile(e)), Ne = (e) => t ? t.setOpendriveVisibility(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, Ee = async () => await (t == null ? void 0 : t.clearOpenDrive()), We = async (e) => t ? await (t == null ? void 0 : t.findSumo(e)) : {
status: -1,
message: "未加载OpenDrive地图"
}, Ze = async (e) => t ? t.selectSumo(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, Qe = async (e) => t ? t.unselectSumo(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, je = async (e) => t ? t.selectComputable(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, Je = async (e) => t ? await t.geometrySearch(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, Ue = async (e) => t ? await t.getSumoInfo(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, Fe = async (e) => t ? await (t == null ? void 0 : t.splitLane(e)) : {
status: -1,
message: "未加载OpenDrive地图"
}, $e = async () => t ? t == null ? void 0 : t.clearSplitLane() : {
status: -1,
message: "未加载OpenDrive地图"
}, qe = async (e) => t ? t == null ? void 0 : t.blockLane(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, Ke = (e) => t ? t == null ? void 0 : t.clearBlockLane(e) : {
status: -1,
message: "未加载OpenDrive地图"
}, Xe = async (e) => (a || (a = new M(n)), await a.showSignalControlArea(e)), Ye = async (e) => (a || (a = new M(n)), await a.showDistrict(e)), Re = async (e) => (a || (a = new M(n)), await a.showSubDistrict(e)), et = async () => await (a == null ? void 0 : a.clearSignalControlArea()), tt = (e) => a == null ? void 0 : a.setLayerVisibility(e), nt = async (e) => a ? await (a == null ? void 0 : a.locateSignalControlArea(e)) : { status: -1, message: "未加载信号控制区" }, at = async (e) => a ? await a.highlightSignalControlArea(e) : { status: -1, message: "未加载信号控制区" }, st = () => a ? a.resetHighlight() : { status: -1, message: "未加载信号控制区" }, rt = (e) => (l || (l = new qt(n)), l.showSubSignalControlArea(e)), ot = (e) => l ? l.editSubSignalControlArea(e) : { status: -1, message: "未加载信号控制区" }, it = () => l ? l.stopEditSubSignalControlArea() : { status: -1, message: "未加载信号控制区" }, ct = (e) => l ? l.selectSubSignalControlAreaCross(e) : { status: -1, message: "未加载信号控制区" }, lt = (e) => l ? l.unselectSubSignalControlAreaCross(e) : { status: -1, message: "未加载信号控制区" }, ut = (e) => {
if (!l)
return { status: -1, message: "未加载信号控制区" };
}, mt = (e) => (S || (S = new Kt(n)), S.showSignalCross(e)), gt = () => S ? S.clearSignalCross() : { status: -1, message: "未加载信号路口" }, pt = (e) => S ? S.changeShowName(e) : { status: -1, message: "未加载信号路口" }, dt = (e) => (d || (d = new j(n)), d.showSignalSystems(e)), St = (e) => (d || (d = new j(n)), d.showSubSignalSystems(e)), ft = (e) => d ? d.removeSubSignalSystems(e) : { status: -1, message: "未加载信号系统" }, yt = (e) => d ? d.removeSignalSystems(e) : { status: -1, message: "未加载信号系统" }, wt = (e) => ({
status: -1,
message: "未实现该功能"
}), ht = () => ({
status: -1,
message: "未实现该功能"
}), Ct = (e) => (p || (p = new E(n)), p.addGreenWaveBand(e)), vt = () => {
if (!p)
return { status: -1, message: "未加载绿波带" };
p.stopAddGreenWaveBand();
}, bt = async (e) => (p || (p = new E(n)), await p.showGreenWaveBand(e)), Ot = (e) => {
if (!p)
return { status: -1, message: "未加载绿波带" };
p.removeGreenWaveBand(e);
}, At = async (e) => (h || (h = new Ft(n)), await h.showJurisdiction(e)), kt = () => {
if (!h)
return { status: -1, message: "未加载警务管辖区" };
h.clearJurisdiction();
}, Dt = async (e) => (A || (A = new Qt(n)), await A.setEdpassLayerVisibility(e)), x = J, v = F;
return U({
mapViewer: $,
setLayerVisibility: ae,
setMapCenter: R,
lookAt: ne,
setMapCamera: ee,
setMapZoom: te,
setMapZoomRange: oe,
requestCoordinateTransform: se,
cancelCoordinateTransform: re,
addOverlays: Ae,
flashOverlay: ke,
stopFlashOverlay: De,
addClusterPoints: Le,
removeAllClusterPoints: Te,
addMask: Be,
removeMask: Ie,
showAllOverlays: ze,
removeOverlaysByType: Me,
removeOverlaysById: Pe,
removeAllOverlays: Ve,
showLaneNumber: ie,
clearLaneNumber: ce,
initializeAreaTool: le,
calCrossIndicatorArea: ue,
calRoadIndicatorArea: me,
connectCarFlow: ge,
disconnectCarFlow: pe,
handleHoloVehicleTraceData: de,
clearHoloTrace: Se,
initializeLampGroup: we,
handleUniSignalData: he,
handleHoloSignalData: ye,
clearHoloSignal: Ce,
setInterpolate: fe,
toggleTrafficInfo: ve,
toggleTrafficObject: Oe,
toggleVehicleInfo: L,
togglePause: be,
updateQueueLength: _e,
removeQueueLength: xe,
showOpenDriveFromServer: Ge,
showOpenDriveFromFile: He,
clearOpenDrive: Ee,
setOpendriveVisibility: Ne,
geometrySearchInOpenDrive: Je,
findSumoInOpenDrive: We,
selectSumoInOpenDrive: Ze,
unselectSumoInOpenDrive: Qe,
selectComputableInOpenDrive: je,
getSumoInfo: Ue,
splitOpenDriveLane: Fe,
clearSplitOpenDriveLane: $e,
blockOpenDriveLane: qe,
clearBlockOpenDriveLane: Ke,
showSignalControlArea: Xe,
showDistrictArea: Ye,
showSubDistrictArea: Re,
clearSignalControlArea: et,
setSignalControlAreaVisibility: tt,
locateSignalControlArea: nt,
highlightSignalControlArea: at,
resetHighlightSignalControlArea: st,
showSubSignalControlArea: rt,
editSubSignalControlArea: ot,
stopEditSubSignalControlArea: it,
selectSubSignalControlAreaCross: ct,
unselectSubSignalControlAreaCross: lt,
changeSubSignalControlAreaBorderVisibility: ut,
showSignalCross: mt,
clearSignalCross: gt,
changeSignalCrossShowName: pt,
showSignalSystem: dt,
showSubSignalSystem: St,
removeSubSignalSystem: ft,
removeSignalSystem: yt,
highlightSignalSystem: wt,
resetHighlightSignalSystem: ht,
addGreenWaveBand: Ct,
stopAddGreenWaveBand: vt,
showGreenWaveBand: bt,
removeGreenWaveBand: Ot,
showPoliceArea: At,
clearPoliceArea: kt,
setEdpassLayerVisibility: Dt
}), (e, u) => (I(), H("div", Yt, [
w("div", {
class: "gis-viewer-main",
ref_key: "mapContainer",
ref: O
}, [
_t(w("div", Rt, [
w("button", {
style: { "margin-right": "10px" },
onClick: q
}, " 开始记录 "),
w("button", {
style: { "margin-right": "10px" },
onClick: K
}, " 下载日志 "),
w("button", {
style: { "margin-right": "10px" },
onClick: X
}, " 显示车辆id "),
w("button", { onClick: Y }, "显示车辆号牌")
], 512), [
[xt, k.value]
])
], 512),
(I(!0), H(Gt, null, Ht(V, (i, b) => (I(), Nt(Jt, {
key: b,
"display-mode": i.displayMode,
flash: i.flash,
"road-id": i.crossId,
"cross-id": i.roadId,
"map-point": i.mapPoint,
"stop-line": i.stopLine,
position: i.position,
rotation: i.rotation,
scale: i.scale,
"lamp-status": i.lampStatus
}, null, 8, ["display-mode", "flash", "road-id", "cross-id", "map-point", "stop-line", "position", "rotation", "scale", "lamp-status"]))), 128))
]));
}
});
export {
Cn as default
};