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.
- package/es/_virtual/_plugin-vue_export-helper.mjs +9 -0
- package/es/src/gis-map/gis-map.vue.d.ts +111 -0
- package/es/src/gis-map/gis-map.vue.mjs +135 -124
- package/es/src/gis-map/index.d.ts +111 -0
- package/es/src/gis-map/stores/appData.d.ts +2 -0
- package/es/src/gis-map/stores/appData.mjs +4 -2
- package/es/src/gis-map/utils/common-utils.mjs +6 -6
- package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.d.ts +85 -0
- package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.mjs +7 -0
- package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue2.mjs +120 -0
- package/es/src/gis-map/utils/holo-flow/signal-countdown-panel.vue3.mjs +4 -0
- package/es/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.d.ts +13 -0
- package/es/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.mjs +95 -35
- package/es/src/gis-map/utils/holo-flow/trace-renderer-layer.mjs +102 -99
- package/es/src/gis-map/utils/map-initializer.mjs +54 -45
- package/es/src/gis-map/utils/open-drive-renderer/index.mjs +10 -10
- package/es/src/gis-map/utils/traffic-flow.mjs +5 -4
- package/es/src/types/index.d.ts +21 -0
- package/es/style.css +1 -1
- package/lib/_virtual/_plugin-vue_export-helper.js +1 -0
- package/lib/src/gis-map/gis-map.vue.d.ts +111 -0
- package/lib/src/gis-map/gis-map.vue.js +1 -1
- package/lib/src/gis-map/index.d.ts +111 -0
- package/lib/src/gis-map/stores/appData.d.ts +2 -0
- package/lib/src/gis-map/stores/appData.js +1 -1
- package/lib/src/gis-map/utils/common-utils.js +1 -1
- package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.d.ts +85 -0
- package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue.js +1 -0
- package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue2.js +1 -0
- package/lib/src/gis-map/utils/holo-flow/signal-countdown-panel.vue3.js +1 -0
- package/lib/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.d.ts +13 -0
- package/lib/src/gis-map/utils/holo-flow/signal-holo-flow-lsr.js +1 -1
- package/lib/src/gis-map/utils/holo-flow/trace-renderer-layer.js +1 -1
- package/lib/src/gis-map/utils/map-initializer.js +1 -1
- package/lib/src/gis-map/utils/open-drive-renderer/index.js +1 -1
- package/lib/src/gis-map/utils/traffic-flow.js +1 -1
- package/lib/src/types/index.d.ts +21 -0
- 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
|
|
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 +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"),
|
|
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
|
|
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(
|
|
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"),
|
|
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;
|