gisviewer-vue3-arcgis 1.0.165 → 1.0.166

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.
Files changed (38) hide show
  1. package/es/_virtual/_plugin-vue_export-helper.mjs +9 -0
  2. package/es/src/gis-map/gis-map.vue.d.ts +111 -0
  3. package/es/src/gis-map/gis-map.vue.mjs +135 -124
  4. package/es/src/gis-map/index.d.ts +111 -0
  5. package/es/src/gis-map/stores/appData.d.ts +2 -0
  6. package/es/src/gis-map/stores/appData.mjs +4 -2
  7. package/es/src/gis-map/utils/common-utils.mjs +6 -6
  8. package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.d.ts +85 -0
  9. package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.mjs +7 -0
  10. package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue2.mjs +120 -0
  11. package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue3.mjs +4 -0
  12. package/es/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.d.ts +13 -0
  13. package/es/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.mjs +95 -35
  14. package/es/src/gis-map/utils/holo-flow/trace-renderer-layer.mjs +102 -99
  15. package/es/src/gis-map/utils/map-initializer.mjs +54 -45
  16. package/es/src/gis-map/utils/open-drive-renderer/index.mjs +10 -10
  17. package/es/src/gis-map/utils/traffic-flow.mjs +5 -4
  18. package/es/src/types/index.d.ts +21 -0
  19. package/es/style.css +1 -1
  20. package/lib/_virtual/_plugin-vue_export-helper.js +1 -0
  21. package/lib/src/gis-map/gis-map.vue.d.ts +111 -0
  22. package/lib/src/gis-map/gis-map.vue.js +1 -1
  23. package/lib/src/gis-map/index.d.ts +111 -0
  24. package/lib/src/gis-map/stores/appData.d.ts +2 -0
  25. package/lib/src/gis-map/stores/appData.js +1 -1
  26. package/lib/src/gis-map/utils/common-utils.js +1 -1
  27. package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.d.ts +85 -0
  28. package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.js +1 -0
  29. package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue2.js +1 -0
  30. package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue3.js +1 -0
  31. package/lib/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.d.ts +13 -0
  32. package/lib/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.js +1 -1
  33. package/lib/src/gis-map/utils/holo-flow/trace-renderer-layer.js +1 -1
  34. package/lib/src/gis-map/utils/map-initializer.js +1 -1
  35. package/lib/src/gis-map/utils/open-drive-renderer/index.js +1 -1
  36. package/lib/src/gis-map/utils/traffic-flow.js +1 -1
  37. package/lib/src/types/index.d.ts +21 -0
  38. package/package.json +1 -1
@@ -29,6 +29,33 @@ declare const _sfc_main: import("vue").DefineComponent<{
29
29
  queueLength: QueueLength;
30
30
  openDriveRenderer: OpenDriveRenderer;
31
31
  signalControlAreaController: SignalControlAreaController;
32
+ appDataStore: import("pinia").Store<"appData", {
33
+ mapConfig: {};
34
+ saveTrackLog: boolean;
35
+ isSketching: boolean;
36
+ countdownPanels: import("../types").ISignalCountdownProps[];
37
+ }, {}, {}>;
38
+ countdownPanelInfos: import("vue").Ref<{
39
+ crossId: string;
40
+ roadId: string;
41
+ mapPoint: number[];
42
+ stopLine: number[][];
43
+ position: {
44
+ left: number;
45
+ top: number;
46
+ };
47
+ rotation: number;
48
+ lampStatus: {
49
+ uNumber?: number | undefined;
50
+ uColor?: string | undefined;
51
+ lNumber?: number | undefined;
52
+ lColor?: string | undefined;
53
+ sNumber?: number | undefined;
54
+ sColor?: string | undefined;
55
+ rNumber?: number | undefined;
56
+ rColor?: string | undefined;
57
+ };
58
+ }[]>;
32
59
  showLogDiv: import("vue").Ref<boolean>;
33
60
  mapViewer: import("vue").ComputedRef<MapView | SceneView>;
34
61
  startSaveTrackLog: () => void;
@@ -95,6 +122,90 @@ declare const _sfc_main: import("vue").DefineComponent<{
95
122
  resetHighlightSignalControlArea: () => import("../types").IResult;
96
123
  props: any;
97
124
  emit: (event: "mapLoaded" | "markerClick" | "mapClick", ...args: any[]) => void;
125
+ SignalCountdownPanel: import("vue").DefineComponent<{
126
+ crossId: {
127
+ type: StringConstructor;
128
+ required: true;
129
+ };
130
+ roadId: {
131
+ type: StringConstructor;
132
+ required: true;
133
+ };
134
+ mapPoint: {
135
+ type: ArrayConstructor;
136
+ required: true;
137
+ };
138
+ stopLine: {
139
+ type: ArrayConstructor;
140
+ required: true;
141
+ };
142
+ position: {
143
+ type: ObjectConstructor;
144
+ required: true;
145
+ };
146
+ rotation: {
147
+ type: NumberConstructor;
148
+ required: true;
149
+ };
150
+ lampStatus: {
151
+ type: ObjectConstructor;
152
+ required: true;
153
+ };
154
+ }, {
155
+ props: any;
156
+ panelStyle: import("vue").ComputedRef<{
157
+ top: string;
158
+ left: string;
159
+ 'transform-origin': string;
160
+ transform: string;
161
+ }>;
162
+ uImage: import("vue").ComputedRef<string>;
163
+ uNumberStyle: import("vue").ComputedRef<{
164
+ color: string;
165
+ }>;
166
+ lImage: import("vue").ComputedRef<string>;
167
+ lNumberStyle: import("vue").ComputedRef<{
168
+ color: string;
169
+ }>;
170
+ sImage: import("vue").ComputedRef<string>;
171
+ sNumberStyle: import("vue").ComputedRef<{
172
+ color: string;
173
+ }>;
174
+ rImage: import("vue").ComputedRef<string>;
175
+ rNumberStyle: import("vue").ComputedRef<{
176
+ color: string;
177
+ }>;
178
+ getColorString: (color: string | undefined) => "red" | "yellow" | "lime" | "white";
179
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
180
+ crossId: {
181
+ type: StringConstructor;
182
+ required: true;
183
+ };
184
+ roadId: {
185
+ type: StringConstructor;
186
+ required: true;
187
+ };
188
+ mapPoint: {
189
+ type: ArrayConstructor;
190
+ required: true;
191
+ };
192
+ stopLine: {
193
+ type: ArrayConstructor;
194
+ required: true;
195
+ };
196
+ position: {
197
+ type: ObjectConstructor;
198
+ required: true;
199
+ };
200
+ rotation: {
201
+ type: NumberConstructor;
202
+ required: true;
203
+ };
204
+ lampStatus: {
205
+ type: ObjectConstructor;
206
+ required: true;
207
+ };
208
+ }>>, {}, {}>;
98
209
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("mapLoaded" | "markerClick" | "mapClick")[], "mapLoaded" | "markerClick" | "mapClick", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
99
210
  config: {
100
211
  type: StringConstructor;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("vue"),y=require("./stores/index.js");require("./style/index.css");const De=require("./utils/holo-flow/index.js"),Le=require("./utils/map-initializer.js"),O=require("./utils/open-drive-renderer/index.js"),C=require("./utils/overlay.js"),Ae=require("./utils/queue-length.js"),k=require("./utils/road-config-tool/index.js"),Ie=require("./utils/signal-control-area-controller/index.js"),be=require("./utils/traffic-flow.js"),qe={class:"gis-viewer"},Me={style:{position:"absolute",bottom:"10px",left:"10px"}},_e=o.defineComponent({__name:"gis-map",props:{config:{},assetsRoot:{}},emits:["mapLoaded","markerClick","mapClick"],setup(T,{expose:D,emit:L}){const p=o.ref(null);let c,l,i,r,n,a,m,t,s;const d=o.ref(!1);o.onMounted(async()=>{if(y.registerStore(),!p.value)return;document.addEventListener("keydown",g=>{g.ctrlKey&&g.key==="i"&&(d.value=!d.value)});const e=o.getCurrentInstance(),{$gisviewerAssetsRoot:u}=e.appContext.config.globalProperties,S=await(await fetch(h.config)).json();S.assetsRoot=h.assetsRoot||u;const ke=y.default.useAppDataStore;ke.mapConfig=S,l=new Le.default,c=await l.initialize({container:p.value,markerClickCallback:(g,w,v,Te)=>{f("markerClick",g,w,v,Te)},mapClickCallback:(g,w,v)=>{f("mapClick",g,w,v)}}),n=new De.default(c),await n.init(),f("mapLoaded")}),o.onUnmounted(()=>{s==null||s.clearSignalControlArea(),t==null||t.clearOpenDrive(),n==null||n.clearHoloTrace(),n==null||n.clearHoloSignal(),r==null||r.disconnectTrafficFlow()});const A=o.computed(()=>c),I=()=>{const e=y.default.useAppDataStore;e.saveTrackLog=!0},b=()=>{n.downloadTrackLog()},q=async e=>await l.setMapCenter(e),M=async e=>await l.setMapCamera(e),_=async e=>await l.lookAt(e),x=e=>l.setLayerVisibility(e),H=(e,u)=>l.requestCoordinateTransform(e,u),V=e=>{l.cancelCoordinateTransform(e)},N=e=>{l.setMapZoomRange(e)},B=e=>(i||(i=new k.default(c)),i.showLaneNumber(e)),E=()=>{i==null||i.clearLaneNumber()},j=async e=>(i||(i=new k.default(c)),await i.initializeSearch(e)),z=async()=>i==null?void 0:i.calCrossIndicatorArea(),P=async()=>{},Q=async(e,u)=>{r||(r=new be.default(c)),r.connectTrafficFlow(e,u)},F=()=>{r==null||r.disconnectTrafficFlow()},Z=e=>{n.handleVehicleTraceData(e)},K=()=>{n.clearHoloTrace()},U=e=>{n.setInterpolate(e)},G=async e=>{await n.handleSignalData(e)},J=()=>{n.clearHoloSignal()},W=e=>{r==null||r.toggleTrafficInfo(e),n.toggleTrafficInfo(e)},X=e=>{n.togglePause(e)},Y=e=>{r==null||r.toggleTrafficObject(e),n.toggleTrafficObject(e)},R=e=>{n.updatePanelContent(e)},$=async e=>(a||(a=new C.default(c)),a.addOverlays(e)),ee=e=>(a||(a=new C.default(c)),a.addMask(e)),te=()=>{a==null||a.removeMask()},ae=e=>a==null?void 0:a.removeOverlaysByType(e),ne=e=>a==null?void 0:a.removeOverlaysById(e),re=()=>a==null?void 0:a.removeAllOverlays(),se=()=>{a==null||a.showAllOverlays()},oe=e=>{m||(m=new Ae.default(c)),m.updateQueueLength(e)},ce=()=>{m==null||m.removeQueueLength()},ie=async(e,u)=>(t||(t=new O.default(c)),await t.showOpenDriveFromServer(e,u)),le=async e=>(t||(t=new O.default(c)),await t.clearOpenDrive(),await t.showOpenDriveFromFile(e)),ue=async()=>await(t==null?void 0:t.clearOpenDrive()),me=async e=>t?await(t==null?void 0:t.findSumo(e)):{status:-1,message:"未加载OpenDrive地图"},ge=async e=>t?t.selectSumo(e):{status:-1,message:"未加载OpenDrive地图"},pe=async e=>t?t.unselectSumo(e):{status:-1,message:"未加载OpenDrive地图"},de=async e=>t?await t.geometrySearch(e):{status:-1,message:"未加载OpenDrive地图"},fe=async e=>t?await t.getSumoInfo(e):{status:-1,message:"未加载OpenDrive地图"},we=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地图"},ye=async e=>(s||(s=new Ie.default(c)),await s.showSignalControlArea(e)),he=()=>{s==null||s.clearSignalControlArea()},Se=async e=>s?await s.locateSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Oe=async e=>s?await s.highlightSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Ce=()=>s?s.resetHighlight():{status:-1,message:"未加载信号控制区"},h=T,f=L;return D({mapViewer:A,setLayerVisibility:x,setMapCenter:q,lookAt:_,setMapCamera:M,setMapZoomRange:N,requestCoordinateTransform:H,cancelCoordinateTransform:V,addOverlays:$,addMask:ee,removeMask:te,showAllOverlays:se,removeOverlaysByType:ae,removeOverlaysById:ne,removeAllOverlays:re,showLaneNumber:B,clearLaneNumber:E,initializeAreaTool:j,calCrossIndicatorArea:z,calRoadIndicatorArea:P,connectCarFlow:Q,disconnectCarFlow:F,handleHoloVehicleTraceData:Z,clearHoloTrace:K,handleHoloSignalData:G,clearHoloSignal:J,setInterpolate:U,toggleTrafficInfo:W,toggleTrafficObject:Y,toggleVehicleInfo:R,togglePause:X,updateQueueLength:oe,removeQueueLength:ce,showOpenDriveFromServer:ie,showOpenDriveFromFile:le,clearOpenDrive:ue,geometrySearchInOpenDrive:de,findSumoInOpenDrive:me,selectSumoInOpenDrive:ge,unselectSumoInOpenDrive:pe,getSumoInfo:fe,splitOpenDriveLane:we,clearSplitOpenDriveLane:ve,showSignalControlArea:ye,clearSignalControlArea:he,locateSignalControlArea:Se,highlightSignalControlArea:Oe,resetHighlightSignalControlArea:Ce}),(e,u)=>(o.openBlock(),o.createElementBlock("div",qe,[o.createElementVNode("div",{class:"gis-viewer-main",ref_key:"mapContainer",ref:p},[o.withDirectives(o.createElementVNode("div",Me,[o.createElementVNode("button",{style:{"margin-right":"10px"},onClick:I}," 开始记录 "),o.createElementVNode("button",{onClick:b},"下载日志")],512),[[o.vShow,d.value]])],512)]))}});exports.default=_e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),De=require("pinia"),S=require("./stores/index.js");require("./style/index.css");const Ae=require("./utils/holo-flow/index.js"),be=require("./utils/holo-flow/signal-countdown-panel.vue.js"),Ie=require("./utils/map-initializer.js"),k=require("./utils/open-drive-renderer/index.js"),C=require("./utils/overlay.js"),qe=require("./utils/queue-length.js"),L=require("./utils/road-config-tool/index.js"),Me=require("./utils/signal-control-area-controller/index.js"),_e=require("./utils/traffic-flow.js"),xe={class:"gis-viewer"},Be={style:{position:"absolute",bottom:"10px",left:"10px"}},He=a.defineComponent({__name:"gis-map",props:{config:{},assetsRoot:{}},emits:["mapLoaded","markerClick","mapClick"],setup(T,{expose:D,emit:A}){const p=a.ref(null);let i,u,c,s,r,n,g,t,o;S.registerStore();const h=S.default.useAppDataStore,{countdownPanels:b}=De.storeToRefs(h),f=a.ref(!1);a.onMounted(async()=>{if(!p.value)return;document.addEventListener("keydown",d=>{d.ctrlKey&&d.key==="i"&&(f.value=!f.value)});const e=a.getCurrentInstance(),{$gisviewerAssetsRoot:m}=e.appContext.config.globalProperties,l=await(await fetch(O.config)).json();l.assetsRoot=O.assetsRoot||m,h.mapConfig=l,u=new Ie.default,i=await u.initialize({container:p.value,markerClickCallback:(d,v,y,Te)=>{w("markerClick",d,v,y,Te)},mapClickCallback:(d,v,y)=>{w("mapClick",d,v,y)}}),r=new Ae.default(i),await r.init(),w("mapLoaded")}),a.onUnmounted(()=>{o==null||o.clearSignalControlArea(),t==null||t.clearOpenDrive(),r==null||r.clearHoloTrace(),r==null||r.clearHoloSignal(),s==null||s.disconnectTrafficFlow()});const I=a.computed(()=>i),q=()=>{const e=S.default.useAppDataStore;e.saveTrackLog=!0},M=()=>{r.downloadTrackLog()},_=async e=>await u.setMapCenter(e),x=async e=>await u.setMapCamera(e),B=async e=>await u.lookAt(e),H=e=>u.setLayerVisibility(e),V=(e,m)=>u.requestCoordinateTransform(e,m),P=e=>{u.cancelCoordinateTransform(e)},N=e=>{u.setMapZoomRange(e)},E=e=>(c||(c=new L.default(i)),c.showLaneNumber(e)),j=()=>{c==null||c.clearLaneNumber()},z=async e=>(c||(c=new L.default(i)),await c.initializeSearch(e)),Q=async()=>c==null?void 0:c.calCrossIndicatorArea(),F=async()=>{},Z=async(e,m)=>{s||(s=new _e.default(i)),s.connectTrafficFlow(e,m)},K=()=>{s==null||s.disconnectTrafficFlow()},U=e=>{r.handleVehicleTraceData(e)},G=()=>{r.clearHoloTrace()},J=e=>{r.setInterpolate(e)},W=async e=>{await r.handleSignalData(e)},X=()=>{r.clearHoloSignal()},Y=e=>{s==null||s.toggleTrafficInfo(e),r.toggleTrafficInfo(e)},R=e=>{r.togglePause(e)},$=e=>{s==null||s.toggleTrafficObject(e),r.toggleTrafficObject(e)},ee=e=>{r.updatePanelContent(e)},te=async e=>(n||(n=new C.default(i)),n.addOverlays(e)),ae=e=>(n||(n=new C.default(i)),n.addMask(e)),ne=()=>{n==null||n.removeMask()},re=e=>n==null?void 0:n.removeOverlaysByType(e),se=e=>n==null?void 0:n.removeOverlaysById(e),oe=()=>n==null?void 0:n.removeAllOverlays(),ie=()=>{n==null||n.showAllOverlays()},ce=e=>{g||(g=new qe.default(i)),g.updateQueueLength(e)},le=()=>{g==null||g.removeQueueLength()},ue=async(e,m)=>(t||(t=new k.default(i)),await t.showOpenDriveFromServer(e,m)),me=async e=>(t||(t=new k.default(i)),await t.clearOpenDrive(),await t.showOpenDriveFromFile(e)),de=async()=>await(t==null?void 0:t.clearOpenDrive()),ge=async e=>t?await(t==null?void 0:t.findSumo(e)):{status:-1,message:"未加载OpenDrive地图"},pe=async e=>t?t.selectSumo(e):{status:-1,message:"未加载OpenDrive地图"},fe=async e=>t?t.unselectSumo(e):{status:-1,message:"未加载OpenDrive地图"},we=async e=>t?await t.geometrySearch(e):{status:-1,message:"未加载OpenDrive地图"},ve=async e=>t?await t.getSumoInfo(e):{status:-1,message:"未加载OpenDrive地图"},ye=async e=>t?await(t==null?void 0:t.splitLane(e)):{status:-1,message:"未加载OpenDrive地图"},Se=async()=>t?t==null?void 0:t.clearSplitLane():{status:-1,message:"未加载OpenDrive地图"},he=async e=>(o||(o=new Me.default(i)),await o.showSignalControlArea(e)),Oe=()=>{o==null||o.clearSignalControlArea()},ke=async e=>o?await o.locateSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Ce=async e=>o?await o.highlightSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Le=()=>o?o.resetHighlight():{status:-1,message:"未加载信号控制区"},O=T,w=A;return D({mapViewer:I,setLayerVisibility:H,setMapCenter:_,lookAt:B,setMapCamera:x,setMapZoomRange:N,requestCoordinateTransform:V,cancelCoordinateTransform:P,addOverlays:te,addMask:ae,removeMask:ne,showAllOverlays:ie,removeOverlaysByType:re,removeOverlaysById:se,removeAllOverlays:oe,showLaneNumber:E,clearLaneNumber:j,initializeAreaTool:z,calCrossIndicatorArea:Q,calRoadIndicatorArea:F,connectCarFlow:Z,disconnectCarFlow:K,handleHoloVehicleTraceData:U,clearHoloTrace:G,handleHoloSignalData:W,clearHoloSignal:X,setInterpolate:J,toggleTrafficInfo:Y,toggleTrafficObject:$,toggleVehicleInfo:ee,togglePause:R,updateQueueLength:ce,removeQueueLength:le,showOpenDriveFromServer:ue,showOpenDriveFromFile:me,clearOpenDrive:de,geometrySearchInOpenDrive:we,findSumoInOpenDrive:ge,selectSumoInOpenDrive:pe,unselectSumoInOpenDrive:fe,getSumoInfo:ve,splitOpenDriveLane:ye,clearSplitOpenDriveLane:Se,showSignalControlArea:he,clearSignalControlArea:Oe,locateSignalControlArea:ke,highlightSignalControlArea:Ce,resetHighlightSignalControlArea:Le}),(e,m)=>(a.openBlock(),a.createElementBlock("div",xe,[a.createElementVNode("div",{class:"gis-viewer-main",ref_key:"mapContainer",ref:p},[a.withDirectives(a.createElementVNode("div",Be,[a.createElementVNode("button",{style:{"margin-right":"10px"},onClick:q}," 开始记录 "),a.createElementVNode("button",{onClick:M},"下载日志")],512),[[a.vShow,f.value]])],512),(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(a.unref(b),(l,d)=>(a.openBlock(),a.createBlock(be.default,{key:d,"road-id":l.crossId,"cross-id":l.roadId,"map-point":l.mapPoint,"stop-line":l.stopLine,position:l.position,rotation:l.rotation,"lamp-status":l.lampStatus},null,8,["road-id","cross-id","map-point","stop-line","position","rotation","lamp-status"]))),128))]))}});exports.default=He;
@@ -18,6 +18,33 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
18
18
  queueLength: import("./utils/queue-length").default;
19
19
  openDriveRenderer: import("./utils/open-drive-renderer").default;
20
20
  signalControlAreaController: import("./utils/signal-control-area-controller").default;
21
+ appDataStore: import("pinia").Store<"appData", {
22
+ mapConfig: {};
23
+ saveTrackLog: boolean;
24
+ isSketching: boolean;
25
+ countdownPanels: import("../types").ISignalCountdownProps[];
26
+ }, {}, {}>;
27
+ countdownPanelInfos: import("vue").Ref<{
28
+ crossId: string;
29
+ roadId: string;
30
+ mapPoint: number[];
31
+ stopLine: number[][];
32
+ position: {
33
+ left: number;
34
+ top: number;
35
+ };
36
+ rotation: number;
37
+ lampStatus: {
38
+ uNumber?: number | undefined;
39
+ uColor?: string | undefined;
40
+ lNumber?: number | undefined;
41
+ lColor?: string | undefined;
42
+ sNumber?: number | undefined;
43
+ sColor?: string | undefined;
44
+ rNumber?: number | undefined;
45
+ rColor?: string | undefined;
46
+ };
47
+ }[]>;
21
48
  showLogDiv: import("vue").Ref<boolean>;
22
49
  mapViewer: import("vue").ComputedRef<__esri.MapView | __esri.SceneView>;
23
50
  startSaveTrackLog: () => void;
@@ -84,6 +111,90 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
84
111
  resetHighlightSignalControlArea: () => import("../types").IResult;
85
112
  props: any;
86
113
  emit: (event: "mapLoaded" | "markerClick" | "mapClick", ...args: any[]) => void;
114
+ SignalCountdownPanel: import("vue").DefineComponent<{
115
+ crossId: {
116
+ type: StringConstructor;
117
+ required: true;
118
+ };
119
+ roadId: {
120
+ type: StringConstructor;
121
+ required: true;
122
+ };
123
+ mapPoint: {
124
+ type: ArrayConstructor;
125
+ required: true;
126
+ };
127
+ stopLine: {
128
+ type: ArrayConstructor;
129
+ required: true;
130
+ };
131
+ position: {
132
+ type: ObjectConstructor;
133
+ required: true;
134
+ };
135
+ rotation: {
136
+ type: NumberConstructor;
137
+ required: true;
138
+ };
139
+ lampStatus: {
140
+ type: ObjectConstructor;
141
+ required: true;
142
+ };
143
+ }, {
144
+ props: any;
145
+ panelStyle: import("vue").ComputedRef<{
146
+ top: string;
147
+ left: string;
148
+ 'transform-origin': string;
149
+ transform: string;
150
+ }>;
151
+ uImage: import("vue").ComputedRef<string>;
152
+ uNumberStyle: import("vue").ComputedRef<{
153
+ color: string;
154
+ }>;
155
+ lImage: import("vue").ComputedRef<string>;
156
+ lNumberStyle: import("vue").ComputedRef<{
157
+ color: string;
158
+ }>;
159
+ sImage: import("vue").ComputedRef<string>;
160
+ sNumberStyle: import("vue").ComputedRef<{
161
+ color: string;
162
+ }>;
163
+ rImage: import("vue").ComputedRef<string>;
164
+ rNumberStyle: import("vue").ComputedRef<{
165
+ color: string;
166
+ }>;
167
+ getColorString: (color: string | undefined) => "red" | "yellow" | "lime" | "white";
168
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
169
+ crossId: {
170
+ type: StringConstructor;
171
+ required: true;
172
+ };
173
+ roadId: {
174
+ type: StringConstructor;
175
+ required: true;
176
+ };
177
+ mapPoint: {
178
+ type: ArrayConstructor;
179
+ required: true;
180
+ };
181
+ stopLine: {
182
+ type: ArrayConstructor;
183
+ required: true;
184
+ };
185
+ position: {
186
+ type: ObjectConstructor;
187
+ required: true;
188
+ };
189
+ rotation: {
190
+ type: NumberConstructor;
191
+ required: true;
192
+ };
193
+ lampStatus: {
194
+ type: ObjectConstructor;
195
+ required: true;
196
+ };
197
+ }>>, {}, {}>;
87
198
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("mapLoaded" | "markerClick" | "mapClick")[], "mapLoaded" | "markerClick" | "mapClick", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
88
199
  config: {
89
200
  type: StringConstructor;
@@ -1,5 +1,7 @@
1
+ import { ISignalCountdownProps } from '../../types';
1
2
  export declare const useAppDataStore: import("pinia").StoreDefinition<"appData", {
2
3
  mapConfig: {};
3
4
  saveTrackLog: boolean;
4
5
  isSketching: boolean;
6
+ countdownPanels: ISignalCountdownProps[];
5
7
  }, {}, {}>;
@@ -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})});exports.useAppDataStore=t;
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 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("@arcgis/core/geometry"),L=require("@arcgis/core/geometry/geometryEngineAsync"),w=require("@arcgis/core/geometry/support/webMercatorUtils"),p=require("@turf/bearing"),g=require("@turf/destination"),b=require("@turf/helpers"),S=require("@turf/length"),A=require("@turf/line-slice-along"),M=require("pako"),P=require("proj4");function y(a){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const t in a)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(a,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>a[t]})}}return e.default=a,Object.freeze(e)}const l=y(L),h=y(w),c=y(b);class i{static destinationWithPoint(e,t,n){const r=c.point([e.x,e.y]),s=g(r,n,t,{units:"meters"});return new f.Point({x:s.geometry.coordinates[0],y:s.geometry.coordinates[1]})}static angleOfLine(e){const t=e.paths[0],n=c.point(t[0]),r=c.point(t[t.length-1]);return p(n,r)}static extendLineInTowDir(e,t){const n=e.paths[0],r=c.point(n[0]),s=c.point(n[1]),o=p(s,r),u=g(r,t,o,{units:"meters"}),d=o>0?o-180:o+180,O=g(s,t,d,{units:"meters"});return new f.Polyline({paths:[[u.geometry.coordinates,O.geometry.coordinates]]})}static async getIntersectPointOfTwoLines(e,t){const n=await l.intersectLinesToPoints(e,t);if(n.length)return n[0]}static async getIntersectPointsOfStopLineAndLane(e,t,n){let r=await i.getIntersectPointOfLineAndPolygon(e,t);if(await i.pointDistance(r)<3&&n){for(const s of n)if(r=await i.getIntersectPointOfLineAndPolygon(e,t,s),await i.pointDistance(r)>2.5){const o=new f.Polyline({paths:[r]});return(await i.getOffsetLine(o,-s)).paths[0]}}else return r;return[]}static async pointDistance(e){if(e.length<2)return 0;const t=new f.Polyline({paths:[e]});return await l.geodesicLength(t,"meters")}static async getIntersectPointOfLineAndPolygon(e,t,n=0){n!==0&&(e=await i.getOffsetLine(e,n));const r=await l.intersect(e,t);if(r instanceof f.Polyline){const s=r.paths[0],o=s[0],u=s[s.length-1];return[o,u]}return[]}static async getOffsetLine(e,t){const n=h.geographicToWebMercator(e),r=await l.offset(n,t,"meters");return h.webMercatorToGeographic(r,!1)}static unzip(e){try{const t=[],n=e.split("");for(let s=0;s<n.length;s++){const o=n[s];t.push(o.charCodeAt(0))}const r=new Uint8Array(t);return M.inflate(r,{to:"string"})}catch{console.log(`非压缩内容: ${e}`)}}static getStdVecEntries(e,t=!1){const n=new Array(e.size());for(let r=0;r<e.size();r++)n[r]=e.get(r);return t&&e.delete(),n}static getStdMapEntries(e){const t=[];for(const n of i.getStdMapKeys(e))t.push([n,e.get(n)]);return t}static getStdMapKeys(e,t=!1){const n=[],r=e.keys();for(let s=0;s<r.size();s++)n.push(r.get(s));return r.delete(),t&&e.delete(),n}static setGeoData(e,t,n){i.geoReference=e,i.xOffset=t,i.yOffset=n}static transformLineProjection(e){try{return e.map(t=>P(i.geoReference).inverse([t[0]-i.xOffset,t[1]-i.yOffset]))}catch{return console.error("OpenDrive坐标转换为WGS84坐标失败",i.geoReference),e}}static transformPointProjection(e){try{return P(i.geoReference).inverse([e[0]-i.xOffset,e[1]-i.yOffset])}catch{return console.error("OpenDrive坐标转换为WGS84坐标失败",i.geoReference),e}}static pointsEqual(e,t){return Math.abs(e[0]-t[0])<Number.EPSILON&&Math.abs(e[1]-t[1])<Number.EPSILON}static getExtensionLine(e,t,n){const r=c.point(e),s=c.point(t),o=p(r,s);return g(s,n,o,{units:"meters"}).geometry.coordinates}static isCoordinateValid(e){return typeof e.latitude=="string"&&(e.latitude=Number(e.latitude)),typeof e.longitude=="string"&&(e.longitude=Number(e.longitude)),e.latitude!==null&&e.longitude!==null&&!isNaN(e.latitude)&&!isNaN(e.longitude)&&e.latitude!==0&&e.longitude!==0}static getCenterPointInLine(e){const t=c.lineString(e),n=S(t,{units:"meters"});return A(t,0,n/2,{units:"meters"}).geometry.coordinates[1]}}exports.default=i;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("@arcgis/core/geometry"),L=require("@arcgis/core/geometry/geometryEngineAsync"),w=require("@arcgis/core/geometry/support/webMercatorUtils"),p=require("@turf/bearing"),g=require("@turf/destination"),b=require("@turf/helpers"),S=require("@turf/length"),A=require("@turf/line-slice-along"),M=require("pako"),h=require("proj4");function y(a){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const t in a)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(a,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>a[t]})}}return e.default=a,Object.freeze(e)}const l=y(L),P=y(w),c=y(b);class i{static destinationWithPoint(e,t,n){const r=c.point([e.x,e.y]),s=g(r,n,t,{units:"meters"});return new f.Point({x:s.geometry.coordinates[0],y:s.geometry.coordinates[1]})}static angleOfLine(e){const t=e.paths[0],n=c.point(t[0]),r=c.point(t[t.length-1]);return p(n,r)}static extendLineInTowDir(e,t){const n=e.paths[0],r=c.point(n[0]),s=c.point(n[1]),o=p(s,r),u=g(r,t,o,{units:"meters"}),d=o>0?o-180:o+180,O=g(s,t,d,{units:"meters"});return new f.Polyline({paths:[[u.geometry.coordinates,O.geometry.coordinates]]})}static async getIntersectPointOfTwoLines(e,t){const n=await l.intersectLinesToPoints(e,t);if(n.length)return n[0]}static async getIntersectPointsOfStopLineAndLane(e,t,n){let r=await i.getIntersectPointOfLineAndPolygon(e,t);if(await i.pointDistance(r)<3&&n){for(const s of n)if(r=await i.getIntersectPointOfLineAndPolygon(e,t,s),await i.pointDistance(r)>2.5){const o=new f.Polyline({paths:[r]});return(await i.getOffsetLine(o,-s)).paths[0]}}else return r;return[]}static async pointDistance(e){if(e.length<2)return 0;const t=new f.Polyline({paths:[e]});return await l.geodesicLength(t,"meters")}static async getIntersectPointOfLineAndPolygon(e,t,n=0){n!==0&&(e=await i.getOffsetLine(e,n));const r=await l.intersect(e,t);if(r instanceof f.Polyline){const s=r.paths[0],o=s[0],u=s[s.length-1];return[o,u]}return[]}static async getOffsetLine(e,t){const n=P.geographicToWebMercator(e),r=await l.offset(n,t,"meters");return P.webMercatorToGeographic(r,!1)}static unzip(e){try{const t=[],n=e.split("");for(let s=0;s<n.length;s++){const o=n[s];t.push(o.charCodeAt(0))}const r=new Uint8Array(t);return M.inflate(r,{to:"string"})}catch{console.log(`非压缩内容: ${e}`)}}static getStdVecEntries(e,t=!1){const n=new Array(e.size());for(let r=0;r<e.size();r++)n[r]=e.get(r);return t&&e.delete(),n}static getStdMapEntries(e){const t=[];for(const n of i.getStdMapKeys(e))t.push([n,e.get(n)]);return t}static getStdMapKeys(e,t=!1){const n=[],r=e.keys();for(let s=0;s<r.size();s++)n.push(r.get(s));return r.delete(),t&&e.delete(),n}static setGeoData(e,t,n){i.geoReference=e,i.xOffset=t,i.yOffset=n}static transformLineProjection(e){try{return e.map(t=>h(i.geoReference).inverse([t[0]-i.xOffset,t[1]-i.yOffset]))}catch{return console.error("OpenDrive坐标转换为WGS84坐标失败",i.geoReference),e}}static transformPointProjection(e){try{return h(i.geoReference).inverse([e[0]-i.xOffset,e[1]-i.yOffset])}catch{return console.error("OpenDrive坐标转换为WGS84坐标失败",i.geoReference),e}}static pointsEqual(e,t){return Math.abs(e[0]-t[0])<Number.EPSILON&&Math.abs(e[1]-t[1])<Number.EPSILON}static getExtensionLine(e,t,n){const r=c.point(e),s=c.point(t),o=p(r,s);return g(s,n,o,{units:"meters"}).geometry.coordinates}static isCoordinateValid(e){return typeof e.latitude=="string"&&(e.latitude=Number(e.latitude)),typeof e.longitude=="string"&&(e.longitude=Number(e.longitude)),e.latitude!==null&&e.longitude!==null&&!isNaN(e.latitude)&&!isNaN(e.longitude)&&e.latitude!==0&&e.longitude!==0}static getCenterPointInLine(e){const t=c.lineString(e),n=S(t,{units:"meters"})/2;return A(t,0,n,{units:"meters"}).geometry.coordinates[1]}}exports.default=i;
@@ -0,0 +1,85 @@
1
+ declare const _sfc_main: import("vue").DefineComponent<{
2
+ crossId: {
3
+ type: StringConstructor;
4
+ required: true;
5
+ };
6
+ roadId: {
7
+ type: StringConstructor;
8
+ required: true;
9
+ };
10
+ mapPoint: {
11
+ type: ArrayConstructor;
12
+ required: true;
13
+ };
14
+ stopLine: {
15
+ type: ArrayConstructor;
16
+ required: true;
17
+ };
18
+ position: {
19
+ type: ObjectConstructor;
20
+ required: true;
21
+ };
22
+ rotation: {
23
+ type: NumberConstructor;
24
+ required: true;
25
+ };
26
+ lampStatus: {
27
+ type: ObjectConstructor;
28
+ required: true;
29
+ };
30
+ }, {
31
+ props: any;
32
+ panelStyle: import("vue").ComputedRef<{
33
+ top: string;
34
+ left: string;
35
+ 'transform-origin': string;
36
+ transform: string;
37
+ }>;
38
+ uImage: import("vue").ComputedRef<string>;
39
+ uNumberStyle: import("vue").ComputedRef<{
40
+ color: string;
41
+ }>;
42
+ lImage: import("vue").ComputedRef<string>;
43
+ lNumberStyle: import("vue").ComputedRef<{
44
+ color: string;
45
+ }>;
46
+ sImage: import("vue").ComputedRef<string>;
47
+ sNumberStyle: import("vue").ComputedRef<{
48
+ color: string;
49
+ }>;
50
+ rImage: import("vue").ComputedRef<string>;
51
+ rNumberStyle: import("vue").ComputedRef<{
52
+ color: string;
53
+ }>;
54
+ getColorString: (color: string | undefined) => "red" | "yellow" | "lime" | "white";
55
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
56
+ crossId: {
57
+ type: StringConstructor;
58
+ required: true;
59
+ };
60
+ roadId: {
61
+ type: StringConstructor;
62
+ required: true;
63
+ };
64
+ mapPoint: {
65
+ type: ArrayConstructor;
66
+ required: true;
67
+ };
68
+ stopLine: {
69
+ type: ArrayConstructor;
70
+ required: true;
71
+ };
72
+ position: {
73
+ type: ObjectConstructor;
74
+ required: true;
75
+ };
76
+ rotation: {
77
+ type: NumberConstructor;
78
+ required: true;
79
+ };
80
+ lampStatus: {
81
+ type: ObjectConstructor;
82
+ required: true;
83
+ };
84
+ }>>, {}, {}>;
85
+ export default _sfc_main;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./signal-countdown-panel.vue2.js");require("./signal-countdown-panel.vue3.js");const t=require("../../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-93496d9c"]]);exports.default=u;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),g={key:0,class:"signal-countdown-container"},S=["src"],v={key:1,class:"signal-countdown-container"},y=["src"],N={key:2,class:"signal-countdown-container"},h=["src"],w={key:3,class:"signal-countdown-container"},V=["src"],C=e.defineComponent({__name:"signal-countdown-panel",props:{crossId:{},roadId:{},mapPoint:{},stopLine:{},position:{},rotation:{},lampStatus:{}},setup(n){const t=n,s=e.computed(()=>({top:`${t.position.top}px`,left:`${t.position.left}px`,"transform-origin":"bottom center",transform:`translateX(-50%) translateY(-100%) rotate(${t.rotation}deg)`})),a=e.computed(()=>`/GisViewerAssets/Images/SignalLamp/u-${t.lampStatus.uColor}.png`),r=e.computed(()=>({color:l(t.lampStatus.uColor)})),c=e.computed(()=>`/GisViewerAssets/Images/SignalLamp/l-${t.lampStatus.lColor}.png`),i=e.computed(()=>({color:l(t.lampStatus.lColor)})),m=e.computed(()=>`/GisViewerAssets/Images/SignalLamp/s-${t.lampStatus.sColor}.png`),u=e.computed(()=>({color:l(t.lampStatus.sColor)})),d=e.computed(()=>`/GisViewerAssets/Images/SignalLamp/r-${t.lampStatus.rColor}.png`),p=e.computed(()=>({color:l(t.lampStatus.rColor)})),l=o=>{switch(o){case"red":return"red";case"yellow":return"yellow";case"green":return"lime";default:return"white"}};return(o,E)=>(e.openBlock(),e.createElementBlock("div",{class:"signal-countdown-panel",style:e.normalizeStyle(s.value)},[o.lampStatus.uColor?(e.openBlock(),e.createElementBlock("div",g,[e.createElementVNode("div",{class:"signal-countdown-number",style:e.normalizeStyle(r.value)},e.toDisplayString(o.lampStatus.uNumber),5),e.createElementVNode("div",null,[e.createElementVNode("img",{src:a.value,width:"20px",height:"20px"},null,8,S)])])):e.createCommentVNode("",!0),o.lampStatus.lColor?(e.openBlock(),e.createElementBlock("div",v,[e.createElementVNode("div",{class:"signal-countdown-number",style:e.normalizeStyle(i.value)},e.toDisplayString(o.lampStatus.lNumber),5),e.createElementVNode("div",null,[e.createElementVNode("img",{src:c.value,width:"20px",height:"20px"},null,8,y)])])):e.createCommentVNode("",!0),o.lampStatus.sColor?(e.openBlock(),e.createElementBlock("div",N,[e.createElementVNode("div",{class:"signal-countdown-number",style:e.normalizeStyle(u.value)},e.toDisplayString(o.lampStatus.sNumber),5),e.createElementVNode("div",null,[e.createElementVNode("img",{src:m.value,width:"20px",height:"20px"},null,8,h)])])):e.createCommentVNode("",!0),o.lampStatus.rColor!==void 0?(e.openBlock(),e.createElementBlock("div",w,[e.createElementVNode("div",{class:"signal-countdown-number",style:e.normalizeStyle(p.value)},e.toDisplayString(o.lampStatus.rNumber),5),e.createElementVNode("div",null,[e.createElementVNode("img",{src:d.value,width:"20px",height:"20px"},null,8,V)])])):e.createCommentVNode("",!0)],4))}});exports.default=C;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="";exports.default=e;
@@ -1,9 +1,22 @@
1
1
  import SignalHoloFlow from './signal-holo-flow';
2
2
  export default class LSRSignalHoloFlow extends SignalHoloFlow {
3
3
  private stopLineLayer;
4
+ private store;
4
5
  constructor(view: __esri.MapView | __esri.SceneView);
5
6
  private stopLineMap;
6
7
  initializeLayer(): Promise<void>;
7
8
  handleSignalData(data: any): Promise<void>;
8
9
  clearSignal(): void;
10
+ /**
11
+ * 从停止线坐标计算面板位置
12
+ * @param coordinates
13
+ * @returns
14
+ */
15
+ private getPanelPoint;
16
+ /**
17
+ * 从停止线坐标计算面板旋转角度
18
+ * @param coordinates
19
+ * @returns
20
+ */
21
+ private getPanelRotation;
9
22
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p=require("@arcgis/core/Graphic"),d=require("@arcgis/core/layers/GraphicsLayer"),h=require("../common-utils.js"),y=require("./signal-holo-flow.js");class L extends y.default{constructor(e){super(e),this.stopLineLayer=new d,this.stopLineMap=new Map,this.view.map.add(this.stopLineLayer)}async initializeLayer(){var o,n;console.time("初始化停止线图层");let e=(n=(o=this.mapConfig.holoFlow)==null?void 0:o.signal)==null?void 0:n.stopLineLayer;if(!e)return;e=this.mapConfig.assetsRoot+"/"+e,(await(await fetch(e)).json()).features.forEach(t=>{const{roadId:s,nodeId:r}=t.properties,{coordinates:l}=t.geometry,c=this.stopLineMap.get(r);c?c.set(s,l):this.stopLineMap.set(r,new Map([[s,l]]))}),console.timeEnd("初始化停止线图层")}async handleSignalData(e){const{crossId:a}=e,i=this.stopLineMap.get(a);i&&i.forEach((o,n)=>{const t=h.default.getCenterPointInLine(o);console.log("centerPoint",t);const s=new p({geometry:{type:"point",x:t[0],y:t[1],spatialReference:this.view.spatialReference},symbol:{type:"simple-marker",style:"circle",color:[0,0,255],size:5}});this.stopLineLayer.add(s)})}clearSignal(){this.stopLineLayer.removeAll()}}exports.default=L;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("@arcgis/core/core/reactiveUtils"),f=require("@arcgis/core/geometry"),P=require("@arcgis/core/layers/GraphicsLayer"),g=require("@turf/bearing"),y=require("@turf/destination"),m=require("@turf/helpers"),w=require("../../stores/index.js"),L=require("../common-utils.js"),S=require("./signal-holo-flow.js");function d(p){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(p){for(const n in p)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(p,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:()=>p[n]})}}return t.default=p,Object.freeze(t)}const v=d(h),u=d(m);class M extends S.default{constructor(t){super(t),this.stopLineLayer=new P,this.store=w.default.useAppDataStore,this.stopLineMap=new Map,this.view.map.add(this.stopLineLayer)}async initializeLayer(){var a,c;console.time("初始化停止线图层");let t=(c=(a=this.mapConfig.holoFlow)==null?void 0:a.signal)==null?void 0:c.stopLineLayer;if(!t)return;t=this.mapConfig.assetsRoot+"/"+t,(await(await fetch(t)).json()).features.forEach(e=>{const{roadId:s,nodeId:o}=e.properties,{coordinates:r}=e.geometry,l=this.stopLineMap.get(o);l?l.set(s,r):this.stopLineMap.set(o,new Map([[s,r]]))}),console.timeEnd("初始化停止线图层"),v.watch(()=>this.view.extent,()=>{for(const e of this.store.countdownPanels){const{mapPoint:s,stopLine:o}=e,r=this.view.toScreen({type:"point",x:s[0],y:s[1]});e.position.left=r.x,e.position.top=r.y;const l=this.getPanelRotation(o);e.rotation=l}})}async handleSignalData(t){const{crossId:n,roadId:i,lampStatus:a}=t,c=this.stopLineMap.get(n);if(!c)return;const e=c.get(i);if(!e)return;const s=this.store.countdownPanels.find(o=>o.crossId===n&&o.roadId===i);if(s)s.lampStatus=a;else{const o=this.getPanelPoint(e),r=this.view.toScreen({type:"point",x:o[0],y:o[1]}),l=this.getPanelRotation(e);this.store.countdownPanels.push({crossId:n,roadId:i,mapPoint:o,stopLine:e,position:{left:r.x,top:r.y},rotation:l,lampStatus:a})}}clearSignal(){this.stopLineLayer.removeAll()}getPanelPoint(t){const n=L.default.getCenterPointInLine(t),i=t[0],a=t[t.length-1];let e=g(u.point(i),u.point(a))-90;return e<-180&&(e+=360),y(u.point(n),1,e,{units:"meters"}).geometry.coordinates}getPanelRotation(t){const n=t[0],i=new f.Point({x:n[0],y:n[1],spatialReference:this.view.spatialReference}),a=this.view.toScreen(i),c=t[t.length-1],e=new f.Point({x:c[0],y:c[1],spatialReference:this.view.spatialReference}),s=this.view.toScreen(e),o=s.x-a.x,r=s.y-a.y;return Math.atan2(r,o)*(180/Math.PI)}}exports.default=M;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("@arcgis/core/Graphic"),p=require("@arcgis/core/layers/GraphicsLayer"),g=require("../../stores/index.js");class m{constructor(i){this.appDataStore=g.default.useAppDataStore,this.logTable=[["uuid","ptcId","plateno","timestamp","localTimestamp","timestamp_str","speed","laneNo","objHeight","objLength","latitude","longitude","ptcType","vehicleType","vehicleColor","plateColor","sbdm","heading","fixAngle","roadLayer","status","step","receiveTimestamp"]],this.needInterpolate=!0,this.isPaused=!1,this.showVehiclePlate=!1,this.showGroundVehicle=!0,this.showElevatedVehicle=!0,this.historyPositionMap=new Map,this.vehicleObjectMap=new Map,this.view=i,this.mapConfig=JSON.parse(JSON.stringify(this.appDataStore.mapConfig)),this.vehicleLayer=new p({id:"vehicleLayer"}),this.view.map.add(this.vehicleLayer),this.rafSignal=requestAnimationFrame(()=>this.render())}getLog(){return this.logTable}async init(){}addVehicles(i){return new Promise(e=>{if(this.isPaused){e();return}const t=i.map(s=>{const{vehicleId:r,heading:a,localTimestamp:h}=s,l=Number(s.x),n=Number(s.y);this.historyPositionMap.set(r,[{pos:[l,n,0],heading:a,time:h}]);const o=new c({geometry:{type:"point",x:l,y:n},attributes:{...s,type:"trackVehicle"},symbol:this.createCIMSymbol(s)});return o.visible=!1,this.vehicleObjectMap.set(r,{graphic:o,data:s,waitForDelete:!1,isMoving:!1}),o});this.vehicleLayer.addMany(t),e()})}updateVehicles(i){return new Promise(e=>{if(this.isPaused){e();return}const t=[];i.forEach(s=>{const{vehicleId:r,heading:a,localTimestamp:h}=s,l=Number(s.x),n=Number(s.y),o=this.vehicleObjectMap.get(r);o?(o.data=s,o.graphic.attributes={...s,type:"trackVehicle"},this.historyPositionMap.get(r).push({pos:[l,n,0],heading:a,time:h})):t.push(s)}),this.addVehicles(t),e()})}deleteVehicles(i){this.isPaused||i.forEach(e=>{const t=this.vehicleObjectMap.get(e);t&&(t.waitForDelete=!0)})}clearVehicles(){this.vehicleLayer.removeAll(),this.vehicleObjectMap.clear(),this.historyPositionMap.clear()}toggleGroundVehicle(i){this.showGroundVehicle=i}toggleElevatedVehicle(i){this.showElevatedVehicle=i}toggleTrafficInfo(i){i.name==="vehiclePlate"&&(this.showVehiclePlate=i.visible)}togglePause(i){this.isPaused=i,this.isPaused?cancelAnimationFrame(this.rafSignal):this.rafSignal=requestAnimationFrame(()=>this.render())}updatePanelContent(i){console.log(i)}setInterpolate(i){this.needInterpolate=i}render(){this.isPaused||this.vehicleObjectMap.forEach((i,e)=>{this.updatePosition(e)}),this.rafSignal=requestAnimationFrame(()=>this.render())}updatePosition(i){const e=this.historyPositionMap.get(i),t=this.vehicleObjectMap.get(i);if(!e||!t||!t.isMoving&&e.length<=2)return;t.isMoving=!0,(t.graphic.getAttribute("roadLayer")||"1")==="1"?t.graphic.visible=this.showGroundVehicle:t.graphic.visible=this.showElevatedVehicle,t.segmentStartTime||(t.segmentStartTime=Date.now(),t.segmentTotalTime=e[1].time-e[0].time);const r=Date.now()-t.segmentStartTime,a=Math.min(1,r/t.segmentTotalTime);if(a===1)if(e.shift(),e.length===1){t.waitForDelete?(this.vehicleLayer.remove(t.graphic),this.vehicleObjectMap.delete(i),this.historyPositionMap.delete(i)):(t.segmentStartTime=void 0,t.segmentTotalTime=void 0,t.graphic.visible=!1,t.isMoving=!1);return}else t.segmentStartTime=Date.now(),t.segmentTotalTime=e[1].time-e[0].time,(e[1].heading>=270&&e[0].heading<=90||e[1].heading<=90&&e[0].heading>=270)&&(e[1].heading>e[0].heading?e[0].heading+=360:e[1].heading+=360),t.graphic.geometry={type:"point",x:e[0].pos[0],y:e[0].pos[1]};else{const h=e[0].pos[0]+(e[1].pos[0]-e[0].pos[0])*a,l=e[0].pos[1]+(e[1].pos[1]-e[0].pos[1])*a,n=e[0].heading+(e[1].heading-e[0].heading)*a;t.graphic.geometry={type:"point",x:h,y:l},t.data.heading=n,t.graphic.symbol=this.createCIMSymbol(t.data)}}createCIMSymbol(i){const e=this.getPlateFontColor(i.plateColor);return{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:"$feature.showName",returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:this.showVehiclePlate,size:32,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-8,ymin:-8,xmax:8,ymax:8},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:4,horizontalAlignment:"Center",offsetX:0,offsetY:8,haloSize:1,haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:e.backgroundColor}]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:e.fillColor}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:30,rotation:i.heading,rotateClockwise:!0,textureFilter:"Picture",url:`${this.mapConfig.assetsRoot}Images/${this.getCarPic(i.vehicleColor,i.speed)}`}]}}}}getCarPic(i,e){if(this.view.scale>=1e3)return e?e<=4.2?"point_red.png":e<=8.4?"point_yellow.png":"point_green.png":"point_green.png";let t="grey";switch(typeof i=="string"&&(i=i.toLowerCase()),i){case"a":case 1:t="white";break;case"b":case 2:t="grey";break;case"c":case 3:t="yellow";break;case"d":case 4:t="pink";break;case"e":case 5:t="red";break;case"f":case 10:t="purple";break;case"g":case 6:t="green";break;case"h":case 7:t="blue";break;case"i":case 8:t="brown";break;case"j":case 9:t="black";break}return"/car/"+t+".png"}getPlateFontColor(i){let e=[255,255,255,255],t=[169,169,169,255];switch(i){case 0:e=[0,0,0,255],t=[255,255,255,255];break;case 1:e=[0,0,0,255],t=[244,164,96,255];break;case 2:e=[255,255,255,255],t=[65,105,225,255];break;case 3:e=[255,255,255,255],t=[0,0,0,255];break;case 15:e=[244,164,96,255],t=[0,250,154,255];break;case 16:e=[0,0,0,255],t=[0,250,154,255];break}return{fillColor:e,backgroundColor:t}}}exports.default=m;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("@arcgis/core/Graphic"),p=require("@arcgis/core/layers/GraphicsLayer"),g=require("../../stores/index.js");class m{constructor(i){this.appDataStore=g.default.useAppDataStore,this.logTable=[["uuid","ptcId","plateno","timestamp","localTimestamp","timestamp_str","speed","laneNo","objHeight","objLength","latitude","longitude","ptcType","vehicleType","vehicleColor","plateColor","sbdm","heading","fixAngle","roadLayer","status","step","receiveTimestamp"]],this.needInterpolate=!0,this.isPaused=!1,this.showVehiclePlate=!1,this.showGroundVehicle=!0,this.showElevatedVehicle=!0,this.historyPositionMap=new Map,this.vehicleObjectMap=new Map,this.view=i,this.mapConfig=JSON.parse(JSON.stringify(this.appDataStore.mapConfig)),this.vehicleLayer=new p({id:"vehicleLayer"}),this.view.map.add(this.vehicleLayer),this.rafSignal=requestAnimationFrame(()=>this.render())}getLog(){return this.logTable}async init(){}addVehicles(i){return new Promise(t=>{if(this.isPaused){t();return}const e=i.map(s=>{const{vehicleId:o,heading:a,localTimestamp:h}=s,l=Number(s.x),n=Number(s.y);this.historyPositionMap.set(o,[{pos:[l,n,0],heading:a,time:h}]);const r=new c({geometry:{type:"point",x:l,y:n},attributes:{...s,type:"trackVehicle"},symbol:this.createCIMSymbol(s)});return r.visible=!1,this.vehicleObjectMap.set(o,{graphic:r,data:s,waitForDelete:!1,isMoving:!1}),r});this.vehicleLayer.addMany(e),t()})}updateVehicles(i){return new Promise(t=>{if(this.isPaused){t();return}const e=[];i.forEach(s=>{const{vehicleId:o,heading:a,localTimestamp:h}=s,l=Number(s.x),n=Number(s.y),r=this.vehicleObjectMap.get(o);r?(r.data=s,r.graphic.attributes={...s,type:"trackVehicle"},this.historyPositionMap.get(o).push({pos:[l,n,0],heading:a,time:h})):e.push(s)}),this.addVehicles(e),t()})}deleteVehicles(i){this.isPaused||i.forEach(t=>{const e=this.vehicleObjectMap.get(t);e&&(e.waitForDelete=!0)})}clearVehicles(){this.vehicleLayer.removeAll(),this.vehicleObjectMap.clear(),this.historyPositionMap.clear()}toggleGroundVehicle(i){this.showGroundVehicle=i}toggleElevatedVehicle(i){this.showElevatedVehicle=i}toggleTrafficInfo(i){i.name==="vehiclePlate"&&(this.showVehiclePlate=i.visible)}togglePause(i){this.isPaused=i,this.isPaused?cancelAnimationFrame(this.rafSignal):this.rafSignal=requestAnimationFrame(()=>this.render())}updatePanelContent(i){console.log(i)}setInterpolate(i){this.needInterpolate=i}render(){this.isPaused||this.vehicleObjectMap.forEach((i,t)=>{this.updatePosition(t)}),this.rafSignal=requestAnimationFrame(()=>this.render())}updatePosition(i){const t=this.historyPositionMap.get(i),e=this.vehicleObjectMap.get(i);if(!t||!e||!e.isMoving&&t.length<=2)return;e.isMoving=!0,(e.graphic.getAttribute("roadLayer")||"1")==="1"?e.graphic.visible=this.showGroundVehicle:e.graphic.visible=this.showElevatedVehicle,e.segmentStartTime||(e.segmentStartTime=Date.now(),e.segmentTotalTime=t[1].time-t[0].time);const o=Date.now()-e.segmentStartTime,a=Math.min(1,o/e.segmentTotalTime);if(a===1)if(t.shift(),t.length===1){e.waitForDelete?(this.vehicleLayer.remove(e.graphic),this.vehicleObjectMap.delete(i),this.historyPositionMap.delete(i)):(e.segmentStartTime=void 0,e.segmentTotalTime=void 0,e.graphic.visible=!1,e.isMoving=!1);return}else e.segmentStartTime=Date.now(),e.segmentTotalTime=t[1].time-t[0].time,(t[1].heading>=270&&t[0].heading<=90||t[1].heading<=90&&t[0].heading>=270)&&(t[1].heading>t[0].heading?t[0].heading+=360:t[1].heading+=360),e.graphic.geometry={type:"point",x:t[0].pos[0],y:t[0].pos[1]};else{const h=t[0].pos[0]+(t[1].pos[0]-t[0].pos[0])*a,l=t[0].pos[1]+(t[1].pos[1]-t[0].pos[1])*a,n=t[0].heading+(t[1].heading-t[0].heading)*a;e.graphic.geometry={type:"point",x:h,y:l},e.data.heading=n,e.graphic.symbol=this.createCIMSymbol(e.data)}}createCIMSymbol(i){const t=this.getPlateFontColor(i.plateColor),e=this.getCarPic(i.vehicleColor,i.speed);return{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:"$feature.showName",returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:this.showVehiclePlate,size:32,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-8,ymin:-8,xmax:8,ymax:8},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:4,horizontalAlignment:"Center",offsetX:0,offsetY:8,haloSize:1,haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:t.backgroundColor}]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:t.fillColor}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:e.size,rotation:i.heading,rotateClockwise:!0,textureFilter:"Picture",url:`${this.mapConfig.assetsRoot}Images/${e.pic}`}]}}}}getCarPic(i,t){if(this.view.scale>=1e3){let e="point_green.png";return t&&(t<=4.2?e="point_red.png":t<=8.4?e="point_yellow.png":e="point_green.png"),{pic:e,size:15}}else{let e="grey";switch(typeof i=="string"&&(i=i.toLowerCase()),i){case"a":case 1:e="white";break;case"b":case 2:e="grey";break;case"c":case 3:e="yellow";break;case"d":case 4:e="pink";break;case"e":case 5:e="red";break;case"f":case 10:e="purple";break;case"g":case 6:e="green";break;case"h":case 7:e="blue";break;case"i":case 8:e="brown";break;case"j":case 9:e="black";break}return{pic:"/car/"+e+".png",size:30}}}getPlateFontColor(i){let t=[255,255,255,255],e=[169,169,169,255];switch(i){case 0:t=[0,0,0,255],e=[255,255,255,255];break;case 1:t=[0,0,0,255],e=[244,164,96,255];break;case 2:t=[255,255,255,255],e=[65,105,225,255];break;case 3:t=[255,255,255,255],e=[0,0,0,255];break;case 15:t=[244,164,96,255],e=[0,250,154,255];break;case 16:t=[0,0,0,255],e=[0,250,154,255];break}return{fillColor:t,backgroundColor:e}}}exports.default=m;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const P=require("@arcgis/core/Basemap"),b=require("@arcgis/core/config"),q=require("@arcgis/core/core/reactiveUtils"),g=require("@arcgis/core/geometry"),z=require("@arcgis/core/geometry/support/webMercatorUtils"),O=require("@arcgis/core/layers/GeoJSONLayer"),W=require("@arcgis/core/layers/TileLayer"),S=require("@arcgis/core/layers/WebTileLayer"),L=require("@arcgis/core/Map"),x=require("@arcgis/core/views/MapView"),R=require("@arcgis/core/views/SceneView"),H=require("@turf/destination"),I=require("@turf/helpers"),N=require("../stores/index.js"),_=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 t=Object.getOwnPropertyDescriptor(r,i);Object.defineProperty(e,i,t.get?t:{enumerable:!0,get:()=>r[i]})}}return e.default=r,Object.freeze(e)}const k=v(q),d=v(z),C=v(I);function T(r,e){return r&&(r.startsWith("http://")||r.startsWith("https://")?r:e+r)}class G{constructor(){this.mapConfig={},this.watchHandleMap=new Map,this.handleIndex=0,this.zoomWatchHandle=null}async initialize(e){const i=N.default.useAppDataStore,t=JSON.parse(JSON.stringify(i.mapConfig));this.mapConfig=t;const{container:o,markerClickCallback:n,mapClickCallback:f}=e;b.assetsPath=`${t.assetsRoot}/ArcgisAssets`,b.fontsUrl=`${t.assetsRoot}/fonts`,b.apiKey="AAPKf5a3e1044d7a4faeb3b1ec7060f5c68equIrP2KbRyL-t_b40Kk4GTWUQ1BFCyttvyQPQnWpFmBd7kp9gkrVihjfmcKBwxjW";const c=new L;if((t==null?void 0:t.mapOptions.mode.toLowerCase())==="2d"?this.view=new x({map:c,container:o,...t.mapOptions}):this.view=new R({map:c,container:o,environment:{atmosphereEnabled:!0,lighting:{type:"virtual"}},...t==null?void 0:t.mapOptions}),this.view.popup.visibleElements={closeButton:!0,collapseButton:!1,actionBar:!1,featureNavigation:!1},this.view.popup.dockOptions={buttonEnabled:!1,breakpoint:!1},this.view.on("click",async s=>{var y,M;if(f){let a=s.mapPoint;a.spatialReference.isWebMercator&&(a=d.webMercatorToGeographic(a)),f([a.x,a.y],[s.screenPoint.x,s.screenPoint.y],s)}if(this.view.type==="3d"){const a=this.view.camera;if(this.view.spatialReference.isWebMercator){const u=d.webMercatorToGeographic(a.position),p={heading:a.heading,tilt:a.tilt,position:u.toJSON()};console.log(p),(y=navigator.clipboard)==null||y.writeText(JSON.stringify(p))}else console.log(a.toJSON());console.log(this.view.zoom,this.view.scale)}else{let a=this.view.center;this.view.spatialReference.isWebMercator&&(a=d.webMercatorToGeographic(a)),console.log({center:a.toJSON(),zoom:this.view.zoom,scale:this.view.scale})}const l=(M=(await this.view.hitTest(s)).results)==null?void 0:M.filter(a=>a.type==="graphic");l.length>0&&l.forEach(a=>{var p;const u=a.graphic;(p=u.attributes)!=null&&p.type&&n&&n(u.attributes.type,u.attributes.id,u.attributes,s)})}),t!=null&&t.baseLayers?t.baseLayers.forEach(s=>{const h=T(s.url,t.assetsRoot);switch(s.type.toLowerCase()){case"webTile".toLowerCase():{const l=new S({urlTemplate:h,...s.options});c.add(l);break}case"tile":{const l=new W({url:h,...s.options});c.add(l);break}case"customWMTS".toLowerCase():{const l=new _.default({urlTemplate:h,...s.options});c.add(l);break}case"arcgis":{const l=new P(s.options);c.basemap=l;break}}}):c.basemap=new P({style:{id:"arcgis/light-gray",language:"zh-CN"}}),t!=null&&t.hdLayers){const s=t.hdLayers.map(h=>new O({url:T(h.url,t.assetsRoot),...h.options,title:h.options.id}));c.addMany(s)}this.view.ui.remove("attribution"),this.view.ui.add("compass","top-left"),await this.view.when();const w=this.mapConfig.camera;let m;if(this.view.type==="2d"){let s=this.view.center;this.view.spatialReference.isWebMercator&&(s=d.webMercatorToGeographic(s)),m={center:[s.x,s.y],zoom:this.view.zoom}}else{let s=this.view.camera.position;this.view.spatialReference.isWebMercator&&(s=d.webMercatorToGeographic(s)),m={position:s,heading:this.view.camera.heading,tilt:this.view.camera.tilt}}return w?w.home=m:this.mapConfig.camera={home:m},this.view}setLayerVisibility(e){const{id:i,visible:t}=e,o=this.view.map.findLayerById(i);return o?(o.visible=t,{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){case"point":e.target=new g.Point(e.target);break;case"polyline":e.target=new g.Polyline(e.target);break;case"polygon":e.target=new g.Polygon(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,t=e.heading||0;if(i===0)await this.view.goTo({position:{x:e.center[0],y:e.center[1],z:e.height},heading:t,tilt:0},{duration:(e.duration||2)*1e3});else{const o=Math.tan(i*Math.PI/180)*e.height,n=H(C.point(e.center),o,t+180,{units:"meters"});await this.view.goTo({position:{x:n.geometry.coordinates[0],y:n.geometry.coordinates[1],z:e.height},heading:t,tilt:i},{duration:(e.duration||2)*1e3})}}async setMapCamera(e){if(!this.view)return{status:-1,message:"未初始化"};const{name:i,duration:t=0}=e,{camera:o}=this.mapConfig;if(!o)return{status:-1,message:"未配置camera"};const n=o[i];return n?(await this.view.goTo(n,{duration:t*1e3}),{status:0,message:"成功"}):{status:-1,message:"未配置camera"}}requestCoordinateTransform(e,i){let t=0;const n=1e3/30,f=k.watch(()=>this.view.center,()=>{const c=this.transformPoints(e),w=Date.now();w-t>n&&(i(c),t=w)});return this.handleIndex++,this.watchHandleMap.set(this.handleIndex,f),{handle:this.handleIndex,points:this.transformPoints(e)}}transformPoints(e){return e.map(i=>{const t=new g.Point({x:i[0],y:i[1]}),o=this.view.toScreen(t);return[o.x,o.y]})}cancelCoordinateTransform(e){const i=this.watchHandleMap.get(e);i&&(i.remove(),this.watchHandleMap.delete(e))}setMapZoomRange(e){const{min:i,max:t}=e;!i&&!t||(this.zoomWatchHandle&&this.zoomWatchHandle.remove(),this.zoomWatchHandle=k.watch(()=>this.view.zoom,o=>{i&&o<=i&&(this.view.zoom=i),t&&o>=t&&(this.view.zoom=t)}))}}exports.default=G;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const P=require("@arcgis/core/Basemap"),b=require("@arcgis/core/config"),q=require("@arcgis/core/core/reactiveUtils"),g=require("@arcgis/core/geometry"),L=require("@arcgis/core/geometry/support/webMercatorUtils"),z=require("@arcgis/core/layers/GeoJSONLayer"),O=require("@arcgis/core/layers/MapImageLayer"),W=require("@arcgis/core/layers/TileLayer"),S=require("@arcgis/core/layers/WebTileLayer"),x=require("@arcgis/core/Map"),I=require("@arcgis/core/views/MapView"),R=require("@arcgis/core/views/SceneView"),H=require("@turf/destination"),N=require("@turf/helpers"),_=require("../stores/index.js"),C=require("./custom-layer/custom-wmts-layer.js");function y(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const i in r)if(i!=="default"){const t=Object.getOwnPropertyDescriptor(r,i);Object.defineProperty(e,i,t.get?t:{enumerable:!0,get:()=>r[i]})}}return e.default=r,Object.freeze(e)}const k=y(q),d=y(L),G=y(N);function T(r,e){return r&&(r.startsWith("http://")||r.startsWith("https://")?r:e+r)}class j{constructor(){this.mapConfig={},this.watchHandleMap=new Map,this.handleIndex=0,this.zoomWatchHandle=null}async initialize(e){const i=_.default.useAppDataStore,t=JSON.parse(JSON.stringify(i.mapConfig));this.mapConfig=t;const{container:o,markerClickCallback:l,mapClickCallback:f}=e;b.assetsPath=`${t.assetsRoot}/ArcgisAssets`,b.fontsUrl=`${t.assetsRoot}/fonts`,b.apiKey="AAPKf5a3e1044d7a4faeb3b1ec7060f5c68equIrP2KbRyL-t_b40Kk4GTWUQ1BFCyttvyQPQnWpFmBd7kp9gkrVihjfmcKBwxjW";const c=new x;if((t==null?void 0:t.mapOptions.mode.toLowerCase())==="2d"?this.view=new I({map:c,container:o,...t.mapOptions}):this.view=new R({map:c,container:o,environment:{atmosphereEnabled:!0,lighting:{type:"virtual"}},...t==null?void 0:t.mapOptions}),this.view.popup.visibleElements={closeButton:!0,collapseButton:!1,actionBar:!1,featureNavigation:!1},this.view.popup.dockOptions={buttonEnabled:!1,breakpoint:!1},this.view.on("click",async s=>{var v,M;if(f){let a=s.mapPoint;a.spatialReference.isWebMercator&&(a=d.webMercatorToGeographic(a)),f([a.x,a.y],[s.screenPoint.x,s.screenPoint.y],s)}if(this.view.type==="3d"){const a=this.view.camera;if(this.view.spatialReference.isWebMercator){const u=d.webMercatorToGeographic(a.position),p={heading:a.heading,tilt:a.tilt,position:u.toJSON()};console.log(p),(v=navigator.clipboard)==null||v.writeText(JSON.stringify(p))}else console.log(a.toJSON());console.log(this.view.zoom,this.view.scale)}else{let a=this.view.center;this.view.spatialReference.isWebMercator&&(a=d.webMercatorToGeographic(a)),console.log({center:a.toJSON(),zoom:this.view.zoom,scale:this.view.scale})}const n=(M=(await this.view.hitTest(s)).results)==null?void 0:M.filter(a=>a.type==="graphic");n.length>0&&n.forEach(a=>{var p;const u=a.graphic;(p=u.attributes)!=null&&p.type&&l&&l(u.attributes.type,u.attributes.id,u.attributes,s)})}),t!=null&&t.baseLayers?(console.log(t.baseLayers),t.baseLayers.forEach(s=>{const h=T(s.url,t.assetsRoot);switch(s.type.toLowerCase()){case"webTile".toLowerCase():{const n=new S({urlTemplate:h,...s.options});c.add(n);break}case"tile":{const n=new W({url:h,...s.options});c.add(n);break}case"customWMTS".toLowerCase():{const n=new C.default({urlTemplate:h,...s.options});c.add(n);break}case"mapImage".toLowerCase():{const n=new O({url:h,...s.options});c.add(n),console.log(n);break}case"arcgis":{const n=new P(s.options);c.basemap=n;break}}})):c.basemap=new P({style:{id:"arcgis/light-gray",language:"zh-CN"}}),t!=null&&t.hdLayers){const s=t.hdLayers.map(h=>new z({url:T(h.url,t.assetsRoot),...h.options,title:h.options.id}));c.addMany(s)}this.view.ui.remove("attribution"),this.view.ui.add("compass","top-left"),await this.view.when();const w=this.mapConfig.camera;let m;if(this.view.type==="2d"){let s=this.view.center;this.view.spatialReference.isWebMercator&&(s=d.webMercatorToGeographic(s)),m={center:[s.x,s.y],zoom:this.view.zoom}}else{let s=this.view.camera.position;this.view.spatialReference.isWebMercator&&(s=d.webMercatorToGeographic(s)),m={position:s,heading:this.view.camera.heading,tilt:this.view.camera.tilt}}return w?w.home=m:this.mapConfig.camera={home:m},this.view}setLayerVisibility(e){const{id:i,visible:t}=e,o=this.view.map.findLayerById(i);return o?(o.visible=t,{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){case"point":e.target=new g.Point(e.target);break;case"polyline":e.target=new g.Polyline(e.target);break;case"polygon":e.target=new g.Polygon(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,t=e.heading||0;if(i===0)await this.view.goTo({position:{x:e.center[0],y:e.center[1],z:e.height},heading:t,tilt:0},{duration:(e.duration||2)*1e3});else{const o=Math.tan(i*Math.PI/180)*e.height,l=H(G.point(e.center),o,t+180,{units:"meters"});await this.view.goTo({position:{x:l.geometry.coordinates[0],y:l.geometry.coordinates[1],z:e.height},heading:t,tilt:i},{duration:(e.duration||2)*1e3})}}async setMapCamera(e){if(!this.view)return{status:-1,message:"未初始化"};const{name:i,duration:t=0}=e,{camera:o}=this.mapConfig;if(!o)return{status:-1,message:"未配置camera"};const l=o[i];return l?(await this.view.goTo(l,{duration:t*1e3}),{status:0,message:"成功"}):{status:-1,message:"未配置camera"}}requestCoordinateTransform(e,i){let t=0;const l=1e3/30,f=k.watch(()=>this.view.center,()=>{const c=this.transformPoints(e),w=Date.now();w-t>l&&(i(c),t=w)});return this.handleIndex++,this.watchHandleMap.set(this.handleIndex,f),{handle:this.handleIndex,points:this.transformPoints(e)}}transformPoints(e){return e.map(i=>{const t=new g.Point({x:i[0],y:i[1]}),o=this.view.toScreen(t);return[o.x,o.y]})}cancelCoordinateTransform(e){const i=this.watchHandleMap.get(e);i&&(i.remove(),this.watchHandleMap.delete(e))}setMapZoomRange(e){const{min:i,max:t}=e;!i&&!t||(this.zoomWatchHandle&&this.zoomWatchHandle.remove(),this.zoomWatchHandle=k.watch(()=>this.view.zoom,o=>{i&&o<=i&&(this.view.zoom=i),t&&o>=t&&(this.view.zoom=t)}))}}exports.default=j;