UNPKG

gisviewer-vue3-arcgis

Version:

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

195 lines (194 loc) 5.07 kB
import { Polygon as d } from "@arcgis/core/geometry"; import * as l from "@arcgis/core/geometry/geometryEngine"; import n from "@arcgis/core/Graphic"; import c from "@arcgis/core/layers/GraphicsLayer"; class u { constructor(e, s) { this.defaultPointSymbol = { type: "simple-marker", style: "circle", color: "yellow", size: 10 }, this.view = e, this.overlayLayer = new c({ ...s }), this.view.map.layers.add(this.overlayLayer); } addMask(e) { this.removeMask(); const s = e.maskColor || [100, 100, 100, 0.8], i = e.maskSize || 100; let r = new d({ rings: [e.geometry.rings[0]] }); const t = r.centroid, a = l.geodesicBuffer( t, i, "kilometers" ); let o = l.difference( a, r ); if (e.geometry.rings.length > 1) for (let y = 1; y < e.geometry.rings.length; y++) r = new d({ rings: [e.geometry.rings[y]] }), o = l.difference( o, r ); const h = new n({ geometry: o, symbol: { type: "simple-fill", color: s, outline: { style: "long-dash", color: "white" } }, attributes: { type: "mask" } }); this.overlayLayer.add(h); } removeMask() { const e = this.overlayLayer.graphics.find( (s) => s.getAttribute("type") === "mask" ); e && this.overlayLayer.remove(e); } /** * 添加覆盖物 * @param params */ addOverlays(e) { let s = 0, i = 0; for (const r of e.overlays) { r.properties ? (r.properties.type || (r.properties.type = e.type), r.properties.id || (r.properties.id = r.id)) : r.properties = { type: e.type, id: r.id }; const t = r.symbol || e.defaultSymbol || this.defaultPointSymbol; this.addOverlay( r, t, r.properties, r.visible ).message === "add" ? s++ : i++; } return { status: 0, message: `新增${s}, 更新${i}` }; } /** * 按type移除覆盖物 * @param types */ removeOverlaysByType(e) { const s = this.overlayLayer.graphics.filter((i) => { const r = i.getAttribute("type"); return e.includes(r); }); return this.overlayLayer.graphics.removeMany(s), { status: 0, message: `删除${s.length}` }; } /** * 按id移除覆盖物 * @param ids */ removeOverlaysById(e) { const s = this.overlayLayer.graphics.filter((i) => { const r = i.getAttribute("id"); return e.includes(r); }); return this.overlayLayer.graphics.removeMany(s), { status: 0, message: `删除${s.length}` }; } /** * 按id显示或隐藏覆盖物 * @param ids * @param isShow */ isShowOverlaysByIds(e, s) { this.overlayLayer.graphics.map((i) => { const r = i.getAttribute("id"); e.includes(r) ? i.visible = s : i.visible = !s; }); } /** * 显示全部覆盖物 * * @memberof Overlay */ showAllOverlays() { this.overlayLayer.graphics.forEach((e) => { e.visible = !0; }); } /** * 删除全部覆盖物 * @returns */ removeAllOverlays() { const e = this.overlayLayer.graphics.length; return this.overlayLayer.removeAll(), { status: 0, message: `删除${e}` }; } /** * 销毁 * * @memberof Overlay */ destroy() { this.view.map.remove(this.overlayLayer), this.overlayLayer.destroy(); } removeGraphics(e) { Array.isArray(e) || (e = [e]), this.overlayLayer.graphics.removeMany(e); } /** * 查找当前点击是否有覆盖物在当前图层 * * @param {((MouseEvent | __esri.MapViewScreenPoint) & * (__esri.SceneViewScreenPoint | MouseEvent))} event * @returns * @memberof Overlay */ async findGraphic(e) { var r; return (r = (await this.view.hitTest(e)).results) == null ? void 0 : r.filter( (t) => t.type === "graphic" && t.graphic.layer === this.overlayLayer ); } /** * 隐藏图层 * * @memberof Overlay */ hideLayer() { this.overlayLayer.visible = !1; } /** * 显示图层 * * @memberof Overlay */ showLayer() { this.overlayLayer.visible = !0; } /** * 添加点覆盖物 * @param overlay * @param symbol * @param properties */ addPoint(e, s, i, r) { let t, a = !0; return e.id && (t = this.overlayLayer.graphics.find( (o) => o.getAttribute("id") === e.id )), t ? t.visible = r ?? t.visible : (r = r ?? !0, t = new n({ visible: r }), this.overlayLayer.add(t), a = !1), t.geometry = e.geometry, t.symbol = s, t.attributes = i, { status: 0, message: a ? "add" : "update" }; } addOverlay(e, s, i, r) { let t, a = !0; return e.id && (t = this.overlayLayer.graphics.find( (o) => o.getAttribute("id") === e.id )), t ? t.visible = r ?? t.visible : (r = r ?? !0, t = new n({ visible: r }), this.overlayLayer.add(t), a = !1), t.geometry = e.geometry, t.symbol = s, t.attributes = i, { status: 0, message: a ? "add" : "update" }; } } export { u as default };