gisviewer-vue3-arcgis
Version:
在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:
141 lines (140 loc) • 5.09 kB
JavaScript
import c from "../../../stores/index.mjs";
import o from "./cross-renderer.mjs";
import r from "./district-controller.mjs";
import a from "./district-renderer.mjs";
import l from "./signal-renderer.mjs";
import d from "./subdistrict.mjs";
class f {
// private roadLines!: IRoadLine[];
constructor(t) {
this.view = t;
const s = c.useAppDataStore;
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);
}
/**
* 显示所有区控、子区、信号机
* @param params
* @returns
*/
async showSignalControlArea(t) {
await this.clearSignalControlArea(), this.districtRenderer.setVisible(!1), this.subDistrictRenderer.setVisible(!1), this.signalRenderer.setClusterVisible(!1), this.signalRenderer.setPointVisible(!1);
const s = [], e = [];
for (const i of t.areaList) {
const n = new r(
i,
t.style || ""
);
s.push(n), e.push(...n.subDistricts);
}
return this.districtRenderer.style = t.style || "", await this.districtRenderer.showDistricts(s), await this.subDistrictRenderer.showSubDistricts(e), this.crossRenderer.addCrosses(s), { status: 0, message: "ok" };
}
/**
* 显示单个区控
* @param params
*/
async showDistrict(t) {
this.setLayerVisibility({ id: "district", visible: !0 }), this.setLayerVisibility({ id: "subDistrict", visible: !0 });
const s = new r(
t.areaList,
t.style || ""
);
await this.districtRenderer.showDistricts([s]), await this.subDistrictRenderer.showSubDistricts(
s.subDistricts
), await this.subDistrictRenderer.showRoads({
id: s.id,
type: "district"
});
}
/**
* 显示单个子区
* @param params
*/
async showSubDistrict(t) {
this.setLayerVisibility({ id: "subDistrict", visible: !0 });
const s = new r(
t.areaList,
t.style || ""
);
await this.subDistrictRenderer.showSubDistricts([s]), await this.subDistrictRenderer.showRoads({
id: s.id,
type: "subDistrict"
});
}
/**
* 清空区控、子区、信号机
* @returns
*/
async clearSignalControlArea() {
return this.crossRenderer.clearCrosses(), await this.districtRenderer.clearDistricts(), await this.subDistrictRenderer.clearSubDistricts(), this.crossRenderer.clearCrosses(), { status: 0, message: "ok" };
}
/**
* 设置区控、子区、信号机图层可见性
* @param layerName
* @param visible
*/
setLayerVisibility(t) {
switch (t.visible === !1 && this.view.closePopup(), t.id) {
case "district":
this.districtRenderer.setVisible(t.visible);
break;
case "subDistrict":
this.subDistrictRenderer.setVisible(t.visible);
break;
case "signal":
t.visible === !1 ? this.crossRenderer.hideCrosses() : this.crossRenderer.showScatter();
break;
case "signalCluster":
t.visible === !1 ? this.crossRenderer.hideCrosses() : this.crossRenderer.showCluster();
break;
}
return { status: 0, message: "ok" };
}
/**
* 定位区控、子区、信号机
* @param params
* @returns
*/
async locateSignalControlArea(t) {
switch (t.type) {
case "district":
return await this.districtRenderer.locateDistrict(t.id);
case "subDistrict":
return await this.subDistrictRenderer.locateSubDistrict(t.id);
case "signal":
return await this.signalRenderer.locateSignal(t.id);
default:
return { status: 1, message: "未知类型" };
}
}
/**
* 高亮指定的区控、子区、信号机,其他隐藏
* @param params
* @returns
*/
async highlightSignalControlArea(t) {
switch (this.view.closePopup(), t.type) {
case "district":
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: "未找到区控" };
case "subDistrict": {
const { count: s, parentId: e } = await this.subDistrictRenderer.highlightSubDistrict(t);
return s > 0 ? (this.districtRenderer.filter(e), this.crossRenderer.filter(t), { status: 0, message: "ok" }) : { status: 1, message: "未找到子区" };
}
case "signal": {
const { districtId: s, subDistrictId: e, count: i } = await this.signalRenderer.highlightSignal(t.id);
return i > 0 ? (this.districtRenderer.filter(s), this.subDistrictRenderer.filter(t), { status: 0, message: "ok" }) : { status: 1, message: "未找到信号机" };
}
default:
return { status: 1, message: "未知类型" };
}
}
/**
* 重置高亮,恢复全图视角
* @returns
*/
async resetHighlight() {
return this.districtRenderer.resetFilter(), this.subDistrictRenderer.resetFilter(), this.crossRenderer.resetFilter(), { status: 0, message: "ok" };
}
}
export {
f as default
};