UNPKG

gisviewer-vue3-arcgis

Version:

在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:

119 lines (118 loc) 4.24 kB
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 };