gisviewer-vue3-arcgis
Version:
在应用中引入私服的包, 项目根目录下 新建文件 .npmrc 在 .npmrc 中对包源进行配置:
2 lines (1 loc) • 7.67 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const b=require("@arcgis/core/core/reactiveUtils.js"),m=require("@arcgis/core/geometry"),c=require("@arcgis/core/Graphic"),y=require("@arcgis/core/layers/GraphicsLayer"),u=require("axios");function g(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const i in n)if(i!=="default"){const t=Object.getOwnPropertyDescriptor(n,i);Object.defineProperty(e,i,t.get?t:{enumerable:!0,get:()=>n[i]})}}return e.default=n,Object.freeze(e)}const p=g(b);class f{constructor(e){this.selectedNodeIds=[],this.nodeScale=5e3,this.hasGpu=!1,this.hasGpu=localStorage.getItem("gpu")!=="Unknown",this.view=e,this.roadsectLayer=new y({id:"roadsectLayer"}),this.view.map.add(this.roadsectLayer),this.allNodesLayer=new y({id:"allNodesLayer"}),this.view.map.add(this.allNodesLayer),this.bandLayer=new y({id:"bandLayer"}),this.view.map.add(this.bandLayer)}addGreenWaveBand(e){this.addNodeCallback=e.addCrossCallback,this.removeNodeCallback=e.removeCrossCallback,e.removeAllCrossCallback&&(this.removeAllNodeCallback=e.removeAllCrossCallback),this.selectedNodeIds=[],this.openDriveServer=e.odrServer,this.showAllNodes(e.crossesInArea),this.viewClickWatcher||(this.viewClickWatcher=this.view.on("click",i=>{this.handleViewClick(i)}))}stopAddGreenWaveBand(){var e;(e=this.viewClickWatcher)==null||e.remove(),this.viewClickWatcher=void 0,this.allNodesLayer.removeAll(),this.selectedNodeIds=[],this.roadsectLayer.removeAll(),this.bandLayer.removeAll()}async showGreenWaveBand(e){this.removeGreenWaveBand(e.bandId),this.scaleWatcher||(this.scaleWatcher=p.watch(()=>this.view.scale,(s,o)=>{s>this.nodeScale&&o<=this.nodeScale?this.bandLayer.graphics.forEach(a=>{a.geometry.type==="point"&&(a.symbol=this.getShowNodeSymbol("marker"))}):s<=this.nodeScale&&o>this.nodeScale&&this.bandLayer.graphics.forEach(a=>{a.geometry.type==="point"&&(a.symbol=this.getShowNodeSymbol("picture"))})}));const i=new m.Polyline({paths:[e.coordinates]}),t=new c({geometry:i,symbol:this.getLineSymbol(!0,e),attributes:{bandId:e.bandId,type:"greenWaveBand",id:e.bandId}});this.roadsectLayer.add(t),await this.view.goTo(t),e.nodeList&&e.nodeList.forEach(s=>{const o=new c({geometry:{type:"point",x:s.longitude,y:s.latitude},symbol:this.getShowNodeSymbol("picture"),attributes:{...s,bandId:e.bandId,type:"greenWaveBandNode"}});this.bandLayer.add(o)})}removeGreenWaveBand(e){if(e){let i=this.bandLayer.graphics.filter(t=>t.getAttribute("bandId")===e);this.bandLayer.removeMany(i.toArray()),i=this.roadsectLayer.graphics.filter(t=>t.getAttribute("bandId")===e),this.roadsectLayer.removeMany(i.toArray())}else{this.bandLayer.removeAll(),this.roadsectLayer.removeAll();return}}showAllNodes(e){const i=[];e.forEach(t=>{i.push(new c({geometry:{type:"point",x:t.longitude,y:t.latitude},symbol:this.getEditableNodeSymbol(!1),attributes:{...t,selected:!1}}))}),this.allNodesLayer.addMany(i)}async handleViewClick(e){var a;const t=(a=(await this.view.hitTest(e,{include:[this.allNodesLayer]})).results)==null?void 0:a.filter(d=>d.type==="graphic");if(t.length===0)return;const s=t[0].graphic,o=s.getAttribute("id");if(this.selectedNodeIds.includes(o)){const d=this.selectedNodeIds.indexOf(o)+1;if(d===1)this.removeAllNodeCallback&&this.removeAllNodeCallback(),this.selectedNodeIds=[],this.allNodesLayer.graphics.forEach(r=>{r.setAttribute("selected",!1),r.symbol=this.getEditableNodeSymbol(!1),r.visible=!0}),this.roadsectLayer.removeAll();else{for(let r=d;r<this.selectedNodeIds.length;r++){this.removeNodeCallback&&this.removeNodeCallback({id:this.selectedNodeIds[r]});for(let l=0;l<this.roadsectLayer.graphics.length;l++){const h=this.roadsectLayer.graphics.getItemAt(l);(h.getAttribute("id")===this.selectedNodeIds[r]||!h.getAttribute("selected"))&&(this.roadsectLayer.remove(h),l--)}}this.selectedNodeIds=this.selectedNodeIds.slice(0,d),this.allNodesLayer.graphics.forEach(r=>{const l=this.selectedNodeIds.includes(r.getAttribute("id"));r.setAttribute("selected",l),r.symbol=this.getEditableNodeSymbol(l),r.visible=l}),await this.showDownstreamNodes(o)}}else{s.setAttribute("selected",!0),s.symbol=this.getEditableNodeSymbol(!0),this.selectedNodeIds.push(o),this.allNodesLayer.graphics.forEach(r=>{r.visible=r.getAttribute("selected")});let d=[];for(let r=0;r<this.roadsectLayer.graphics.length;r++){const l=this.roadsectLayer.graphics.getItemAt(r);l.getAttribute("id")===o?(l.symbol=this.getLineSymbol(!0),l.setAttribute("selected",!0),d=l.geometry.paths[0]):l.getAttribute("selected")||(this.roadsectLayer.remove(l),r--)}this.addNodeCallback&&this.addNodeCallback({...s.attributes,roadsect:d}),await this.showDownstreamNodes(o)}}async showDownstreamNodes(e){this.view.container.style.cursor="progress";const i=await u.get(`http://${this.openDriveServer}/api/computable/getDownstreamNodes`,{params:{nodeId:e}});if(i.status!==200||i.data.status!==0){this.view.container.style.cursor="default";return}i.data.result.forEach(s=>{this.allNodesLayer.graphics.forEach(o=>{if(o.getAttribute("nodeId")===s.id&&o.getAttribute("selected")===!1&&(o.visible=!0,s.coordinates)){const a=new c({geometry:{type:"polyline",paths:[s.coordinates]},symbol:this.getLineSymbol(!1),attributes:{...s,selected:!1}});this.roadsectLayer.add(a)}})}),this.view.container.style.cursor="default"}getLineSymbol(e,i){if(e){const t=(i==null?void 0:i.lineWidth)||4,s=(i==null?void 0:i.lineColor)||[55,125,34,255],o=(i==null?void 0:i.arrowColor)||[255,255,255,255],d=((i==null?void 0:i.arrowDirection)||"double")==="single"?[[[t,-t],[3*t,0],[t,t]]]:[[[t,-t],[3*t,0],[t,t]],[[-t,t],[-3*t,0],[-t,-t]]];return Array.isArray(s)&&s.length===3&&s.push(255),Array.isArray(o)&&o.length===3&&o.push(255),{type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMLineSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,size:4,markerPlacement:{type:"CIMMarkerPlacementAlongLineSameSize",endings:"WithMarkers",placementTemplate:[40],angleToLine:!0},frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:d},symbol:{type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",enable:!0,width:1.5,color:o}]}}]},{type:"CIMSolidStroke",enable:!0,width:t,color:s}]}}}}else return{type:"simple-line",color:"gray",width:2}}getShowNodeSymbol(e){return e==="marker"?{type:"simple-marker",style:"circle",color:[61,139,249],size:8,outline:{color:"white",width:1}}:this.getEditableNodeSymbol(!0)}getEditableNodeSymbol(e){return{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:'Replace($feature.name, "与", "/") + " " + $feature.signalId',returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:30,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:12,horizontalAlignment:"Center",offsetX:0,offsetY:20,haloSize:2,haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[0,0,0,255]}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:25,rotateClockwise:!0,textureFilter:"Picture",url:`/GisViewerAssets/Images/cross/${e?"gis_xhj_blue":"gis_xhj_gray"}.png`}]}}}}}exports.default=f;