UNPKG

gisviewer-vue3-arcgis

Version:

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

2 lines (1 loc) 7.05 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const M=require("@arcgis/core/core/reactiveUtils"),g=require("@arcgis/core/geometry"),S=require("@arcgis/core/geometry/support/webMercatorUtils.js"),C=require("@arcgis/core/Graphic"),I=require("@arcgis/core/layers/GraphicsLayer"),v=require("./signal-holo-flow.js");function P(d){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const t in d)if(t!=="default"){const a=Object.getOwnPropertyDescriptor(d,t);Object.defineProperty(e,t,a.get?a:{enumerable:!0,get:()=>d[t]})}}return e.default=d,Object.freeze(e)}const y=P(M),w=P(S);class G extends v.default{constructor(e,t){var a,s;super(e),this.waitingAreaLayer=new I,this.watchHandle=null,this.trajectoryDelayTime=2,this.stopLineMap=new Map,this.waitingAreaMap=new Map,this.lampGroupMap=new Map,this.countdownPanelProps=t,this.view.map.add(this.waitingAreaLayer),this.trajectoryDelayTime=(s=(a=this.mapConfig.holoFlow)==null?void 0:a.signal)==null?void 0:s.delay,this.trajectoryDelayTime===void 0&&(this.trajectoryDelayTime=2)}async initializeLayer(){var s,o,n,i,r;if(this.stopLineMap.size>0)return;console.time("初始化停止线图层");let e=(o=(s=this.mapConfig.holoFlow)==null?void 0:s.signal)==null?void 0:o.stopLineLayer;if(!e)return;e=this.mapConfig.assetsRoot+"/"+e;let t=await fetch(e),a=await t.json();for(const l of a.features){const{roadId:c,nodeId:u}=l.properties;let{destinationPoint:p}=l.properties;const{coordinates:h}=l.geometry;if(p){if(typeof p=="string")try{p=JSON.parse(p)}catch(f){console.error("解析面板基准点失败",f);continue}}else{const f=h[0],m=h[h.length-1],b=(f[0]+m[0])/2,L=(f[1]+m[1])/2;p=[b,L]}this.stopLineMap.set(`${u}_${c}`,{coord:h,panelPoint:p})}if(console.timeEnd("初始化停止线图层"),console.time("初始化待行区图层"),e=(i=(n=this.mapConfig.holoFlow)==null?void 0:n.signal)==null?void 0:i.waitingAreaLayer,!!e){e=this.mapConfig.assetsRoot+"/"+e,t=await fetch(e),a=await t.json();for(const l of a.features){const{roadId:c,direction:u,nodeId:p}=l.properties,{coordinates:h}=l.geometry,f=`${p}_${c}`;this.waitingAreaMap.has(f)||this.waitingAreaMap.set(f,[]),(r=this.waitingAreaMap.get(f))==null||r.push({coord:h,direction:u})}console.timeEnd("初始化待行区图层")}}initializeLampGroup(e){const{sigId:t,lampGroupList:a}=e,s=[];a.forEach(o=>{const{lampGroupNo:n,lampGroupType:i,crossFlowList:r,pedList:l}=o;if(r.length>0)for(const c of r){if(i===81)continue;const u=c.upSectionId;let p="s";switch(c.turn){case 1:p="s";break;case 2:p="l";break;case 4:p="r";break;case 8:p="u";break}s.push({lampGroupId:n,roadId:u,dir:p})}l.length>0}),this.lampGroupMap.set(t,s)}handleUniSignalData(e){this.watchHandle||(this.watchHandle=y.watch(()=>this.view.extent,()=>this.updatePanelPosition()));const{sigId:t,runningStatus:a}=e.data.basicInfo,s=this.lampGroupMap.get(t);if(!s)return{status:-1,message:"灯组未初始化"};const o=new Map;let n=!1;switch(String(a)){case"4":{n=!0,s.forEach(i=>{const{roadId:r,dir:l}=i;o.set(r,{...o.get(r)||{},[`${l}Number`]:"",[`${l}Color`]:"yellow"})});break}case"5":{s.forEach(i=>{const{roadId:r,dir:l}=i;o.set(r,{...o.get(r)||{},[`${l}Number`]:"",[`${l}Color`]:"red"})});break}case"6":case"9":{s.forEach(i=>{const{roadId:r,dir:l}=i;o.set(r,{...o.get(r)||{},[`${l}Number`]:"",[`${l}Color`]:"off"})});break}default:{const{curSigColorInfo:i}=e.data;i.forEach(r=>{const l=String(r.lamgroupId),{color:c,leftTime:u}=r,p=s.find(h=>h.lampGroupId===l);if(p){const{roadId:h,dir:f}=p;o.set(h,{...o.get(h)||{},[`${f}Number`]:u,[`${f}Color`]:c===1?"red":c===2?"yellow":"green"})}})}}return this.updateLampGroupPanelStatus(t,o,n),{status:0,message:"ok"}}getPanelScale(){const e=this.view.scale;let t=1;return e<500?t=1.2:e<1e3?t=1:e<2e3?t=.8:e<4e3?t=.4:t=0,t}updatePanelPosition(){const e=this.getPanelScale();for(const t of this.countdownPanelProps){e!==this.currentPanelScale&&(t.scale=e);const{mapPoint:a}=t;let s=new g.Point({x:a[0],y:a[1]});this.view.spatialReference.isWebMercator&&(s=w.geographicToWebMercator(s));const o=this.view.toScreen(s);if(t.position.left=o.x,t.position.top=o.y,this.view.type==="3d"){const n=this.getPanelRotation(t.stopLine);t.rotation=n}}this.currentPanelScale=e}doHoloSignalData(e){const t=e.crossId,a=e.phaseCountDownList,s=new Map;for(const o of a){let n="";for(let c of o.roadIdList)if(c.startsWith("-")&&(c=c.slice(1)),this.stopLineMap.has(`${t}_${c}`)){n=`${t}_${c}`;break}if(!n){console.log(`没有找到对应的进口道${t}--${n}`);continue}let i=s.get(n);if(i||(i={},s.set(n,i)),!o.direction)continue;const r=o.direction.toLowerCase(),l=o.color===1?"red":o.color===2?"yellow":"green";r==="u"?(i.uNumber=o.leftTime,i.uColor=l):r==="l"?(i.lNumber=o.leftTime,i.lColor=l):r==="s"?(i.sNumber=o.leftTime,i.sColor=l):r==="r"&&(i.rNumber=o.leftTime,i.rColor=l)}this.updateLampGroupPanelStatus(t,s),this.updateWaitingArea(t,s)}updateWaitingArea(e,t){t.forEach((a,s)=>{var o;if(a.lColor){let n=this.waitingAreaLayer.graphics.find(i=>i.attributes.roadId===s&&i.attributes.direction==="l");if(n)n.attributes.color!==a.lColor&&(n.attributes.color=a.lColor,n.symbol={type:"simple-fill",color:this.getColor(a.lColor),outline:{color:this.getColor(a.lColor)}});else{const i=(o=this.waitingAreaMap.get(s))==null?void 0:o.find(r=>r.direction==="l");i&&(n=new C({geometry:{type:"polygon",rings:i.coord},attributes:{roadId:s,direction:"l",color:a.lColor},symbol:{type:"simple-fill",color:this.getColor(a.lColor),outline:{color:this.getColor(a.lColor)}}}),this.waitingAreaLayer.add(n))}}})}getColor(e){return e==="green"?[0,255,0,.8]:e==="yellow"?[255,192,2,.8]:[255,0,0,.8]}updateLampGroupPanelStatus(e,t,a=!1){t.forEach((s,o)=>{const n=this.stopLineMap.get(o);if(!n)return;const i=this.countdownPanelProps.find(r=>r.roadId===o);if(i)i.lampStatus=s,i.flash=a;else{let r=new g.Point({x:n.panelPoint[0],y:n.panelPoint[1]});this.view.spatialReference.isWebMercator&&(r=w.geographicToWebMercator(r));const l=this.view.toScreen(r),c=this.getPanelRotation(n.coord);this.countdownPanelProps.push({displayMode:"complex",flash:a,crossId:e,roadId:o,mapPoint:n.panelPoint,stopLine:n.coord,position:{left:l.x,top:l.y},rotation:c,scale:this.getPanelScale(),lampStatus:s})}})}async handleHoloSignalData(e){this.watchHandle||(this.watchHandle=y.watch(()=>this.view.extent,()=>this.updatePanelPosition())),this.trajectoryDelayTime===0?this.doHoloSignalData(e):setTimeout(()=>this.doHoloSignalData(e),this.trajectoryDelayTime*1e3)}clearSignal(){var e;this.waitingAreaLayer.removeAll(),this.countdownPanelProps.length=0,(e=this.watchHandle)==null||e.remove(),this.watchHandle=null}getPanelRotation(e){const t=e[0];let a=new g.Point({x:t[0],y:t[1]});this.view.spatialReference.isWebMercator&&(a=w.geographicToWebMercator(a));const s=this.view.toScreen(a),o=e[e.length-1];let n=new g.Point({x:o[0],y:o[1]});this.view.spatialReference.isWebMercator&&(n=w.geographicToWebMercator(n));const i=this.view.toScreen(n),r=i.x-s.x,l=i.y-s.y;return Math.atan2(l,r)*(180/Math.PI)}}exports.default=G;