gisviewer-vue3-arcgis
Version:
在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:
2 lines (1 loc) • 7.42 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("@turf/turf"),g=require("ol/Feature"),S=require("ol/format/GeoJSON"),y=require("ol/geom"),v=require("ol/layer/Vector"),p=require("ol/source/Vector"),m=require("ol/style/Fill"),d=require("ol/style/Style"),b=require("../style/line-style.js"),F=require("../style/point-style.js"),w=require("../style/polygon-style.js");function O(u){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(u){for(const s in u)if(s!=="default"){const i=Object.getOwnPropertyDescriptor(u,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:()=>u[s]})}}return e.default=u,Object.freeze(e)}const c=O(f);class _{constructor(e,s){this.hiddenStyle=new d({}),this.flashingMap=new Map,this.defaultPointSymbol={type:"simple-marker",style:"circle",color:"yellow",size:10},this.map=e,this.vectorSource=new p,this.overlayLayer=new v({source:this.vectorSource,properties:{id:(s==null?void 0:s.id)??"overlay-layer"}}),this.map.addLayer(this.overlayLayer)}addOverlays(e){let s=0,i=0;e.defaultVisible=e.defaultVisible??!0,e.zIndex!==void 0&&this.overlayLayer.setZIndex(e.zIndex);for(const t of e.overlays){t.properties?(t.properties.type||(t.properties.type=e.type),t.properties.id||(t.properties.id=t.id)):t.properties={type:e.type,id:t.id};const r=t.symbol||e.defaultSymbol||this.defaultPointSymbol,l=t.visible==null?e.defaultVisible:t.visible;this.addOverlay(t,r,t.properties,l).message==="add"?s++:i++}return e.needZoom===!0&&this.map.getView().fit(this.vectorSource.getExtent(),{padding:[50,50,50,50]}),{status:0,message:`新增${s}, 更新${i}`}}addOverlay(e,s,i,t){let r,l=!0;e.id&&(r=this.vectorSource.getFeatures().find(n=>n.get("id")===e.id));const o=this.createGeometry(e.geometry);if(!o)return{status:-1,message:"不支持的几何类型"};r?(r.setGeometry(o),l=!1):(r=new g({geometry:o}),this.vectorSource.addFeature(r),l=!0);const a=this.getStyle(e.geometry.type,s,i);return a&&r.setStyle(a),r.setProperties(i),t||r.setStyle(this.hiddenStyle),r.set("_visible",t),r.set("_originalStyle",a),{status:0,message:l?"add":"update"}}createGeometry(e){var i;switch((i=e.type)==null?void 0:i.toLowerCase()){case"point":return new y.Point([e.x,e.y]);case"line":case"polyline":if(e.paths&&e.paths.length>0){const t=e.paths[0];return Array.isArray(t)&&Array.isArray(t[0])?e.paths.length===1?new y.LineString(e.paths[0]):new y.MultiLineString(e.paths):new y.LineString(e.paths)}return null;case"polygon":return e.rings&&e.rings.length>0?new y.Polygon(e.rings):null;default:return null}}getStyle(e,s,i){switch(e==null?void 0:e.toLowerCase()){case"point":return F.getPointStyle(s,i);case"line":case"polyline":return b.getLineStyle(s,i);case"polygon":return w.getPolygonStyle(s,i);default:return null}}removeOverlaysByType(e){const i=this.vectorSource.getFeatures().filter(t=>{const r=t.get("type");return Array.isArray(e)?e.includes(r):r===e});return i.forEach(t=>{this.stopFlash({id:t.get("id")}),this.vectorSource.removeFeature(t)}),{status:0,message:`删除${i.length}`}}removeOverlaysById(e){const i=this.vectorSource.getFeatures().filter(t=>{const r=t.get("id");return Array.isArray(e)?e.includes(r):r===e});return i.forEach(t=>{this.stopFlash({id:t.get("id")}),this.vectorSource.removeFeature(t)}),{status:0,message:`删除${i.length}`}}isShowOverlaysByIds(e,s){this.vectorSource.getFeatures().forEach(i=>{const t=i.get("id");if(e.includes(t)){if(s){const r=i.get("_originalStyle");r&&i.setStyle(r)}else i.setStyle(this.hiddenStyle);i.set("_visible",s)}else{if(s)i.setStyle(this.hiddenStyle);else{const r=i.get("_originalStyle");r&&i.setStyle(r)}i.set("_visible",!s)}})}showAllOverlays(){this.vectorSource.getFeatures().forEach(e=>{const s=e.get("_originalStyle");s&&e.setStyle(s),e.set("_visible",!0)})}removeAllOverlays(){const e=this.vectorSource.getFeatures().length;return this.stopFlash(),this.vectorSource.clear(),{status:0,message:`删除${e}`}}updateOverlaysSymbol(e,s){let i=0;return this.vectorSource.getFeatures().forEach(t=>{const r=t.get("id");if(e.includes(r)){const l=t.getGeometry();if(l){const o=this.getGeometryType(l),a=t.getProperties(),n=this.getStyle(o,s,a);n&&(t.setStyle(n),t.set("_originalStyle",n),i++)}}}),{status:0,message:`更新${i}个覆盖物符号`}}updateOverlaysSymbolByType(e,s){let i=0;return this.vectorSource.getFeatures().forEach(t=>{const r=t.get("type");if(e.includes(r)){const l=t.getGeometry();if(l){const o=this.getGeometryType(l),a=t.getProperties(),n=this.getStyle(o,s,a);n&&(t.setStyle(n),t.set("_originalStyle",n),i++)}}}),{status:0,message:`更新${i}个覆盖物符号`}}getGeometryType(e){return e instanceof y.Point?"point":e instanceof y.LineString?"polyline":e instanceof y.Polygon?"polygon":""}getOverlayById(e){return this.vectorSource.getFeatures().find(s=>s.get("id")===e)}getOverlaysByType(e){return this.vectorSource.getFeatures().filter(s=>s.get("type")===e)}hideLayer(){this.overlayLayer.setVisible(!1)}showLayer(){this.overlayLayer.setVisible(!0)}findFeaturesAtPixel(e){const s=[];return this.map.forEachFeatureAtPixel(e,(i,t)=>{t===this.overlayLayer&&i instanceof g&&s.push(i)},{layerFilter:i=>i===this.overlayLayer}),s}destroy(){this.vectorSource.clear(),this.map.removeLayer(this.overlayLayer),this.overlayLayer.dispose()}addMask(e){this.removeMask();const s=e.maskColor||[100,100,100,.8],i=e.maskSize||200;let t=c.polygon([e.geometry.rings[0]]);const r=c.buffer(t,i,{units:"kilometers"});let l=c.difference(r,t);if(e.geometry.rings.length>1)for(let o=1;o<e.geometry.rings.length;o++)t=c.polygon([e.geometry.rings[o]]),l&&(l=c.difference(l,t));if(l)try{let o;l.geometry.type==="MultiPolygon"?o=c.multiPolygon(l.geometry.coordinates):o=c.polygon(l.geometry.coordinates);const a=new S().readFeature(o);if(a.setProperties({type:"mask"}),a.setStyle(new d({fill:new m({color:s})})),this.vectorSource.addFeature(a),e.needZoom===!0){const n=new y.Polygon(e.geometry.rings);this.map.getView().fit(n.getExtent(),{padding:[100,100,100,100],maxZoom:18})}}catch{console.error("蒙板几何处理失败",l.geometry.coordinates)}}removeMask(){this.removeOverlaysByType("mask")}flashOverlay(e){const s=this.getOverlayById(e.id);if(!s||!s.getGeometry())return;e.needZoom===!0&&this.map.getView().fit(s.getGeometry().getExtent(),{padding:[100,100,100,100],maxZoom:18});const i=e.duration==null,t=i?0:Math.max(e.duration,.1)*1e3,r=400,l=s.get("_visible")!==!1,o=s.get("_originalStyle");(()=>{s.setStyle(o),s.set("_visible",!0);const n=setInterval(()=>{s.get("_visible")!==!1?(s.setStyle(this.hiddenStyle),s.set("_visible",!1)):(s.setStyle(o),s.set("_visible",!0))},r),h=i?void 0:setTimeout(()=>{this.stopFlash(e)},t);this.flashingMap.set(e.id,{timer:n,timeout:h,originalVisible:l})})()}stopFlash(e){const s=e==null?void 0:e.id;if(s){const i=this.flashingMap.get(s);if(!i)return;clearInterval(i.timer),i.timeout&&clearTimeout(i.timeout);const t=this.getOverlayById(s);if(t){if(i.originalVisible){const r=t.get("_originalStyle");t.setStyle(r)}else t.setStyle(this.hiddenStyle);t.set("_visible",i.originalVisible)}this.flashingMap.delete(s)}else this.flashingMap.forEach((i,t)=>{clearInterval(i.timer),i.timeout&&clearTimeout(i.timeout);const r=this.getOverlayById(t);if(r){if(i.originalVisible){const l=r.get("_originalStyle");r.setStyle(l)}else r.setStyle(this.hiddenStyle);r.set("_visible",i.originalVisible)}}),this.flashingMap.clear()}}exports.default=_;