gisviewer-vue3-arcgis
Version:
在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:
119 lines (118 loc) • 4.24 kB
JavaScript
import u from "@arcgis/core/Graphic";
import l from "@arcgis/core/layers/FeatureLayer";
import * as a from "@turf/helpers";
import { convex as p, buffer as f } from "@turf/turf";
import n from "../common-utils.mjs";
import { districtDashLineLayerOptions as C, districtSolidLineLayerOptions as L } from "./layer-symbol.mjs";
class x {
constructor(t) {
this.style = "", this.view = t, this.districtControllerDashLayer = new l(
C
), this.districtControllerDashLayer.spatialReference = t.spatialReference, this.districtControllerSolidLayer = new l(
L
), this.districtControllerSolidLayer.spatialReference = t.spatialReference, this.districtControllerSolidLayer.popupEnabled = !0, this.view.map.addMany([
this.districtControllerDashLayer,
this.districtControllerSolidLayer
]);
}
/**
* 显示区控
* @param controllers 区控控制器数组
*/
async showDistricts(t) {
await this.clearDistricts();
const i = [];
for (let e = 0; e < t.length; e++) {
const r = t[e], s = r.getAllSignalCoordinates();
let o = null;
if (s.length >= 2)
if (s.length === 2)
o = a.lineString(s);
else {
const h = a.featureCollection(
s.map((y) => a.point(y))
);
o = p(h), o || (o = a.lineString(s));
}
else if (s.length === 1)
o = a.point(s[0]);
else
continue;
const d = f(o.geometry, 200, {
units: "meters"
}), c = new u({
geometry: {
type: "polyline",
paths: d.geometry.coordinates
},
attributes: {
ObjectID: e,
id: r.id,
name: r.name,
subDistrictCount: r.subDistrictCount,
signalCount: r.signalCount,
parentId: r.parentId,
parentName: r.parentName,
selected: this.style,
type: "district"
}
});
i.push(c);
}
await this.districtControllerDashLayer.applyEdits({
addFeatures: i
}), await this.districtControllerSolidLayer.applyEdits({
addFeatures: i
}), await n.viewGoto(this.view, i);
}
/**
* 清除区控图层
*/
async clearDistricts() {
let t = await this.districtControllerDashLayer.queryFeatures();
await this.districtControllerDashLayer.applyEdits({
deleteFeatures: t.features
}), this.districtControllerDashLayer.definitionExpression = "1=1", t = await this.districtControllerSolidLayer.queryFeatures(), await this.districtControllerSolidLayer.applyEdits({
deleteFeatures: t.features
}), this.districtControllerSolidLayer.definitionExpression = "1=1";
}
/**
* 设置区控图层可见性
* @param visible
*/
setVisible(t) {
this.districtControllerDashLayer.visible = t, this.districtControllerSolidLayer.visible = t;
}
/**
* 定位区控
* @param id
* @returns
*/
async locateDistrict(t) {
const i = this.districtControllerDashLayer.createQuery();
i.where = `id = '${t}'`, i.returnGeometry = !0, i.outFields = ["*"];
const e = await this.districtControllerDashLayer.queryFeatures(i);
return e.features.length > 0 ? (await n.viewGoto(this.view, e.features), { status: 0, message: "ok" }) : { status: 1, message: "未找到区控" };
}
/**
* 高亮区控, 其他区控隐藏
* @param id 区控ID
* @return 返回高亮区控的数量
*/
async highlightDistrict(t) {
const i = this.districtControllerDashLayer.definitionExpression;
this.districtControllerDashLayer.definitionExpression = `id = '${t}'`;
const e = await this.districtControllerDashLayer.queryFeatures(), r = e.features.length;
return r > 0 ? (this.districtControllerSolidLayer.definitionExpression = `id = '${t}'`, await n.viewGoto(this.view, e.features)) : this.districtControllerDashLayer.definitionExpression = i, r;
}
filter(t) {
const i = `id = '${t}'`;
this.districtControllerDashLayer.definitionExpression = i, this.districtControllerSolidLayer.definitionExpression = i;
}
resetFilter() {
this.districtControllerDashLayer.definitionExpression = "1=1", this.districtControllerSolidLayer.definitionExpression = "1=1";
}
}
export {
x as default
};