gisviewer-vue3-arcgis 1.0.246 → 1.0.248

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),b=require("./stores/index.js");require("./style/index.css");const Qe=require("./utils/detect-gpu.js"),A=require("./utils/green-wave-band-controller/index.js"),Ue=require("./utils/holo-flow/index.js"),Ze=require("./utils/holo-flow/signal-countdown-panel.vue.js"),Ke=require("./utils/map-initializer.js"),L=require("./utils/open-drive-renderer/index.js"),D=require("./utils/overlay.js"),Je=require("./utils/queue-length.js"),T=require("./utils/road-config-tool/index.js"),Xe=require("./utils/signal-control-area/edit-area.js"),Ye=require("./utils/signal-control-area/show-area.js"),Fe=require("./utils/traffic-flow.js"),Re={class:"gis-viewer"},$e={style:{position:"absolute",bottom:"80px",left:"10px","z-index":"9999"}},et=n.defineComponent({__name:"gis-map",props:{config:{},assetsRoot:{}},emits:["mapLoaded","markerClick","mapClick"],setup(_,{expose:B,emit:V}){const y=n.ref(null);let o,d,l,i,a,r,f,t,u,s,m;const S=n.ref(!1);b.registerStore();const q=b.default.useAppDataStore,O=n.reactive([]);Qe.default(),n.onMounted(async()=>{if(!y.value)return;document.addEventListener("keydown",p=>{p.ctrlKey&&p.key==="i"&&(S.value=!S.value)});const e=n.getCurrentInstance(),{$gisviewerAssetsRoot:g}=e.appContext.config.globalProperties,c=await(await fetch(k.config)).json();c.assetsRoot=k.assetsRoot||g,q.mapConfig=c,d=new Ke.default,o=await d.initialize({container:y.value,mapConfig:c,markerClickCallback:(p,C,h,je)=>{w("markerClick",p,C,h,je)},mapClickCallback:(p,C,h)=>{w("mapClick",p,C,h)}}),a=new Ue.default(o,O),await a.init(),w("mapLoaded")}),n.onUnmounted(()=>{s==null||s.clearSignalControlArea(),t==null||t.clearOpenDrive(),a.clearHoloTrace(),a.clearHoloSignal(),i==null||i.disconnectTrafficFlow()});const x=n.computed(()=>o),I=()=>{const e=b.default.useAppDataStore;e.saveTrackLog=!0},M=()=>{a.downloadTrackLog()},N=()=>{v("vehicleId")},E=()=>{v("plateNumber")},H=async e=>await d.setMapCenter(e),P=async e=>await d.setMapCamera(e),G=async e=>await d.lookAt(e),z=e=>d.setLayerVisibility(e),W=(e,g)=>d.requestCoordinateTransform(e,g),j=e=>{d.cancelCoordinateTransform(e)},Q=e=>{d.setMapZoomRange(e)},U=e=>(l||(l=new T.default(o)),l.showLaneNumber(e)),Z=()=>{l==null||l.clearLaneNumber()},K=async e=>(l||(l=new T.default(o)),await l.initializeSearch(e)),J=async()=>l==null?void 0:l.calCrossIndicatorArea(),X=async()=>{},Y=async(e,g)=>{i||(i=new Fe.default(o)),i.connectTrafficFlow(e,g)},F=()=>{i==null||i.disconnectTrafficFlow()},R=async e=>{a.handleVehicleTraceData(e)},$=()=>{a.clearHoloTrace()},ee=e=>{a.setInterpolate(e)},te=async e=>{await a.handleSignalData(e)},ae=async e=>{await a.initializeLampGroup(e)},ne=e=>{a.handleUniSignalData(e)},re=()=>{a.clearHoloSignal()},se=e=>{i==null||i.toggleTrafficInfo(e),a==null||a.toggleTrafficInfo(e)},oe=e=>{a==null||a.togglePause(e)},ie=e=>{i==null||i.toggleTrafficObject(e),a==null||a.toggleTrafficObject(e)},v=e=>{a==null||a.updatePanelContent(e)},ce=async e=>(r||(r=new D.default(o)),r.addOverlays(e)),le=e=>(r||(r=new D.default(o)),r.addMask(e)),ue=()=>{r==null||r.removeMask()},de=e=>r==null?void 0:r.removeOverlaysByType(e),me=e=>r==null?void 0:r.removeOverlaysById(e),ge=()=>r==null?void 0:r.removeAllOverlays(),pe=()=>{r==null||r.showAllOverlays()},fe=e=>{f||(f=new Je.default(o)),f.updateQueueLength(e)},ye=()=>{f==null||f.removeQueueLength()},Se=async(e,g)=>(t||(t=new L.default(o)),await t.showOpenDriveFromServer(e,g)),ve=async e=>(t||(t=new L.default(o)),await t.clearOpenDrive(),await t.showOpenDriveFromFile(e)),we=e=>t?t.setOpendriveVisibility(e):{status:-1,message:"未加载OpenDrive地图"},Ce=async()=>await(t==null?void 0:t.clearOpenDrive()),he=async e=>t?await(t==null?void 0:t.findSumo(e)):{status:-1,message:"未加载OpenDrive地图"},be=async e=>t?t.selectSumo(e):{status:-1,message:"未加载OpenDrive地图"},Oe=async e=>t?t.unselectSumo(e):{status:-1,message:"未加载OpenDrive地图"},ke=async e=>t?await t.geometrySearch(e):{status:-1,message:"未加载OpenDrive地图"},Ae=async e=>t?await t.getSumoInfo(e):{status:-1,message:"未加载OpenDrive地图"},Le=async e=>t?await(t==null?void 0:t.splitLane(e)):{status:-1,message:"未加载OpenDrive地图"},De=async()=>t?t==null?void 0:t.clearSplitLane():{status:-1,message:"未加载OpenDrive地图"},Te=async e=>(s||(s=new Ye.default(o)),await s.showSignalControlArea(e)),_e=async()=>await(s==null?void 0:s.clearSignalControlArea()),Be=e=>s==null?void 0:s.setLayerVisibility(e),Ve=async e=>s?await(s==null?void 0:s.locateSignalControlArea(e)):{status:-1,message:"未加载信号控制区"},qe=async e=>s?await s.highlightSignalControlArea(e):{status:-1,message:"未加载信号控制区"},xe=()=>s?s.resetHighlight():{status:-1,message:"未加载信号控制区"},Ie=e=>(u||(u=new Xe.default(o)),u.showSubSignalControlArea(e)),Me=e=>u?u.editSubSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Ne=()=>u?u.stopEditSubSignalControlArea():{status:-1,message:"未加载信号控制区"},Ee=e=>u?u.selectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},He=e=>u?u.unselectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},Pe=e=>{if(!u)return{status:-1,message:"未加载信号控制区"}},Ge=e=>(m||(m=new A.default(o)),m.addGreenWaveBand(e)),ze=()=>{if(!m)return{status:-1,message:"未加载绿波带"};m.stopAddGreenWaveBand()},We=async e=>(m||(m=new A.default(o)),await m.showGreenWaveBand(e)),k=_,w=V;return B({mapViewer:x,setLayerVisibility:z,setMapCenter:H,lookAt:G,setMapCamera:P,setMapZoomRange:Q,requestCoordinateTransform:W,cancelCoordinateTransform:j,addOverlays:ce,addMask:le,removeMask:ue,showAllOverlays:pe,removeOverlaysByType:de,removeOverlaysById:me,removeAllOverlays:ge,showLaneNumber:U,clearLaneNumber:Z,initializeAreaTool:K,calCrossIndicatorArea:J,calRoadIndicatorArea:X,connectCarFlow:Y,disconnectCarFlow:F,handleHoloVehicleTraceData:R,clearHoloTrace:$,initializeLampGroup:ae,handleUniSignalData:ne,handleHoloSignalData:te,clearHoloSignal:re,setInterpolate:ee,toggleTrafficInfo:se,toggleTrafficObject:ie,toggleVehicleInfo:v,togglePause:oe,updateQueueLength:fe,removeQueueLength:ye,showOpenDriveFromServer:Se,showOpenDriveFromFile:ve,clearOpenDrive:Ce,setOpendriveVisibility:we,geometrySearchInOpenDrive:ke,findSumoInOpenDrive:he,selectSumoInOpenDrive:be,unselectSumoInOpenDrive:Oe,getSumoInfo:Ae,splitOpenDriveLane:Le,clearSplitOpenDriveLane:De,showSignalControlArea:Te,clearSignalControlArea:_e,setSignalControlAreaVisibility:Be,locateSignalControlArea:Ve,highlightSignalControlArea:qe,resetHighlightSignalControlArea:xe,showSubSignalControlArea:Ie,editSubSignalControlArea:Me,stopEditSubSignalControlArea:Ne,selectSubSignalControlAreaCross:Ee,unselectSubSignalControlAreaCross:He,changeSubSignalControlAreaBorderVisibility:Pe,addGreenWaveBand:Ge,stopAddGreenWaveBand:ze,showGreenWaveBand:We}),(e,g)=>(n.openBlock(),n.createElementBlock("div",Re,[n.createElementVNode("div",{class:"gis-viewer-main",ref_key:"mapContainer",ref:y},[n.withDirectives(n.createElementVNode("div",$e,[n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:I}," 开始记录 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:M}," 下载日志 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:N}," 显示车辆id "),n.createElementVNode("button",{onClick:E},"显示车辆号牌")],512),[[n.vShow,S.value]])],512),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(O,(c,p)=>(n.openBlock(),n.createBlock(Ze.default,{key:p,"display-mode":c.displayMode,flash:c.flash,"road-id":c.crossId,"cross-id":c.roadId,"map-point":c.mapPoint,"stop-line":c.stopLine,position:c.position,rotation:c.rotation,scale:c.scale,"lamp-status":c.lampStatus},null,8,["display-mode","flash","road-id","cross-id","map-point","stop-line","position","rotation","scale","lamp-status"]))),128))]))}});exports.default=et;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),k=require("./stores/index.js");require("./style/index.css");const Xe=require("./utils/detect-gpu.js"),T=require("./utils/green-wave-band-controller/index.js"),Ye=require("./utils/holo-flow/index.js"),Fe=require("./utils/holo-flow/signal-countdown-panel.vue.js"),Re=require("./utils/map-initializer.js"),V=require("./utils/open-drive-renderer/index.js"),_=require("./utils/overlay.js"),$e=require("./utils/police-jurisdiction.js"),et=require("./utils/queue-length.js"),q=require("./utils/road-config-tool/index.js"),tt=require("./utils/signal-control-area/edit-area.js"),at=require("./utils/signal-control-area/show-area.js"),nt=require("./utils/traffic-flow.js"),rt=require("./utils/edpass-device-controller.js"),st={class:"gis-viewer"},it={style:{position:"absolute",bottom:"80px",left:"10px","z-index":"9999"}},ot=n.defineComponent({__name:"gis-map",props:{config:{},assetsRoot:{}},emits:["mapLoaded","markerClick","mapClick"],setup(B,{expose:I,emit:x}){const v=n.ref(null);let i,d,l,o,a,r,f,t,u,s,m,y,S;const w=n.ref(!1);k.registerStore();const A=k.default.useAppDataStore,L=n.reactive([]);Xe.default(),n.onMounted(async()=>{if(!v.value)return;document.addEventListener("keydown",p=>{p.ctrlKey&&p.key==="i"&&(w.value=!w.value)});const e=n.getCurrentInstance(),{$gisviewerAssetsRoot:g}=e.appContext.config.globalProperties,c=await(await fetch(D.config)).json();c.assetsRoot=D.assetsRoot||g,A.mapConfig=c,d=new Re.default,A.mapInitializer=d,i=await d.initialize({container:v.value,mapConfig:c,markerClickCallback:(p,b,O,Ke)=>{h("markerClick",p,b,O,Ke)},mapClickCallback:(p,b,O)=>{h("mapClick",p,b,O)}}),a=new Ye.default(i,L),await a.init(),h("mapLoaded")}),n.onUnmounted(()=>{s==null||s.clearSignalControlArea(),t==null||t.clearOpenDrive(),a.clearHoloTrace(),a.clearHoloSignal(),o==null||o.disconnectTrafficFlow()});const M=n.computed(()=>i),E=()=>{const e=k.default.useAppDataStore;e.saveTrackLog=!0},N=()=>{a.downloadTrackLog()},P=()=>{C("vehicleId")},H=()=>{C("plateNumber")},z=async e=>await d.setMapCenter(e),G=async e=>await d.setMapCamera(e),W=async e=>await d.lookAt(e),j=e=>d.setLayerVisibility(e),J=(e,g)=>d.requestCoordinateTransform(e,g),Q=e=>{d.cancelCoordinateTransform(e)},U=e=>{d.setMapZoomRange(e)},Z=e=>(l||(l=new q.default(i)),l.showLaneNumber(e)),K=()=>{l==null||l.clearLaneNumber()},X=async e=>(l||(l=new q.default(i)),await l.initializeSearch(e)),Y=async()=>l==null?void 0:l.calCrossIndicatorArea(),F=async()=>{},R=async(e,g)=>{o||(o=new nt.default(i)),o.connectTrafficFlow(e,g)},$=()=>{o==null||o.disconnectTrafficFlow()},ee=async e=>{a.handleVehicleTraceData(e)},te=()=>{a.clearHoloTrace()},ae=e=>{a.setInterpolate(e)},ne=async e=>{await a.handleSignalData(e)},re=async e=>{await a.initializeLampGroup(e)},se=e=>{a.handleUniSignalData(e)},ie=()=>{a.clearHoloSignal()},oe=e=>{o==null||o.toggleTrafficInfo(e),a==null||a.toggleTrafficInfo(e)},ce=e=>{a==null||a.togglePause(e)},le=e=>{o==null||o.toggleTrafficObject(e),a==null||a.toggleTrafficObject(e)},C=e=>{a==null||a.updatePanelContent(e)},ue=async e=>(r||(r=new _.default(i)),r.addOverlays(e)),de=e=>(r||(r=new _.default(i)),r.addMask(e)),me=()=>{r==null||r.removeMask()},ge=e=>r==null?void 0:r.removeOverlaysByType(e),pe=e=>r==null?void 0:r.removeOverlaysById(e),fe=()=>r==null?void 0:r.removeAllOverlays(),ye=()=>{r==null||r.showAllOverlays()},ve=e=>{f||(f=new et.default(i)),f.updateQueueLength(e)},Se=()=>{f==null||f.removeQueueLength()},we=async(e,g)=>(t||(t=new V.default(i)),await t.showOpenDriveFromServer(e,g)),Ce=async e=>(t||(t=new V.default(i)),await t.clearOpenDrive(),await t.showOpenDriveFromFile(e)),he=e=>t?t.setOpendriveVisibility(e):{status:-1,message:"未加载OpenDrive地图"},be=async()=>await(t==null?void 0:t.clearOpenDrive()),Oe=async e=>t?await(t==null?void 0:t.findSumo(e)):{status:-1,message:"未加载OpenDrive地图"},ke=async e=>t?t.selectSumo(e):{status:-1,message:"未加载OpenDrive地图"},Ae=async e=>t?t.unselectSumo(e):{status:-1,message:"未加载OpenDrive地图"},Le=async e=>t?await t.geometrySearch(e):{status:-1,message:"未加载OpenDrive地图"},De=async e=>t?await t.getSumoInfo(e):{status:-1,message:"未加载OpenDrive地图"},Te=async e=>t?await(t==null?void 0:t.splitLane(e)):{status:-1,message:"未加载OpenDrive地图"},Ve=async()=>t?t==null?void 0:t.clearSplitLane():{status:-1,message:"未加载OpenDrive地图"},_e=async e=>(s||(s=new at.default(i)),await s.showSignalControlArea(e)),qe=async()=>await(s==null?void 0:s.clearSignalControlArea()),Be=e=>s==null?void 0:s.setLayerVisibility(e),Ie=async e=>s?await(s==null?void 0:s.locateSignalControlArea(e)):{status:-1,message:"未加载信号控制区"},xe=async e=>s?await s.highlightSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Me=()=>s?s.resetHighlight():{status:-1,message:"未加载信号控制区"},Ee=e=>(u||(u=new tt.default(i)),u.showSubSignalControlArea(e)),Ne=e=>u?u.editSubSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Pe=()=>u?u.stopEditSubSignalControlArea():{status:-1,message:"未加载信号控制区"},He=e=>u?u.selectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},ze=e=>u?u.unselectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},Ge=e=>{if(!u)return{status:-1,message:"未加载信号控制区"}},We=e=>(m||(m=new T.default(i)),m.addGreenWaveBand(e)),je=()=>{if(!m)return{status:-1,message:"未加载绿波带"};m.stopAddGreenWaveBand()},Je=async e=>(m||(m=new T.default(i)),await m.showGreenWaveBand(e)),Qe=async e=>(y||(y=new $e.default(i)),await y.showJurisdiction(e)),Ue=()=>{if(!y)return{status:-1,message:"未加载警务管辖区"};y.clearJurisdiction()},Ze=async e=>(S||(S=new rt.default(i)),await S.setEdpassLayerVisibility(e)),D=B,h=x;return I({mapViewer:M,setLayerVisibility:j,setMapCenter:z,lookAt:W,setMapCamera:G,setMapZoomRange:U,requestCoordinateTransform:J,cancelCoordinateTransform:Q,addOverlays:ue,addMask:de,removeMask:me,showAllOverlays:ye,removeOverlaysByType:ge,removeOverlaysById:pe,removeAllOverlays:fe,showLaneNumber:Z,clearLaneNumber:K,initializeAreaTool:X,calCrossIndicatorArea:Y,calRoadIndicatorArea:F,connectCarFlow:R,disconnectCarFlow:$,handleHoloVehicleTraceData:ee,clearHoloTrace:te,initializeLampGroup:re,handleUniSignalData:se,handleHoloSignalData:ne,clearHoloSignal:ie,setInterpolate:ae,toggleTrafficInfo:oe,toggleTrafficObject:le,toggleVehicleInfo:C,togglePause:ce,updateQueueLength:ve,removeQueueLength:Se,showOpenDriveFromServer:we,showOpenDriveFromFile:Ce,clearOpenDrive:be,setOpendriveVisibility:he,geometrySearchInOpenDrive:Le,findSumoInOpenDrive:Oe,selectSumoInOpenDrive:ke,unselectSumoInOpenDrive:Ae,getSumoInfo:De,splitOpenDriveLane:Te,clearSplitOpenDriveLane:Ve,showSignalControlArea:_e,clearSignalControlArea:qe,setSignalControlAreaVisibility:Be,locateSignalControlArea:Ie,highlightSignalControlArea:xe,resetHighlightSignalControlArea:Me,showSubSignalControlArea:Ee,editSubSignalControlArea:Ne,stopEditSubSignalControlArea:Pe,selectSubSignalControlAreaCross:He,unselectSubSignalControlAreaCross:ze,changeSubSignalControlAreaBorderVisibility:Ge,addGreenWaveBand:We,stopAddGreenWaveBand:je,showGreenWaveBand:Je,showPoliceArea:Qe,clearPoliceArea:Ue,setEdpassLayerVisibility:Ze}),(e,g)=>(n.openBlock(),n.createElementBlock("div",st,[n.createElementVNode("div",{class:"gis-viewer-main",ref_key:"mapContainer",ref:v},[n.withDirectives(n.createElementVNode("div",it,[n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:E}," 开始记录 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:N}," 下载日志 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:P}," 显示车辆id "),n.createElementVNode("button",{onClick:H},"显示车辆号牌")],512),[[n.vShow,w.value]])],512),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(L,(c,p)=>(n.openBlock(),n.createBlock(Fe.default,{key:p,"display-mode":c.displayMode,flash:c.flash,"road-id":c.crossId,"cross-id":c.roadId,"map-point":c.mapPoint,"stop-line":c.stopLine,position:c.position,rotation:c.rotation,scale:c.scale,"lamp-status":c.lampStatus},null,8,["display-mode","flash","road-id","cross-id","map-point","stop-line","position","rotation","scale","lamp-status"]))),128))]))}});exports.default=ot;
@@ -20,11 +20,14 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
20
20
  editSignalAreaController: import("./utils/signal-control-area/edit-area").default;
21
21
  showSignalAreaController: import("./utils/signal-control-area/show-area").default;
22
22
  greenWaveBandController: import("./utils/green-wave-band-controller").default;
23
+ policeJurisdictionController: import("./utils/police-jurisdiction").default;
24
+ edpassDeviceController: import("./utils/edpass-device-controller").default;
23
25
  showLogDiv: import("vue").Ref<boolean>;
24
26
  appDataStore: import("pinia").Store<"appData", {
25
27
  mapConfig: {};
26
28
  saveTrackLog: boolean;
27
29
  isSketching: boolean;
30
+ mapInitializer: import("./utils/map-initializer").default;
28
31
  countdownPanels: import("../types").ISignalCountdownProps[];
29
32
  }, {}, {}>;
30
33
  countdownPanelProps: {
@@ -149,6 +152,12 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
149
152
  message: string;
150
153
  } | undefined;
151
154
  showGreenWaveBand: (params: import("../types").IShowGreenWaveBandParams) => Promise<void>;
155
+ showPoliceArea: (params: import("../types").IShowJurisdictionParams) => Promise<import("../types").IResult>;
156
+ clearPoliceArea: () => {
157
+ status: number;
158
+ message: string;
159
+ } | undefined;
160
+ setEdpassLayerVisibility: (params: import("../types").IShowEdpassDeviceParams) => Promise<import("../types").IResult>;
152
161
  props: any;
153
162
  emit: (event: "mapLoaded" | "markerClick" | "mapClick", ...args: any[]) => void;
154
163
  SignalCountdownPanel: import("vue").DefineComponent<{
@@ -1,7 +1,9 @@
1
1
  import { ISignalCountdownProps } from '../../types';
2
+ import MapInitializer from '../utils/map-initializer';
2
3
  export declare const useAppDataStore: import("pinia").StoreDefinition<"appData", {
3
4
  mapConfig: {};
4
5
  saveTrackLog: boolean;
5
6
  isSketching: boolean;
7
+ mapInitializer: MapInitializer;
6
8
  countdownPanels: ISignalCountdownProps[];
7
9
  }, {}, {}>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("pinia"),t=e.defineStore("appData",{state:()=>({mapConfig:{},saveTrackLog:!1,isSketching:!1,countdownPanels:[]}),actions:{}});exports.useAppDataStore=t;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("pinia"),a=e.defineStore("appData",{state:()=>({mapConfig:{},saveTrackLog:!1,isSketching:!1,mapInitializer:{},countdownPanels:[]}),actions:{}});exports.useAppDataStore=a;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("@arcgis/core/core/accessorSupport/decorators"),c=require("@arcgis/core/layers/BaseTileLayer.js");var i=Object.defineProperty,p=Object.getOwnPropertyDescriptor,n=(s,e,l,t)=>{for(var r=t>1?void 0:t?p(e,l):e,u=s.length-1,a;u>=0;u--)(a=s[u])&&(r=(t?a(e,l,r):a(r))||r);return t&&r&&i(e,l,r),r};exports.default=class extends c{constructor(e){super(e),this.urlTemplate="",this.urlTemplate=e.urlTemplate}getTileUrl(e,l,t){return this.urlTemplate.replace("{level}",String(e)).replace("{col}",String(t)).replace("{row}",String(l))}};exports.default=n([o.subclass("CustomWMTS")],exports.default);
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("@arcgis/core/core/accessorSupport/decorators"),n=require("@arcgis/core/layers/BaseTileLayer.js");var a=Object.defineProperty,c=Object.getOwnPropertyDescriptor,v=(r,e,o,s)=>{for(var l=s>1?void 0:s?c(e,o):e,t=r.length-1,i;t>=0;t--)(i=r[t])&&(l=(s?i(e,o,l):i(l))||l);return s&&l&&a(e,o,l),l};exports.default=class extends n{constructor(e){e.tileInfo||(e.tileInfo={dpi:96,size:[256,256],format:"png",origin:{x:-400,y:400},spatialReference:{wkid:4326},lods:[{level:"0",scale:591657527591555e-6,resolution:1.4078260157100582},{level:"1",scale:295828763795777e-6,resolution:.703913007855028},{level:"2",scale:147914381897889e-6,resolution:.35195650392751515},{level:"3",scale:7395719094894399e-8,resolution:.17597825196375638},{level:"4",scale:36978595474471994e-9,resolution:.08798912598187819},{level:"5",scale:18489297737235997e-9,resolution:.043994562990939096},{level:"6",scale:9244648868617998e-9,resolution:.021997281495469548},{level:"7",scale:4622324434308999e-9,resolution:.010998640747734774},{level:"8",scale:2311162217155e-6,resolution:.005499320373868577},{level:"9",scale:1155581108577e-6,resolution:.0027496601869330985},{level:"10",scale:577790.554289,resolution:.001374830093467739},{level:"11",scale:288895.277144,resolution:.0006874150467326798},{level:"12",scale:144447.638572,resolution:.0003437075233663399},{level:"13",scale:72223.819286,resolution:.00017185376168316996},{level:"14",scale:36111.909643,resolution:8592688084158498e-20},{level:"15",scale:9027.99546661377,resolution:4296344042198222e-20},{level:"16",scale:9027.977411,resolution:2148172021099111e-20},{level:"17",scale:4513.988705,resolution:10740860104305824e-21},{level:"18",scale:2256.994353,resolution:53704300533426425e-22},{level:"19",scale:1128.497176,resolution:2685215025481591e-21},{level:"20",scale:564.248588,resolution:13426075127407955e-22},{level:"21",scale:282.124294,resolution:6713037563703978e-22}]}),super(e),this.urlTemplate="",this.urlTemplate=e.urlTemplate}getTileUrl(e,o,s){return this.urlTemplate.replace("{level}",String(e)).replace("{col}",String(s)).replace("{row}",String(o))}};exports.default=v([u.subclass("CustomWMTS")],exports.default);
@@ -0,0 +1,14 @@
1
+ import { IResult, IShowEdpassDeviceParams } from '../../types';
2
+ export default class EdpassDeviceController {
3
+ private view;
4
+ private cameraNormalLayer;
5
+ private cameraAbnormalLayer;
6
+ private kkNormalLayer;
7
+ private kkAbnormalLayer;
8
+ private mapInitializer;
9
+ private watchHandle;
10
+ constructor(view: __esri.MapView | __esri.SceneView);
11
+ setEdpassLayerVisibility(params: IShowEdpassDeviceParams): Promise<IResult>;
12
+ private getLayerConfig;
13
+ private showClusterInExtent;
14
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("@arcgis/core/core/reactiveUtils.js"),b=require("@arcgis/core/Graphic"),n=require("@arcgis/core/layers/GraphicsLayer"),v=require("vue"),p=require("../stores/index.js");function g(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const f=g(u);class k{constructor(e){this.watchHandle=null,this.view=e;const t=p.default.useAppDataStore;this.mapInitializer=v.toRaw(t.mapInitializer),this.cameraNormalLayer=new n({id:"cameraNormalLayer",visible:!1}),this.cameraAbnormalLayer=new n({id:"cameraAbnormalLayer",visible:!1}),this.kkNormalLayer=new n({id:"kkNormalLayer",visible:!1}),this.kkAbnormalLayer=new n({id:"kkAbnormalLayer",visible:!1}),this.view.map.addMany([this.cameraNormalLayer,this.cameraAbnormalLayer,this.kkNormalLayer,this.kkAbnormalLayer])}async setEdpassLayerVisibility(e){var t;if(e.deviceType!=="camera"&&e.deviceType!=="kk")return{status:-1,message:"不支持的设备类型"};switch(e.mode){case"scatter":return this.mapInitializer.setLayerVisibility({id:`${e.deviceType}-${e.deviceState}`,visible:e.visible});case"cluster":{const{deviceLayer:i}=this.getLayerConfig(e);i.visible=e.visible,console.log(i.id,i.visible),e.visible?(await this.showClusterInExtent(e,this.view.extent),this.watchHandle||(this.watchHandle=f.when(()=>this.view.stationary,async()=>{this.cameraNormalLayer.visible&&(console.log("刷新 camera normal"),await this.showClusterInExtent({deviceType:"camera",deviceState:"normal",mode:"cluster",visible:!0},this.view.extent)),this.cameraAbnormalLayer.visible&&(console.log("刷新 camera abnormal"),await this.showClusterInExtent({deviceType:"camera",deviceState:"abnormal",mode:"cluster",visible:!0},this.view.extent)),this.kkNormalLayer.visible&&(console.log("刷新 kk normal"),await this.showClusterInExtent({deviceType:"kk",deviceState:"normal",mode:"cluster",visible:!0},this.view.extent)),this.kkAbnormalLayer.visible&&(console.log("刷新 kk abnormal"),await this.showClusterInExtent({deviceType:"kk",deviceState:"abnormal",mode:"cluster",visible:!0},this.view.extent))}))):(i.removeAll(),!this.cameraNormalLayer.visible&&!this.cameraAbnormalLayer.visible&&!this.kkNormalLayer.visible&&!this.kkAbnormalLayer.visible&&((t=this.watchHandle)==null||t.remove(),this.watchHandle=null));break}}return{status:0,message:"Success"}}getLayerConfig(e){let t,i,r;return e.deviceType==="camera"?e.deviceState==="normal"?(t="/GisViewerAssets/Images/gis/gis_sxj_map.png",i=[45,108,196],r=this.cameraNormalLayer):(t="/GisViewerAssets/Images/gis/gis_sxj_yc.png",i=[189,49,50],r=this.cameraAbnormalLayer):e.deviceState==="normal"?(t="/GisViewerAssets/Images/gis/gis_kk_map.png",i=[45,108,196],r=this.kkNormalLayer):(t="/GisViewerAssets/Images/gis/gis_kk_yc.png",i=[189,49,50],r=this.kkAbnormalLayer),{icon:t,color:i,deviceLayer:r}}async showClusterInExtent(e,t){const i=await fetch("/es/queryGeoAggregation",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceType:e.deviceType,topLeftLat:t.ymax,topLeftLon:t.xmin,bottomRightLat:t.ymin,bottomRightLon:t.xmax,devStateSet:[e.deviceState==="normal"?"1":"2"],mapLevel:this.view.zoom+9})});if(i.status!==200){console.error(i.statusText);return}const r=await i.json();if(r.code!==200)return;const{icon:c,color:y,deviceLayer:m}=this.getLayerConfig(e);m.removeAll();const h=r.data.map(a=>{var d;const o=(a.count.toString().length*6+6)/2,l=new b({geometry:{type:"point",x:a.lon,y:a.lat},attributes:{id:((d=a.devInfo)==null?void 0:d.deviceId)||a.key,type:e.deviceType,count:a.count,typeName:e.deviceType==="camera"?"视频":"卡口",stateName:e.deviceState==="normal"?"正常":"异常",...a.devInfo}});return a.count>1?l.symbol={type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:32,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{rings:[[[-o,30],[o,30],[o,15],[-o,15],[-o,30]]]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:y.concat([255])},{type:"CIMSolidStroke",enable:!0,width:3,color:y.concat([128])}]}},{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",fontFamilyName:"msyh",height:12,horizontalAlignment:"Center",offsetX:0,offsetY:22,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},verticalAlignment:"Center"},textString:a.count.toString()}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:24,rotateClockwise:!0,textureFilter:"Picture",url:c}]}}}:(l.symbol={type:"picture-marker",url:c,width:18,height:18},l.popupTemplate={title:"视频信息",content:[{type:"fields",fieldInfos:[{fieldName:"deviceId",label:"设备编号"},{fieldName:"deviceName",label:"设备名称"},{fieldName:"typeName",label:"设备类型"},{fieldName:"stateName",label:"设备状态"}]}]}),l});m.addMany(h)}}exports.default=k;
@@ -4,6 +4,7 @@ import { ILayerVisibleParams, ILookAtParams, IResult, ISetMapCameraParams, ISetM
4
4
  export default class MapInitializer {
5
5
  private view;
6
6
  private mapConfig;
7
+ private processUrl;
7
8
  /**
8
9
  * 初始化地图
9
10
  * @param params 容器
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const T=require("@arcgis/core/Basemap"),b=require("@arcgis/core/config"),q=require("@arcgis/core/core/reactiveUtils"),m=require("@arcgis/core/geometry"),z=require("@arcgis/core/geometry/support/webMercatorUtils"),W=require("@arcgis/core/layers/FeatureLayer"),O=require("@arcgis/core/layers/GeoJSONLayer"),I=require("@arcgis/core/layers/GroupLayer"),x=require("@arcgis/core/layers/IntegratedMesh3DTilesLayer"),S=require("@arcgis/core/layers/MapImageLayer"),R=require("@arcgis/core/layers/TileLayer"),G=require("@arcgis/core/layers/WebTileLayer"),H=require("@arcgis/core/Map"),_=require("@arcgis/core/views/MapView"),B=require("@arcgis/core/views/SceneView"),j=require("@turf/destination"),N=require("@turf/helpers"),U=require("./custom-layer/custom-wmts-layer.js");function v(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const i in r)if(i!=="default"){const s=Object.getOwnPropertyDescriptor(r,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>r[i]})}}return e.default=r,Object.freeze(e)}const L=v(q),g=v(z),E=v(N);function C(r,e){return r&&(r.startsWith("http://")||r.startsWith("https://")?r:e+r)}class A{constructor(){this.mapConfig={},this.watchHandleMap=new Map,this.handleIndex=0,this.zoomWatchHandle=null}async initialize(e){var w,y,M,k;this.mapConfig=e.mapConfig;const{container:i,markerClickCallback:s,mapClickCallback:a}=e;b.assetsPath=`${this.mapConfig.assetsRoot}/ArcgisAssets`,b.fontsUrl=`${this.mapConfig.assetsRoot}/fonts`,b.apiKey="AAPKf5a3e1044d7a4faeb3b1ec7060f5c68equIrP2KbRyL-t_b40Kk4GTWUQ1BFCyttvyQPQnWpFmBd7kp9gkrVihjfmcKBwxjW";const n=new H;if(((w=this.mapConfig)==null?void 0:w.mapOptions.mode.toLowerCase())==="2d"?(this.view=new _({map:n,container:i,...this.mapConfig.mapOptions}),this.view.on("drag",t=>{t.button===2&&t.stopPropagation()})):this.view=new B({map:n,container:i,environment:{atmosphereEnabled:!0,lighting:{type:"virtual"}},...(y=this.mapConfig)==null?void 0:y.mapOptions}),this.view.popup.visibleElements={closeButton:!0,collapseButton:!1,actionBar:!1,featureNavigation:!0},this.view.popup.dockOptions={buttonEnabled:!1,breakpoint:!1},this.view.on("click",async t=>{var h,P;if(a){let o=t.mapPoint;o.spatialReference.isWebMercator&&(o=g.webMercatorToGeographic(o)),a([o.x,o.y],[t.screenPoint.x,t.screenPoint.y],t)}if(this.view.type==="3d"){const o=this.view.camera;if(this.view.spatialReference.isWebMercator){const p=g.webMercatorToGeographic(o.position),f={heading:o.heading,tilt:o.tilt,position:p.toJSON()};console.log(f),(h=navigator.clipboard)==null||h.writeText(JSON.stringify(f))}else console.log(o.toJSON());console.log(this.view.zoom,this.view.scale)}else{let o=this.view.center;this.view.spatialReference.isWebMercator&&(o=g.webMercatorToGeographic(o)),console.log({center:o.toJSON(),zoom:this.view.zoom,scale:this.view.scale})}const c=(P=(await this.view.hitTest(t)).results)==null?void 0:P.filter(o=>o.type==="graphic");c.length>0&&c.forEach(o=>{var f;const p=o.graphic;(f=p.attributes)!=null&&f.type&&s&&s(p.attributes.type,p.attributes.id,p.attributes,t)})}),(M=this.mapConfig)!=null&&M.baseLayers?this.mapConfig.baseLayers.forEach(t=>{const l=C(t.url,this.mapConfig.assetsRoot);let c=null;switch(t.type.toLowerCase()){case"webTile".toLowerCase():{c=new G({urlTemplate:l,...t.options});break}case"tile":{c=new R({url:l,...t.options});break}case"customWMTS".toLowerCase():{c=new U.default({urlTemplate:l,...t.options});break}case"mapImage".toLowerCase():{c=new S({url:l,...t.options});break}case"arcgis":{const h=new T(t.options);n.basemap=h;break}case"feature":{c=new W({url:l,...t.options});break}case"3dtiles":{c=new x({url:l,...t.options});break}default:console.warn(`不支持的图层类型: ${t.type}`);break}if(c)if(t.group){let h=n.findLayerById(t.group);h&&h.type==="group"?h.add(c):(h=new I({id:t.group,title:t.groupTitle,visibilityMode:"inherited",layers:[c]}),n.add(h))}else n.add(c)}):n.basemap=new T({style:{id:"arcgis/light-gray",language:"zh-CN"}}),(k=this.mapConfig)!=null&&k.hdLayers){const t=this.mapConfig.hdLayers.map(l=>new O({url:C(l.url,this.mapConfig.assetsRoot),...l.options,title:l.options.id}));n.addMany(t)}this.view.ui.remove("attribution"),await this.view.when();const d=this.mapConfig.camera;let u;if(this.view.type==="2d"){let t=this.view.center;this.view.spatialReference.isWebMercator&&(t=g.webMercatorToGeographic(t)),u={center:[t.x,t.y],zoom:this.view.zoom}}else{let t=this.view.camera.position;this.view.spatialReference.isWebMercator&&(t=g.webMercatorToGeographic(t)),u={position:t,heading:this.view.camera.heading,tilt:this.view.camera.tilt}}return d?d.home=u:this.mapConfig.camera={home:u},this.view}setLayerVisibility(e){const{id:i,visible:s}=e,a=this.view.map.findLayerById(i);return a?(a.visible=s,{status:0,message:"ok"}):{status:-1,message:"未找到图层"}}async setMapCenter(e){var i;if(!this.view)return{status:-1,message:"未初始化"};if(e.center||e.target){switch((i=e.target)==null?void 0:i.type.toLowerCase()){case"point":e.target=new m.Point(e.target);break;case"polyline":e.target=new m.Polyline(e.target);break;case"polygon":e.target=new m.Polygon(e.target);break;case"multipoint":e.target=new m.Multipoint(e.target);break}await this.view.goTo(e,{duration:(e.duration||0)*1e3})}return{status:0,message:"成功"}}async lookAt(e){if(this.view.type==="2d")return;const i=e.tilt||0,s=e.heading||0;if(i===0)await this.view.goTo({position:{x:e.center[0],y:e.center[1],z:e.height},heading:s,tilt:0},{duration:(e.duration||2)*1e3});else{const a=Math.tan(i*Math.PI/180)*e.height,n=j(E.point(e.center),a,s+180,{units:"meters"});await this.view.goTo({position:{x:n.geometry.coordinates[0],y:n.geometry.coordinates[1],z:e.height},heading:s,tilt:i},{duration:(e.duration||2)*1e3})}}async setMapCamera(e){if(!this.view)return{status:-1,message:"未初始化"};const{name:i,duration:s=0}=e,{camera:a}=this.mapConfig;if(!a)return{status:-1,message:"未配置camera"};const n=a[i];return n?(await this.view.goTo(n,{duration:s*1e3}),{status:0,message:"成功"}):{status:-1,message:"未配置camera"}}requestCoordinateTransform(e,i){let s=0;const n=1e3/30,d=L.watch(()=>this.view.center,()=>{const u=this.transformPoints(e),w=Date.now();w-s>n&&(i(u),s=w)});return this.handleIndex++,this.watchHandleMap.set(this.handleIndex,d),{handle:this.handleIndex,points:this.transformPoints(e)}}transformPoints(e){return e.map(i=>{const s=new m.Point({x:i[0],y:i[1]}),a=this.view.toScreen(s);return[a.x,a.y]})}cancelCoordinateTransform(e){const i=this.watchHandleMap.get(e);i&&(i.remove(),this.watchHandleMap.delete(e))}setMapZoomRange(e){const{min:i,max:s}=e;!i&&!s||(this.zoomWatchHandle&&this.zoomWatchHandle.remove(),this.zoomWatchHandle=L.watch(()=>this.view.zoom,a=>{i&&a<=i&&(this.view.zoom=i),s&&a>=s&&(this.view.zoom=s)}))}}exports.default=A;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const T=require("@arcgis/core/Basemap"),b=require("@arcgis/core/config"),q=require("@arcgis/core/core/reactiveUtils"),f=require("@arcgis/core/geometry"),W=require("@arcgis/core/geometry/support/webMercatorUtils"),C=require("@arcgis/core/layers/FeatureLayer"),z=require("@arcgis/core/layers/GeoJSONLayer"),O=require("@arcgis/core/layers/GroupLayer"),S=require("@arcgis/core/layers/IntegratedMesh3DTilesLayer"),I=require("@arcgis/core/layers/MapImageLayer"),x=require("@arcgis/core/layers/TileLayer"),G=require("@arcgis/core/layers/WebTileLayer"),H=require("@arcgis/core/layers/WMSLayer"),R=require("@arcgis/core/Map"),_=require("@arcgis/core/views/MapView"),B=require("@arcgis/core/views/SceneView"),U=require("@turf/destination"),j=require("@turf/helpers"),N=require("./custom-layer/custom-wmts-layer.js");function v(h){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(h){for(const i in h)if(i!=="default"){const s=Object.getOwnPropertyDescriptor(h,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>h[i]})}}return e.default=h,Object.freeze(e)}const L=v(q),g=v(W),E=v(j);class A{constructor(){this.mapConfig={},this.watchHandleMap=new Map,this.handleIndex=0,this.zoomWatchHandle=null}processUrl(e){if(e){if(e.startsWith("http://")||e.startsWith("https://"))return e;if(e.startsWith("{{"))return e.replace("{{geoServer}}",this.mapConfig.geoServer);if(e.startsWith("/"))return this.mapConfig.assetsRoot+e}else return e}async initialize(e){var w,y,M,k;this.mapConfig=e.mapConfig;const{container:i,markerClickCallback:s,mapClickCallback:a}=e;b.assetsPath=`${this.mapConfig.assetsRoot}/ArcgisAssets`,b.fontsUrl=`${this.mapConfig.assetsRoot}/fonts`,b.apiKey="AAPKf5a3e1044d7a4faeb3b1ec7060f5c68equIrP2KbRyL-t_b40Kk4GTWUQ1BFCyttvyQPQnWpFmBd7kp9gkrVihjfmcKBwxjW";const r=new R;if(((w=this.mapConfig)==null?void 0:w.mapOptions.mode.toLowerCase())==="2d"?(this.view=new _({map:r,container:i,...this.mapConfig.mapOptions}),this.view.on("drag",t=>{t.button===2&&t.stopPropagation()})):this.view=new B({map:r,container:i,environment:{atmosphereEnabled:!0,lighting:{type:"virtual"}},...(y=this.mapConfig)==null?void 0:y.mapOptions}),this.view.popup.visibleElements={closeButton:!0,collapseButton:!1,actionBar:!1,featureNavigation:!0},this.view.popup.dockOptions={buttonEnabled:!1,breakpoint:!1},this.view.on("click",async t=>{var l,P;if(a){let o=t.mapPoint;o.spatialReference.isWebMercator&&(o=g.webMercatorToGeographic(o)),a([o.x,o.y],[t.screenPoint.x,t.screenPoint.y],t)}if(this.view.type==="3d"){const o=this.view.camera;if(this.view.spatialReference.isWebMercator){const u=g.webMercatorToGeographic(o.position),m={heading:o.heading,tilt:o.tilt,position:u.toJSON()};console.log(m),(l=navigator.clipboard)==null||l.writeText(JSON.stringify(m))}else console.log(o.toJSON());console.log(this.view.zoom,this.view.scale)}else{let o=this.view.center;this.view.spatialReference.isWebMercator&&(o=g.webMercatorToGeographic(o)),console.log({center:o.toJSON(),zoom:this.view.zoom,scale:this.view.scale})}const n=(P=(await this.view.hitTest(t)).results)==null?void 0:P.filter(o=>o.type==="graphic");n.length>0&&n.forEach(o=>{var m;const u=o.graphic;(m=u.attributes)!=null&&m.type&&s&&s(u.attributes.type,u.attributes.id,u.attributes,t)})}),(M=this.mapConfig)!=null&&M.baseLayers?this.mapConfig.baseLayers.forEach(t=>{const c=this.processUrl(t.url);let n=null;switch(t.type.toLowerCase()){case"webTile".toLowerCase():{n=new G({urlTemplate:c,...t.options});break}case"tile":{n=new x({url:c,...t.options});break}case"customWMTS".toLowerCase():{n=new N.default({urlTemplate:c,...t.options});break}case"mapImage".toLowerCase():{n=new I({url:c,...t.options});break}case"arcgis":{const l=new T(t.options);r.basemap=l;break}case"feature":{n=new C({url:c,...t.options});break}case"3dtiles":{n=new S({url:c,...t.options});break}case"wms":{n=new H({url:c,...t.options});break}default:console.warn(`不支持的图层类型: ${t.type}`);break}if(n)if(t.group){let l=r.findLayerById(t.group);l&&l.type==="group"?l.add(n):(l=new O({id:t.group,title:t.groupTitle,visibilityMode:"inherited",layers:[n],visible:t.groupVisible!==!1}),r.add(l))}else r.add(n)}):r.basemap=new T({style:{id:"arcgis/light-gray",language:"zh-CN"}}),(k=this.mapConfig)!=null&&k.hdLayers){const t=this.mapConfig.hdLayers.map(c=>new z({url:this.processUrl(c.url),...c.options,title:c.options.id}));r.addMany(t)}this.view.ui.remove("attribution"),await this.view.when();const d=this.mapConfig.camera;let p;if(this.view.type==="2d"){let t=this.view.center;this.view.spatialReference.isWebMercator&&(t=g.webMercatorToGeographic(t)),p={center:[t.x,t.y],zoom:this.view.zoom}}else{let t=this.view.camera.position;this.view.spatialReference.isWebMercator&&(t=g.webMercatorToGeographic(t)),p={position:t,heading:this.view.camera.heading,tilt:this.view.camera.tilt}}return d?d.home=p:this.mapConfig.camera={home:p},this.view}setLayerVisibility(e){const{id:i,visible:s}=e,a=this.view.map.findLayerById(i);return a?(a.visible=s,{status:0,message:"ok"}):{status:-1,message:"未找到图层"}}async setMapCenter(e){var i;if(!this.view)return{status:-1,message:"未初始化"};if(e.center||e.target){switch((i=e.target)==null?void 0:i.type.toLowerCase()){case"point":e.target=new f.Point(e.target);break;case"polyline":e.target=new f.Polyline(e.target);break;case"polygon":e.target=new f.Polygon(e.target);break;case"multipoint":e.target=new f.Multipoint(e.target);break}await this.view.goTo(e,{duration:(e.duration||0)*1e3})}return{status:0,message:"成功"}}async lookAt(e){if(this.view.type==="2d")return;const i=e.tilt||0,s=e.heading||0;if(i===0)await this.view.goTo({position:{x:e.center[0],y:e.center[1],z:e.height},heading:s,tilt:0},{duration:(e.duration||2)*1e3});else{const a=Math.tan(i*Math.PI/180)*e.height,r=U(E.point(e.center),a,s+180,{units:"meters"});await this.view.goTo({position:{x:r.geometry.coordinates[0],y:r.geometry.coordinates[1],z:e.height},heading:s,tilt:i},{duration:(e.duration||2)*1e3})}}async setMapCamera(e){if(!this.view)return{status:-1,message:"未初始化"};const{name:i,duration:s=0}=e,{camera:a}=this.mapConfig;if(!a)return{status:-1,message:"未配置camera"};const r=a[i];return r?(await this.view.goTo(r,{duration:s*1e3}),{status:0,message:"成功"}):{status:-1,message:"未配置camera"}}requestCoordinateTransform(e,i){let s=0;const r=1e3/30,d=L.watch(()=>this.view.center,()=>{const p=this.transformPoints(e),w=Date.now();w-s>r&&(i(p),s=w)});return this.handleIndex++,this.watchHandleMap.set(this.handleIndex,d),{handle:this.handleIndex,points:this.transformPoints(e)}}transformPoints(e){return e.map(i=>{const s=new f.Point({x:i[0],y:i[1]}),a=this.view.toScreen(s);return[a.x,a.y]})}cancelCoordinateTransform(e){const i=this.watchHandleMap.get(e);i&&(i.remove(),this.watchHandleMap.delete(e))}setMapZoomRange(e){const{min:i,max:s}=e;!i&&!s||(this.zoomWatchHandle&&this.zoomWatchHandle.remove(),this.zoomWatchHandle=L.watch(()=>this.view.zoom,a=>{i&&a<=i&&(this.view.zoom=i),s&&a>=s&&(this.view.zoom=s)}))}}exports.default=A;
@@ -0,0 +1,9 @@
1
+ import { IResult, IShowJurisdictionParams } from '../../types';
2
+ export default class PoliceJurisdiction {
3
+ private geoServer;
4
+ private view;
5
+ private maskLayer;
6
+ constructor(view: __esri.MapView | __esri.SceneView);
7
+ showJurisdiction(params: IShowJurisdictionParams): Promise<IResult>;
8
+ clearJurisdiction(): void;
9
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const S=require("@arcgis/core/geometry"),G=require("@arcgis/core/geometry/geometryEngine"),c=require("@arcgis/core/Graphic"),k=require("@arcgis/core/layers/GraphicsLayer"),L=require("axios"),C=require("vue"),E=require("../stores/index.js");function O(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,o.get?o:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const d=O(G);class j{constructor(e){this.view=e,this.maskLayer=new k({id:"police-jurisdiction"}),this.view.map.add(this.maskLayer);const t=E.default.useAppDataStore,o=C.toRaw(t.mapConfig);this.geoServer=o.geoServer}async showJurisdiction(e){if(!this.geoServer)return{status:-1,message:"未配置GeoServer"};const t=e.type.toLowerCase()==="zd"?"VIEW_SH_ZD":"VW_DWD_GEO_SH_DD",o=e.type.toLowerCase()==="zd"?"ZD_CODE":"DD_CODE",y=e.type.toLowerCase()==="zd"?"ZD_NAME":"DD_NAME",h=e.ids.join(","),a=await L.get(`${this.geoServer}/zd_edpass/wms`,{params:{service:"WFS",version:"1.1.0",request:"GetFeature",typename:`zd_edpass:${t}`,outputFormat:"application/json",CQL_FILTER:`${o} IN (${h})`}});if(a.status!==200)return{status:-1,message:a.status+" "+a.statusText};const{features:l}=a.data;if(!l||l.length===0)return{status:-1,message:"未查询到数据"};this.maskLayer.removeAll();const r=[],m=[],p=[];l.forEach(i=>{const b=i.geometry.coordinates,n=new S.Polygon({rings:b[0]});r.push(n);const v=new c({geometry:n,symbol:{type:"simple-line",style:"dash",color:[111,100,255],width:4}}),D=new c({geometry:n,symbol:{type:"simple-line",style:"solid",color:[111,100,255,.6],width:4}});m.push(v,D);const _=new c({geometry:n.centroid,symbol:{type:"text",color:[0,0,0],haloColor:[255,255,255],haloSize:"1px",text:i.properties[y],font:{size:"14px",weight:"bold",family:"msyh"}}});p.push(_)});const g=r[0].centroid,f=d.geodesicBuffer(g,100,"kilometers");let u=d.difference(f,r[0]);for(let i=1;i<r.length;i++)u=d.difference(u,r[i]);const w=new c({geometry:u,symbol:{type:"simple-fill",color:[100,100,100,.8],outline:{width:0}},attributes:{type:"mask"}});return this.maskLayer.add(w),this.maskLayer.addMany(m),this.maskLayer.addMany(p),await this.view.goTo(r),{status:0,message:"ok"}}clearJurisdiction(){this.maskLayer.removeAll()}}exports.default=j;
@@ -315,3 +315,13 @@ export interface IRoadLine {
315
315
  toNode: string;
316
316
  coordinates: number[][];
317
317
  }
318
+ export interface IShowJurisdictionParams {
319
+ type: string;
320
+ ids: string[];
321
+ }
322
+ export interface IShowEdpassDeviceParams {
323
+ deviceType: string;
324
+ deviceState: string;
325
+ mode: string;
326
+ visible: boolean;
327
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gisviewer-vue3-arcgis",
3
- "version": "1.0.246",
3
+ "version": "1.0.248",
4
4
  "main": "lib/index.js",
5
5
  "module": "es/index.mjs",
6
6
  "files": [