gisviewer-vue3-arcgis 1.0.227 → 1.0.229
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/src/gis-map/gis-map.vue.d.ts +8 -2
- package/es/src/gis-map/gis-map.vue.mjs +2 -2
- package/es/src/gis-map/index.d.ts +2 -2
- package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/district-controller.d.ts +2 -1
- package/es/src/gis-map/utils/signal-control-area/district-controller.mjs +45 -0
- package/es/src/gis-map/utils/signal-control-area/district-renderer.d.ts +40 -0
- package/es/src/gis-map/utils/signal-control-area/district-renderer.mjs +123 -0
- package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/layer-symbol.d.ts +8 -1
- package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/layer-symbol.mjs +74 -56
- package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/show-area.d.ts +4 -14
- package/es/src/gis-map/utils/signal-control-area/show-area.mjs +397 -0
- package/es/src/gis-map/utils/signal-control-area/signal-renderer.d.ts +22 -0
- package/es/src/gis-map/utils/signal-control-area/signal-renderer.mjs +124 -0
- package/es/src/gis-map/utils/signal-control-area/sub-district-renderer.d.ts +27 -0
- package/es/src/gis-map/utils/signal-control-area/sub-district-renderer.mjs +142 -0
- package/lib/src/gis-map/gis-map.vue.d.ts +8 -2
- package/lib/src/gis-map/gis-map.vue.js +1 -1
- package/lib/src/gis-map/index.d.ts +2 -2
- package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/district-controller.d.ts +2 -1
- package/lib/src/gis-map/utils/signal-control-area/district-controller.js +1 -0
- package/lib/src/gis-map/utils/signal-control-area/district-renderer.d.ts +40 -0
- package/lib/src/gis-map/utils/signal-control-area/district-renderer.js +1 -0
- package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/layer-symbol.d.ts +8 -1
- package/lib/src/gis-map/utils/signal-control-area/layer-symbol.js +1 -0
- package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/show-area.d.ts +4 -14
- package/lib/src/gis-map/utils/signal-control-area/show-area.js +1 -0
- package/lib/src/gis-map/utils/signal-control-area/signal-renderer.d.ts +22 -0
- package/lib/src/gis-map/utils/signal-control-area/signal-renderer.js +1 -0
- package/lib/src/gis-map/utils/signal-control-area/sub-district-renderer.d.ts +27 -0
- package/lib/src/gis-map/utils/signal-control-area/sub-district-renderer.js +1 -0
- package/package.json +1 -1
- package/es/src/gis-map/utils/signal-control-area-controller/district-controller.mjs +0 -38
- package/es/src/gis-map/utils/signal-control-area-controller/show-area.mjs +0 -454
- package/lib/src/gis-map/utils/signal-control-area-controller/district-controller.js +0 -1
- package/lib/src/gis-map/utils/signal-control-area-controller/layer-symbol.js +0 -1
- package/lib/src/gis-map/utils/signal-control-area-controller/show-area.js +0 -1
- /package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.d.ts +0 -0
- /package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.mjs +0 -0
- /package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.d.ts +0 -0
- /package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.js +0 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import n from "@arcgis/core/Graphic";
|
|
2
|
+
import o from "@arcgis/core/layers/FeatureLayer";
|
|
3
|
+
import { subDistrictPointLayerOptions as c } from "./layer-symbol.mjs";
|
|
4
|
+
class b {
|
|
5
|
+
constructor(t, i) {
|
|
6
|
+
this.view = t, this.hasGpu = i, this.subDistrictPointLayer = new o(
|
|
7
|
+
c
|
|
8
|
+
), this.subDistrictPointLayer.spatialReference = t.spatialReference, this.subDistrictPointLayer.popupEnabled = !0, this.view.map.add(this.subDistrictPointLayer);
|
|
9
|
+
}
|
|
10
|
+
async showSubDistricts(t) {
|
|
11
|
+
await this.clearSubDistricts();
|
|
12
|
+
let i = 0;
|
|
13
|
+
const s = [], r = [];
|
|
14
|
+
t.forEach((e) => {
|
|
15
|
+
r.push({
|
|
16
|
+
value: e.id,
|
|
17
|
+
label: e.name,
|
|
18
|
+
symbol: {
|
|
19
|
+
type: "simple-marker",
|
|
20
|
+
style: "circle",
|
|
21
|
+
color: [0, 0, 0, 0],
|
|
22
|
+
// color: [...controller.areaColor, 0.5],
|
|
23
|
+
size: "8px",
|
|
24
|
+
outline: {
|
|
25
|
+
color: [...e.areaColor],
|
|
26
|
+
width: 4
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}), e.signals.forEach((a) => {
|
|
30
|
+
const u = new n({
|
|
31
|
+
geometry: {
|
|
32
|
+
type: "point",
|
|
33
|
+
longitude: a.longitude,
|
|
34
|
+
latitude: a.latitude
|
|
35
|
+
},
|
|
36
|
+
attributes: {
|
|
37
|
+
ObjectID: i++,
|
|
38
|
+
id: a.id,
|
|
39
|
+
name: a.name,
|
|
40
|
+
subDistrictId: e.id,
|
|
41
|
+
subDistrictName: e.name,
|
|
42
|
+
districtId: e.parentId,
|
|
43
|
+
districtName: e.parentName,
|
|
44
|
+
signalCount: e.signalCount
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
s.push(u);
|
|
48
|
+
});
|
|
49
|
+
}), this.subDistrictPointLayer.renderer = {
|
|
50
|
+
type: "unique-value",
|
|
51
|
+
field: "subDistrictId",
|
|
52
|
+
defaultSymbol: {
|
|
53
|
+
type: "simple-marker",
|
|
54
|
+
color: "gray",
|
|
55
|
+
size: "8px",
|
|
56
|
+
outline: {
|
|
57
|
+
color: "white",
|
|
58
|
+
width: 1
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
defaultLabel: "其他子区",
|
|
62
|
+
uniqueValueInfos: r,
|
|
63
|
+
visualVariables: [
|
|
64
|
+
{
|
|
65
|
+
type: "size",
|
|
66
|
+
valueExpression: "$view.scale",
|
|
67
|
+
stops: [
|
|
68
|
+
{
|
|
69
|
+
size: 24,
|
|
70
|
+
value: 2500
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
size: 20,
|
|
74
|
+
value: 5e3
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
size: 8,
|
|
78
|
+
value: 18055.954822000003
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
size: 4,
|
|
82
|
+
value: 144447.638572
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
size: 2,
|
|
86
|
+
value: 1155581108577e-6
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}, await this.subDistrictPointLayer.applyEdits({
|
|
92
|
+
addFeatures: s
|
|
93
|
+
}), await this.view.goTo(s, {
|
|
94
|
+
duration: this.hasGpu ? 1e3 : 0
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
async clearSubDistricts() {
|
|
98
|
+
const t = await this.subDistrictPointLayer.queryFeatures();
|
|
99
|
+
t.features.length > 0 && await this.subDistrictPointLayer.applyEdits({
|
|
100
|
+
deleteFeatures: t.features
|
|
101
|
+
}), this.subDistrictPointLayer.definitionExpression = "1=1";
|
|
102
|
+
}
|
|
103
|
+
setVisible(t) {
|
|
104
|
+
this.subDistrictPointLayer.visible = t;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* 定位子区
|
|
108
|
+
* @param id 子区ID
|
|
109
|
+
*/
|
|
110
|
+
async locateSubDistrict(t) {
|
|
111
|
+
const i = this.subDistrictPointLayer.createQuery();
|
|
112
|
+
i.where = `subDistrictId = '${t}'`, i.returnGeometry = !0;
|
|
113
|
+
const s = await this.subDistrictPointLayer.queryFeatures(i);
|
|
114
|
+
return s.features.length > 0 ? (await this.view.goTo(s.features, {
|
|
115
|
+
duration: this.hasGpu ? 1e3 : 0
|
|
116
|
+
}), { status: 0, message: "ok" }) : { status: 1, message: "未找到区控" };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* 高亮子区, 其他子区隐藏
|
|
120
|
+
* @param id 子区ID
|
|
121
|
+
* @return 返回高亮子区的数量以及区控id
|
|
122
|
+
*/
|
|
123
|
+
async highlightSubDistrict(t) {
|
|
124
|
+
let i = "";
|
|
125
|
+
const s = this.subDistrictPointLayer.definitionExpression;
|
|
126
|
+
this.subDistrictPointLayer.definitionExpression = `subDistrictId = '${t}'`;
|
|
127
|
+
const r = await this.subDistrictPointLayer.queryFeatures(), e = r.features.length;
|
|
128
|
+
return e > 0 ? (i = r.features[0].attributes.districtId, await this.view.goTo(r.features, {
|
|
129
|
+
duration: this.hasGpu ? 1e3 : 0
|
|
130
|
+
})) : this.subDistrictPointLayer.definitionExpression = s, { count: e, parentId: i };
|
|
131
|
+
}
|
|
132
|
+
filter(t, i) {
|
|
133
|
+
const s = `${t === "district" ? "districtId" : "subDistrictId"} = '${i}'`;
|
|
134
|
+
this.subDistrictPointLayer.definitionExpression = s;
|
|
135
|
+
}
|
|
136
|
+
resetFilter() {
|
|
137
|
+
this.subDistrictPointLayer.definitionExpression = "1=1";
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export {
|
|
141
|
+
b as default
|
|
142
|
+
};
|
|
@@ -8,8 +8,8 @@ import OpenDriveRenderer from './utils/open-drive-renderer';
|
|
|
8
8
|
import Overlay from './utils/overlay';
|
|
9
9
|
import QueueLength from './utils/queue-length';
|
|
10
10
|
import RoadConfigTool from './utils/road-config-tool';
|
|
11
|
-
import EditSignalArea from './utils/signal-control-area
|
|
12
|
-
import ShowSignalArea from './utils/signal-control-area
|
|
11
|
+
import EditSignalArea from './utils/signal-control-area/edit-area';
|
|
12
|
+
import ShowSignalArea from './utils/signal-control-area/show-area';
|
|
13
13
|
import TrafficFlow from './utils/traffic-flow';
|
|
14
14
|
declare const _sfc_main: import("vue").DefineComponent<{
|
|
15
15
|
config: {
|
|
@@ -235,6 +235,12 @@ declare const _sfc_main: import("vue").DefineComponent<{
|
|
|
235
235
|
animation: string;
|
|
236
236
|
}>;
|
|
237
237
|
rImage: import("vue").ComputedRef<string>;
|
|
238
|
+
/**
|
|
239
|
+
* 开始坐标转换,经纬度坐标转屏幕坐标。
|
|
240
|
+
* @param points
|
|
241
|
+
* @param callback 回调函数,参数为转换后的屏幕坐标。地图移动、缩放、缩放时,会多次调用该回调函数。
|
|
242
|
+
* @returns handle 坐标转换句柄,用于停止坐标转换。
|
|
243
|
+
* */
|
|
238
244
|
rNumberStyle: import("vue").ComputedRef<any>;
|
|
239
245
|
rLampStyle: import("vue").ComputedRef<{
|
|
240
246
|
display: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),b=require("./stores/index.js");require("./style/index.css");const je=require("./utils/detect-gpu.js"),A=require("./utils/green-wave-band-controller/index.js"),Qe=require("./utils/holo-flow/index.js"),Ue=require("./utils/holo-flow/signal-countdown-panel.vue.js"),Ze=require("./utils/map-initializer.js"),L=require("./utils/open-drive-renderer/index.js"),D=require("./utils/overlay.js"),Ke=require("./utils/queue-length.js"),T=require("./utils/road-config-tool/index.js"),Je=require("./utils/signal-control-area
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),b=require("./stores/index.js");require("./style/index.css");const je=require("./utils/detect-gpu.js"),A=require("./utils/green-wave-band-controller/index.js"),Qe=require("./utils/holo-flow/index.js"),Ue=require("./utils/holo-flow/signal-countdown-panel.vue.js"),Ze=require("./utils/map-initializer.js"),L=require("./utils/open-drive-renderer/index.js"),D=require("./utils/overlay.js"),Ke=require("./utils/queue-length.js"),T=require("./utils/road-config-tool/index.js"),Je=require("./utils/signal-control-area/edit-area.js"),Xe=require("./utils/signal-control-area/show-area.js"),Ye=require("./utils/traffic-flow.js"),Fe={class:"gis-viewer"},Re={style:{position:"absolute",bottom:"80px",left:"10px","z-index":"9999"}},$e=n.defineComponent({__name:"gis-map",props:{config:{},assetsRoot:{}},emits:["mapLoaded","markerClick","mapClick"],setup(_,{expose:B,emit:q}){const S=n.ref(null);let o,d,l,i,a,r,f,t,u,s,m;const y=n.ref(!1);b.registerStore();const V=b.default.useAppDataStore,k=n.reactive([]);je.default(),n.onMounted(async()=>{if(!S.value)return;document.addEventListener("keydown",p=>{p.ctrlKey&&p.key==="i"&&(y.value=!y.value)});const e=n.getCurrentInstance(),{$gisviewerAssetsRoot:g}=e.appContext.config.globalProperties,c=await(await fetch(O.config)).json();c.assetsRoot=O.assetsRoot||g,V.mapConfig=c,d=new Ze.default,o=await d.initialize({container:S.value,mapConfig:c,markerClickCallback:(p,C,h,We)=>{w("markerClick",p,C,h,We)},mapClickCallback:(p,C,h)=>{w("mapClick",p,C,h)}}),a=new Qe.default(o,k),await a.init(),w("mapLoaded")}),n.onUnmounted(()=>{s==null||s.clearSignalControlArea(),t==null||t.clearOpenDrive(),a.clearHoloTrace(),a.clearHoloSignal(),i==null||i.disconnectTrafficFlow()});const x=n.computed(()=>o),I=()=>{const e=b.default.useAppDataStore;e.saveTrackLog=!0},M=()=>{a.downloadTrackLog()},N=()=>{v("vehicleId")},E=()=>{v("plateNumber")},H=async e=>await d.setMapCenter(e),P=async e=>await d.setMapCamera(e),G=async e=>await d.lookAt(e),z=e=>d.setLayerVisibility(e),W=(e,g)=>d.requestCoordinateTransform(e,g),j=e=>{d.cancelCoordinateTransform(e)},Q=e=>{d.setMapZoomRange(e)},U=e=>(l||(l=new T.default(o)),l.showLaneNumber(e)),Z=()=>{l==null||l.clearLaneNumber()},K=async e=>(l||(l=new T.default(o)),await l.initializeSearch(e)),J=async()=>l==null?void 0:l.calCrossIndicatorArea(),X=async()=>{},Y=async(e,g)=>{i||(i=new Ye.default(o)),i.connectTrafficFlow(e,g)},F=()=>{i==null||i.disconnectTrafficFlow()},R=async e=>{a.handleVehicleTraceData(e)},$=()=>{a.clearHoloTrace()},ee=e=>{a.setInterpolate(e)},te=async e=>{await a.handleSignalData(e)},ae=async e=>{await a.initializeLampGroup(e)},ne=e=>{a.handleUniSignalData(e)},re=()=>{a.clearHoloSignal()},se=e=>{i==null||i.toggleTrafficInfo(e),a==null||a.toggleTrafficInfo(e)},oe=e=>{a==null||a.togglePause(e)},ie=e=>{i==null||i.toggleTrafficObject(e),a==null||a.toggleTrafficObject(e)},v=e=>{a==null||a.updatePanelContent(e)},ce=async e=>(r||(r=new D.default(o)),r.addOverlays(e)),le=e=>(r||(r=new D.default(o)),r.addMask(e)),ue=()=>{r==null||r.removeMask()},de=e=>r==null?void 0:r.removeOverlaysByType(e),me=e=>r==null?void 0:r.removeOverlaysById(e),ge=()=>r==null?void 0:r.removeAllOverlays(),pe=()=>{r==null||r.showAllOverlays()},fe=e=>{f||(f=new Ke.default(o)),f.updateQueueLength(e)},Se=()=>{f==null||f.removeQueueLength()},ye=async(e,g)=>(t||(t=new L.default(o)),await t.showOpenDriveFromServer(e,g)),ve=async e=>(t||(t=new L.default(o)),await t.clearOpenDrive(),await t.showOpenDriveFromFile(e)),we=async()=>await(t==null?void 0:t.clearOpenDrive()),Ce=async e=>t?await(t==null?void 0:t.findSumo(e)):{status:-1,message:"未加载OpenDrive地图"},he=async e=>t?t.selectSumo(e):{status:-1,message:"未加载OpenDrive地图"},be=async e=>t?t.unselectSumo(e):{status:-1,message:"未加载OpenDrive地图"},ke=async e=>t?await t.geometrySearch(e):{status:-1,message:"未加载OpenDrive地图"},Oe=async e=>t?await t.getSumoInfo(e):{status:-1,message:"未加载OpenDrive地图"},Ae=async e=>t?await(t==null?void 0:t.splitLane(e)):{status:-1,message:"未加载OpenDrive地图"},Le=async()=>t?t==null?void 0:t.clearSplitLane():{status:-1,message:"未加载OpenDrive地图"},De=async e=>(s||(s=new Xe.default(o)),await s.showSignalControlArea(e)),Te=async()=>await(s==null?void 0:s.clearSignalControlArea()),_e=e=>s==null?void 0:s.setLayerVisibility(e),Be=async e=>s?await(s==null?void 0:s.locateSignalControlArea(e)):{status:-1,message:"未加载信号控制区"},qe=async e=>s?await s.highlightSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Ve=()=>s?s.resetHighlight():{status:-1,message:"未加载信号控制区"},xe=e=>(u||(u=new Je.default(o)),u.showSubSignalControlArea(e)),Ie=e=>u?u.editSubSignalControlArea(e):{status:-1,message:"未加载信号控制区"},Me=()=>u?u.stopEditSubSignalControlArea():{status:-1,message:"未加载信号控制区"},Ne=e=>u?u.selectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},Ee=e=>u?u.unselectSubSignalControlAreaCross(e):{status:-1,message:"未加载信号控制区"},He=e=>{if(!u)return{status:-1,message:"未加载信号控制区"}},Pe=e=>(m||(m=new A.default(o)),m.addGreenWaveBand(e)),Ge=()=>{if(!m)return{status:-1,message:"未加载绿波带"};m.stopAddGreenWaveBand()},ze=async e=>(m||(m=new A.default(o)),await m.showGreenWaveBand(e)),O=_,w=q;return B({mapViewer:x,setLayerVisibility:z,setMapCenter:H,lookAt:G,setMapCamera:P,setMapZoomRange:Q,requestCoordinateTransform:W,cancelCoordinateTransform:j,addOverlays:ce,addMask:le,removeMask:ue,showAllOverlays:pe,removeOverlaysByType:de,removeOverlaysById:me,removeAllOverlays:ge,showLaneNumber:U,clearLaneNumber:Z,initializeAreaTool:K,calCrossIndicatorArea:J,calRoadIndicatorArea:X,connectCarFlow:Y,disconnectCarFlow:F,handleHoloVehicleTraceData:R,clearHoloTrace:$,initializeLampGroup:ae,handleUniSignalData:ne,handleHoloSignalData:te,clearHoloSignal:re,setInterpolate:ee,toggleTrafficInfo:se,toggleTrafficObject:ie,toggleVehicleInfo:v,togglePause:oe,updateQueueLength:fe,removeQueueLength:Se,showOpenDriveFromServer:ye,showOpenDriveFromFile:ve,clearOpenDrive:we,geometrySearchInOpenDrive:ke,findSumoInOpenDrive:Ce,selectSumoInOpenDrive:he,unselectSumoInOpenDrive:be,getSumoInfo:Oe,splitOpenDriveLane:Ae,clearSplitOpenDriveLane:Le,showSignalControlArea:De,clearSignalControlArea:Te,setSignalControlAreaVisibility:_e,locateSignalControlArea:Be,highlightSignalControlArea:qe,resetHighlightSignalControlArea:Ve,showSubSignalControlArea:xe,editSubSignalControlArea:Ie,stopEditSubSignalControlArea:Me,selectSubSignalControlAreaCross:Ne,unselectSubSignalControlAreaCross:Ee,changeSubSignalControlAreaBorderVisibility:He,addGreenWaveBand:Pe,stopAddGreenWaveBand:Ge,showGreenWaveBand:ze}),(e,g)=>(n.openBlock(),n.createElementBlock("div",Fe,[n.createElementVNode("div",{class:"gis-viewer-main",ref_key:"mapContainer",ref:S},[n.withDirectives(n.createElementVNode("div",Re,[n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:I}," 开始记录 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:M}," 下载日志 "),n.createElementVNode("button",{style:{"margin-right":"10px"},onClick:N}," 显示车辆id "),n.createElementVNode("button",{onClick:E},"显示车辆号牌")],512),[[n.vShow,y.value]])],512),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(k,(c,p)=>(n.openBlock(),n.createBlock(Ue.default,{key:p,"display-mode":c.displayMode,flash:c.flash,"road-id":c.crossId,"cross-id":c.roadId,"map-point":c.mapPoint,"stop-line":c.stopLine,position:c.position,rotation:c.rotation,scale:c.scale,"lamp-status":c.lampStatus},null,8,["display-mode","flash","road-id","cross-id","map-point","stop-line","position","rotation","scale","lamp-status"]))),128))]))}});exports.default=$e;
|
|
@@ -17,8 +17,8 @@ export declare const GisMap: import("@easyest/utils/dist/lib/withinstall").SFCWi
|
|
|
17
17
|
overlay: import("./utils/overlay").default;
|
|
18
18
|
queueLength: import("./utils/queue-length").default;
|
|
19
19
|
openDriveRenderer: import("./utils/open-drive-renderer").default;
|
|
20
|
-
editSignalAreaController: import("./utils/signal-control-area
|
|
21
|
-
showSignalAreaController: import("./utils/signal-control-area
|
|
20
|
+
editSignalAreaController: import("./utils/signal-control-area/edit-area").default;
|
|
21
|
+
showSignalAreaController: import("./utils/signal-control-area/show-area").default;
|
|
22
22
|
greenWaveBandController: import("./utils/green-wave-band-controller").default;
|
|
23
23
|
showLogDiv: import("vue").Ref<boolean>;
|
|
24
24
|
appDataStore: import("pinia").Store<"appData", {
|
|
@@ -15,7 +15,7 @@ export default class DistrictController {
|
|
|
15
15
|
parentName: string;
|
|
16
16
|
signals: ICross[];
|
|
17
17
|
subDistricts: DistrictController[];
|
|
18
|
-
areaColor: number
|
|
18
|
+
areaColor: [number, number, number];
|
|
19
19
|
signalCount: number;
|
|
20
20
|
subDistrictCount: number;
|
|
21
21
|
constructor(params: any, style: string);
|
|
@@ -24,5 +24,6 @@ export default class DistrictController {
|
|
|
24
24
|
* @returns
|
|
25
25
|
*/
|
|
26
26
|
getAllSignalCoordinates(): number[][];
|
|
27
|
+
private getDarkNonGrayColor;
|
|
27
28
|
}
|
|
28
29
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("../common-utils.js");class e{constructor(s,n){this.parentName="",this.signals=[],this.subDistricts=[],this.areaColor=this.getDarkNonGrayColor(),this.signalCount=0,this.subDistrictCount=0,this.id=s.name,this.name=s.areaDesc,this.parentId=s.parentId,n==="alarm"&&(this.areaColor=[255,0,0]);for(const t of s.children)if(t.children){const i=new e(t,n);i.id=t.id,i.name=`SS ${t.name}`,i.parentId=this.id,i.parentName=this.name,this.subDistricts.push(i),this.subDistrictCount++,this.signalCount+=i.signalCount}else if(d.default.isCoordinateValid(t)){const i={id:t.id,name:t.name,parentId:t.parentId,latitude:Number(t.latitude),longitude:Number(t.longitude),signalId:t.signalId,nodeId:t.nodeId,isKey:t.isKey===1};this.signals.push(i),this.signalCount++}}getAllSignalCoordinates(){const s=[];for(const n of this.signals)s.push([n.longitude,n.latitude]);for(const n of this.subDistricts)s.push(...n.getAllSignalCoordinates());return s}getDarkNonGrayColor(){const s=Math.floor(Math.random()*360),n=80+Math.random()*20,t=15+Math.random()*15,i=n/100*Math.min(t/100,1-t/100),o=r=>{const a=(r+s/30)%12,l=t/100-i*Math.max(Math.min(a-3,9-a,1),-1);return Math.round(255*l)};return[o(0),o(8),o(4)]}}exports.default=e;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { IResult } from '../../../types';
|
|
2
|
+
import DistrictController from './district-controller';
|
|
3
|
+
export default class DistrictRenderer {
|
|
4
|
+
private view;
|
|
5
|
+
/** 区控虚线图层 */
|
|
6
|
+
private districtControllerDashLayer;
|
|
7
|
+
/** 区控实线图层,区控符号由半透明实线+不透明虚线组成 */
|
|
8
|
+
private districtControllerSolidLayer;
|
|
9
|
+
style: string;
|
|
10
|
+
private hasGpu;
|
|
11
|
+
constructor(view: __esri.MapView | __esri.SceneView, hasGpu: boolean);
|
|
12
|
+
/**
|
|
13
|
+
* 显示区控
|
|
14
|
+
* @param controllers 区控控制器数组
|
|
15
|
+
*/
|
|
16
|
+
showDistricts(controllers: DistrictController[]): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* 清除区控图层
|
|
19
|
+
*/
|
|
20
|
+
clearDistricts(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* 设置区控图层可见性
|
|
23
|
+
* @param visible
|
|
24
|
+
*/
|
|
25
|
+
setVisible(visible: boolean): void;
|
|
26
|
+
/**
|
|
27
|
+
* 定位区控
|
|
28
|
+
* @param id
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
locateDistrict(id: string): Promise<IResult>;
|
|
32
|
+
/**
|
|
33
|
+
* 高亮区控, 其他区控隐藏
|
|
34
|
+
* @param id 区控ID
|
|
35
|
+
* @return 返回高亮区控的数量
|
|
36
|
+
*/
|
|
37
|
+
highlightDistrict(id: string): Promise<number>;
|
|
38
|
+
filter(id: string): void;
|
|
39
|
+
resetFilter(): void;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("@arcgis/core/Graphic"),l=require("@arcgis/core/layers/FeatureLayer"),C=require("@turf/helpers"),c=require("@turf/turf"),d=require("./layer-symbol.js");function g(o){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(t,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return t.default=o,Object.freeze(t)}const n=g(C);class L{constructor(t,e){this.style="",this.hasGpu=!0,this.view=t,this.hasGpu=e,this.districtControllerDashLayer=new l(d.districtDashLineLayerOptions),this.districtControllerDashLayer.spatialReference=t.spatialReference,this.districtControllerSolidLayer=new l(d.districtSolidLineLayerOptions),this.districtControllerSolidLayer.spatialReference=t.spatialReference,this.districtControllerSolidLayer.popupEnabled=!0,this.view.map.addMany([this.districtControllerDashLayer,this.districtControllerSolidLayer])}async showDistricts(t){await this.clearDistricts();const e=[];for(let i=0;i<t.length;i++){const r=t[i],s=r.getAllSignalCoordinates();let a=null;if(s.length>=2)if(s.length===2)a=n.lineString(s);else{const y=n.featureCollection(s.map(p=>n.point(p)));a=c.convex(y),a||(a=n.lineString(s))}else if(s.length===1)a=n.point(s[0]);else continue;const u=c.buffer(a.geometry,200,{units:"meters"}),h=new f({geometry:{type:"polyline",paths:u.geometry.coordinates},attributes:{ObjectID:i,id:r.id,name:r.name,subDistrictCount:r.subDistrictCount,signalCount:r.signalCount,parentId:r.parentId,parentName:r.parentName,selected:this.style,type:"district"}});e.push(h)}await this.districtControllerDashLayer.applyEdits({addFeatures:e}),await this.districtControllerSolidLayer.applyEdits({addFeatures:e}),await this.view.goTo(e,{duration:this.hasGpu?1e3:0})}async clearDistricts(){let t=await this.districtControllerDashLayer.queryFeatures();await this.districtControllerDashLayer.applyEdits({deleteFeatures:t.features}),this.districtControllerDashLayer.definitionExpression="1=1",t=await this.districtControllerSolidLayer.queryFeatures(),await this.districtControllerSolidLayer.applyEdits({deleteFeatures:t.features}),this.districtControllerSolidLayer.definitionExpression="1=1"}setVisible(t){this.districtControllerDashLayer.visible=t,this.districtControllerSolidLayer.visible=t}async locateDistrict(t){const e=this.districtControllerDashLayer.createQuery();e.where=`id = '${t}'`,e.returnGeometry=!0,e.outFields=["*"];const i=await this.districtControllerDashLayer.queryFeatures(e);return i.features.length>0?(await this.view.goTo(i.features,{duration:this.hasGpu?1e3:0}),{status:0,message:"ok"}):{status:1,message:"未找到区控"}}async highlightDistrict(t){const e=this.districtControllerDashLayer.definitionExpression;this.districtControllerDashLayer.definitionExpression=`id = '${t}'`;const i=await this.districtControllerDashLayer.queryFeatures(),r=i.features.length;return r>0?(this.districtControllerSolidLayer.definitionExpression=`id = '${t}'`,await this.view.goTo(i.features,{duration:this.hasGpu?1e3:0})):this.districtControllerDashLayer.definitionExpression=e,r}filter(t){const e=`id = '${t}'`;this.districtControllerDashLayer.definitionExpression=e,this.districtControllerSolidLayer.definitionExpression=e}resetFilter(){this.districtControllerDashLayer.definitionExpression="1=1",this.districtControllerSolidLayer.definitionExpression="1=1"}}exports.default=L;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
/** 区控的虚线边框图层 */
|
|
1
2
|
declare const districtDashLineLayerOptions: any;
|
|
3
|
+
/** 区控的实线边框图层 */
|
|
2
4
|
declare const districtSolidLineLayerOptions: any;
|
|
5
|
+
/** 子区图层 */
|
|
3
6
|
declare const subDistrictLayerOptions: any;
|
|
7
|
+
declare const subDistrictPointLayerOptions: any;
|
|
8
|
+
/** 信号机圆点图层 */
|
|
4
9
|
declare const signalMarkerLayerOptions: any;
|
|
10
|
+
/** 信号机图标图层 */
|
|
5
11
|
declare const signalPictureLayerOptions: any;
|
|
12
|
+
/** 信号机聚合图层 */
|
|
6
13
|
declare const signalClusterLayerOptions: any;
|
|
7
|
-
export { districtDashLineLayerOptions, districtSolidLineLayerOptions, signalClusterLayerOptions, signalMarkerLayerOptions, signalPictureLayerOptions, subDistrictLayerOptions };
|
|
14
|
+
export { districtDashLineLayerOptions, districtSolidLineLayerOptions, signalClusterLayerOptions, signalMarkerLayerOptions, signalPictureLayerOptions, subDistrictLayerOptions, subDistrictPointLayerOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={id:"districtController",source:[],objectIdField:"ObjectID",geometryType:"polyline",outFields:["*"],fields:[{name:"ObjectID",type:"oid"},{name:"id",type:"string"},{name:"name",type:"string"},{name:"subDistrictCount",type:"integer"},{name:"signalCount",type:"integer"},{name:"selected",type:"string"}],renderer:{type:"unique-value",field:"selected",defaultSymbol:{type:"simple-line",style:"long-dash",color:[111,100,255],width:2},uniqueValueInfos:[{value:"false",symbol:{type:"simple-line",style:"long-dash",color:[180,180,180],width:1}}]}},t={id:"districtController",source:[],objectIdField:"ObjectID",outFields:["*"],geometryType:"polyline",fields:[{name:"ObjectID",type:"oid"},{name:"id",type:"string"},{name:"name",type:"string"},{name:"subDistrictCount",type:"integer"},{name:"signalCount",type:"integer"},{name:"type",type:"string"},{name:"selected",type:"string"}],popupTemplate:{title:"{name}",content:[{type:"fields",fieldInfos:[{fieldName:"id",label:"区控编号"},{fieldName:"subDistrictCount",label:"子区数量"},{fieldName:"signalCount",label:"信号机数量"}]}]},renderer:{type:"unique-value",field:"selected",defaultSymbol:{type:"simple-line",style:"solid",color:[111,100,255,.4],width:2},uniqueValueInfos:[{value:"false",symbol:{type:"simple-line",style:"solid",color:[180,180,180,.4],width:1}}]}},i={id:"subDistrictController",source:[],objectIdField:"ObjectID",outFields:["*"],geometryType:"point",fields:[{name:"ObjectID",type:"oid"},{name:"id",type:"string"},{name:"name",type:"string"},{name:"districtId",type:"string"},{name:"districtName",type:"string"},{name:"subDistrictId",type:"string"},{name:"subDistrictName",type:"string"},{name:"signalCount",type:"integer"},{name:"selected",type:"string"},{name:"type",type:"string"}],popupTemplate:{title:"{subDistrictName} 子区",content:[{type:"fields",fieldInfos:[{fieldName:"subDistrictId",label:"子区编号"},{fieldName:"districtName",label:"所属区控"},{fieldName:"signalCount",label:"信号机数量"}]}]}},r={id:"signalLayer",source:[],objectIdField:"ObjectID",outFields:["*"],geometryType:"point",maxScale:5e3,fields:[{name:"ObjectID",type:"oid"},{name:"id",type:"string"},{name:"name",type:"string"},{name:"signalId",type:"string"},{name:"nodeId",type:"string"},{name:"isKey",type:"string"},{name:"districtId",type:"string"},{name:"districtName",type:"string"},{name:"subDistrictId",type:"string"},{name:"subDistrictName",type:"string"},{name:"type",type:"string"},{name:"selected",type:"string"}],popupTemplate:{title:"{name}信号机",content:[{type:"fields",fieldInfos:[{fieldName:"districtName",label:"区控名称"},{fieldName:"subDistrictName",label:"子区名称"},{fieldName:"signalId",label:"信号机编号"},{fieldName:"nodeId",label:"路口编号"}]}]},renderer:{type:"unique-value",field:"isKey",field2:"selected",defaultSymbol:{type:"simple-marker",style:"circle",color:"gray",size:4,outline:{color:"white",width:0}},uniqueValueInfos:[{value:"true,true",symbol:{type:"simple-marker",style:"circle",color:[254,172,22,.8],size:8,outline:{color:"white",width:0}}},{value:"false,true",symbol:{type:"simple-marker",style:"circle",color:[5,116,255,.8],size:8,outline:{color:"white",width:0}}},{value:"true,false",symbol:{type:"simple-marker",style:"circle",color:[180,180,180,.8],size:8,outline:{color:"white",width:0}}},{value:"false,false",symbol:{type:"simple-marker",style:"circle",color:[180,180,180,.8],size:8,outline:{color:"white",width:0}}}],visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:8,value:9000.954822000003},{size:6,value:18055.954822000003},{size:3,value:144447.638572},{size:2,value:1155581108577e-6}]}]}},l={id:"signalLayer",source:[],objectIdField:"ObjectID",outFields:["*"],geometryType:"point",minScale:5e3,fields:[{name:"ObjectID",type:"oid"},{name:"id",type:"string"},{name:"name",type:"string"},{name:"signalId",type:"string"},{name:"nodeId",type:"string"},{name:"isKey",type:"string"},{name:"districtId",type:"string"},{name:"districtName",type:"string"},{name:"subDistrictId",type:"string"},{name:"subDistrictName",type:"string"},{name:"type",type:"string"},{name:"selected",type:"string"}],popupTemplate:{title:"{name}信号机",content:[{type:"fields",fieldInfos:[{fieldName:"districtName",label:"区控名称"},{fieldName:"subDistrictName",label:"子区名称"},{fieldName:"signalId",label:"信号机编号"},{fieldName:"nodeId",label:"路口编号"}]}]},renderer:{type:"unique-value",field:"isKey",field2:"selected",defaultSymbol:{type:"simple-marker",style:"circle",color:"gray",size:4,outline:{color:"white",width:1}},uniqueValueInfos:[{value:"true,true",symbol:{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:'Replace($feature.name, "与", "/") + " " + $feature.signalId',returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:32,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:12,horizontalAlignment:"Center",offsetX:0,offsetY:30,haloSize:1,haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[0,0,0,255]}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:20,rotateClockwise:!0,textureFilter:"Picture",url:"/GisViewerAssets/Images/cross/gis_gjxklk_orange.png"}]}}}},{value:"false,true",symbol:{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:'Replace($feature.name, "与", "/") + " " + $feature.signalId',returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:32,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:12,horizontalAlignment:"Center",offsetX:0,offsetY:15,haloSize:1,haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[0,0,0,255]}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:20,rotateClockwise:!0,textureFilter:"Picture",url:"/GisViewerAssets/Images/cross/gis_xhj_blue.png"}]}}}},{value:"true,false",symbol:{type:"picture-marker",url:"/GisViewerAssets/Images/cross/gis_gjxk_gray.png",width:20,height:20}},{value:"false,false",symbol:{type:"picture-marker",url:"/GisViewerAssets/Images/cross/gis_xhj_gray.png",width:20,height:20}}],visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:28,value:2250},{size:24,value:4500}]}]}},s={id:"signalLayer",source:[],objectIdField:"ObjectID",outFields:["*"],geometryType:"point",maxScale:5e3,fields:[{name:"ObjectID",type:"oid"},{name:"id",type:"string"},{name:"name",type:"string"},{name:"signalId",type:"string"},{name:"nodeId",type:"string"},{name:"isKey",type:"string"},{name:"districtId",type:"string"},{name:"districtName",type:"string"},{name:"subDistrictId",type:"string"},{name:"subDistrictName",type:"string"},{name:"type",type:"string"},{name:"type",type:"string"},{name:"selected",type:"string"}],featureReduction:{type:"cluster",clusterRadius:"120px",clusterMaxSize:"50px",clusterMinSize:"30px",symbol:{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:"$feature.cluster_count",returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:32,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:16,horizontalAlignment:"Center",offsetX:0,offsetY:30,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},verticalAlignment:"Center"},textString:""},{type:"CIMMarkerGraphic",geometry:{rings:[[[-15,40],[15,40],[15,20],[-15,20],[-15,40]]]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[2,72,200,255]},{type:"CIMSolidStroke",enable:!0,width:5,color:[2,72,200,128]}]}}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:40,rotateClockwise:!0,textureFilter:"Picture",url:"/GisViewerAssets/Images/cross/gis_xhj_blue.png"}]}}}},popupTemplate:{title:"{name}信号机",content:[{type:"fields",fieldInfos:[{fieldName:"districtName",label:"区控名称"},{fieldName:"subDistrictName",label:"子区名称"},{fieldName:"signalId",label:"信号机编号"},{fieldName:"nodeId",label:"路口编号"}]}]},renderer:{type:"simple",symbol:{type:"simple-marker",style:"circle",color:[5,116,255],size:8,outline:{color:"white",width:1}}}};exports.districtDashLineLayerOptions=e;exports.districtSolidLineLayerOptions=t;exports.signalClusterLayerOptions=s;exports.signalMarkerLayerOptions=r;exports.signalPictureLayerOptions=l;exports.subDistrictPointLayerOptions=i;
|
package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/show-area.d.ts
RENAMED
|
@@ -5,18 +5,10 @@ export default class SignalControlAreaController1 {
|
|
|
5
5
|
/** 支队图层 */
|
|
6
6
|
private detachmentLayer;
|
|
7
7
|
private detachmentLayerLoaded;
|
|
8
|
-
|
|
9
|
-
private
|
|
10
|
-
|
|
11
|
-
private districtControllerSolidLayer;
|
|
8
|
+
private districtRenderer;
|
|
9
|
+
private subDistrictRenderer;
|
|
10
|
+
private signalRenderer;
|
|
12
11
|
/** 子区图层 */
|
|
13
|
-
private subDistrictControllerLayer;
|
|
14
|
-
/** 信号机圆点图层 */
|
|
15
|
-
private signalMarkerLayer;
|
|
16
|
-
/** 信号机图标图层 */
|
|
17
|
-
private signalPictureLayer;
|
|
18
|
-
/** 信号机聚合图层 */
|
|
19
|
-
private signalClusterLayer;
|
|
20
12
|
private clickHandler;
|
|
21
13
|
private districtControllerOid;
|
|
22
14
|
private subDistrictControllerOid;
|
|
@@ -77,15 +69,13 @@ export default class SignalControlAreaController1 {
|
|
|
77
69
|
* @returns
|
|
78
70
|
*/
|
|
79
71
|
private generateGraphic;
|
|
80
|
-
private viewHitTest;
|
|
81
72
|
/**
|
|
82
73
|
* 重置所有graphic的置灰状态
|
|
83
74
|
*/
|
|
84
|
-
private resetSelectedSymbol;
|
|
85
75
|
/**
|
|
86
76
|
* 加载支队图层
|
|
87
77
|
* 现场环境用url创建FeatureLayer有各种问题,
|
|
88
|
-
*
|
|
78
|
+
* 改为图层导出为json,用json创建Graphic,再将Graphic添加到FeatureLayer
|
|
89
79
|
*/
|
|
90
80
|
private loadDetachmentLayer;
|
|
91
81
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const y=require("@arcgis/core/geometry"),m=require("@arcgis/core/geometry/support/webMercatorUtils"),g=require("@arcgis/core/Graphic"),w=require("@arcgis/core/layers/GraphicsLayer"),D=require("@turf/buffer"),R=require("@turf/convex"),S=require("@turf/helpers"),G=require("concaveman"),O=require("../../stores/index.js"),C=require("./district-controller.js"),I=require("./district-renderer.js"),v=require("./signal-renderer.js"),L=require("./sub-district-renderer.js");function q(o){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>o[t]})}}return e.default=o,Object.freeze(e)}const l=q(S);class k{constructor(e){this.detachmentLayerLoaded=!1,this.districtControllerOid=0,this.subDistrictControllerOid=0,this.signalOid=0,this.popupEnabled=!0,this.districtGraphics=[],this.subDistrictGraphics=[],this.signalGraphics=[],this.view=e,this.hasGpu=localStorage.getItem("gpu")!=="Unknown";const t=O.default.useAppDataStore;this.mapConfig=JSON.parse(JSON.stringify(t.mapConfig)),this.detachmentLayer=new w,this.view.map.add(this.detachmentLayer),this.districtRenderer=new I.default(e,this.hasGpu),this.subDistrictRenderer=new L.default(e,this.hasGpu),this.signalRenderer=new v.default(e,this.hasGpu)}async showSignalControlArea(e){this.detachmentLayerLoaded||await this.loadDetachmentLayer(),await this.clearSignalControlArea(),this.districtRenderer.setVisible(!1),this.subDistrictRenderer.setVisible(!1),this.signalRenderer.setClusterVisible(!1),this.signalRenderer.setPointVisible(!1);const t=[],s=[];for(const r of e.areaList){const n=new C.default(r,e.style||"");t.push(n),s.push(...n.subDistricts)}return this.districtRenderer.style=e.style||"",await this.districtRenderer.showDistricts(t),await this.subDistrictRenderer.showSubDistricts(s),await this.signalRenderer.showSignals(t),{status:0,message:"ok"}}async clearSignalControlArea(){return this.districtGraphics=[],this.subDistrictGraphics=[],this.signalGraphics=[],this.districtControllerOid=0,this.subDistrictControllerOid=0,this.signalOid=0,await this.districtRenderer.clearDistricts(),await this.subDistrictRenderer.clearSubDistricts(),await this.signalRenderer.clearSignals(),{status:0,message:"ok"}}setLayerVisibility(e){switch(e.visible===!1&&this.view.closePopup(),e.id){case"district":this.districtRenderer.setVisible(e.visible);break;case"subDistrict":this.subDistrictRenderer.setVisible(e.visible);break;case"signal":this.signalRenderer.setPointVisible(e.visible);break;case"signalCluster":this.signalRenderer.setClusterVisible(e.visible);break;case"shanghai_district":this.detachmentLayer.visible=e.visible;break}return{status:0,message:"ok"}}async locateSignalControlArea(e){switch(e.type){case"district":return await this.districtRenderer.locateDistrict(e.id);case"subDistrict":return await this.subDistrictRenderer.locateSubDistrict(e.id);case"signal":return await this.signalRenderer.locateSignal(e.id);default:return{status:1,message:"未知类型"}}}async highlightSignalControlArea(e){switch(this.view.closePopup(),e.type){case"district":return await this.districtRenderer.highlightDistrict(e.id)?(this.subDistrictRenderer.filter("district",e.id),this.signalRenderer.filter("district",e.id),{status:0,message:"ok"}):{status:1,message:"未找到区控"};case"subDistrict":{const{count:t,parentId:s}=await this.subDistrictRenderer.highlightSubDistrict(e.id);return t>0?(this.districtRenderer.filter(s),this.signalRenderer.filter("subDistrict",e.id),{status:0,message:"ok"}):{status:1,message:"未找到子区"}}case"signal":{const{districtId:t,subDistrictId:s,count:r}=await this.signalRenderer.highlightSignal(e.id);return r>0?(this.districtRenderer.filter(t),this.subDistrictRenderer.filter("subDistrict",s),await this.view.goTo({target:this.signalGraphics,scale:e.scale||1e3},{duration:this.hasGpu?1e3:0}),{status:0,message:"ok"}):{status:1,message:"未找到信号机"}}default:return{status:1,message:"未知类型"}}}async resetHighlight(){return this.districtRenderer.resetFilter(),this.subDistrictRenderer.resetFilter(),this.signalRenderer.resetFilter(),{status:0,message:"ok"}}generateGraphic(e,t,s){const r=e.getAllSignalCoordinates();let n=null;if(r.length>=2)if(r.length===2)n=l.lineString(r);else{if(t){const i=l.featureCollection(r.map(c=>l.point(c)));n=R(i)}else{const i=G(r,.5);i.length>=4&&(n=l.polygon([i]))}n||(n=l.lineString(r))}else if(r.length===1)n=l.point(r[0]);else return;const a=D(n.geometry,t?200:30,{units:"meters"}),u=new g({geometry:{type:"polyline",paths:a.geometry.coordinates},attributes:{ObjectID:t?this.districtControllerOid++:this.subDistrictControllerOid++,id:e.id,name:e.name,subDistrictCount:e.subDistrictCount,signalCount:e.signalCount,parentId:e.parentId,parentName:e.parentName,selected:s,type:t?"district":"subDistrict"}});t?this.districtGraphics.push(u):this.subDistrictGraphics.push(u);for(const i of e.subDistricts)this.generateGraphic(i,!1,s);e.signals.forEach(i=>{const c=new g({geometry:{type:"point",x:i.longitude,y:i.latitude},attributes:{ObjectID:this.signalOid++,id:i.id,name:i.name,signalId:i.signalId,nodeId:i.nodeId,isKey:i.isKey,districtId:t?e.id:e.parentId,districtName:t?e.name:e.parentName,subDistrictId:t?"":e.id,subDistrictName:t?"":e.name,type:"signal",selected:!0}});this.signalGraphics.push(c)})}async loadDetachmentLayer(){const e=this.mapConfig.baseLayers;if(!e)return;const t=e.find(s=>s.options.id==="shanghai_district");if(t)try{const r=await(await fetch("/GisViewerAssets/ShangHai/Layers/district.json")).json(),n=[],{renderer:a,labelingInfo:u}=t.options;r.features.forEach(i=>{const c=i.attributes.ZD_NAME;if(c!=="高架支队"){let d=new y.Polygon({rings:i.geometry.rings});d=m.webMercatorToGeographic(d);const h=new g({geometry:d,attributes:i.attributes});if(a){if(a.type==="simple")h.symbol=a.symbol;else if(a.type==="unique-value"){const b=h.getAttribute("OBJECTID"),f=a.uniqueValueInfos.find(p=>p.value==b);h.symbol=f?f.symbol:a.defaultSymbol}}else h.symbol={type:"simple-fill",color:[227,237,255,.4],outline:{color:[255,195,153],width:2}};if(n.push(h),u&&c!=="边防港航支队"&&c!=="机场支队"){const b=new g({geometry:d.centroid,symbol:{...u.symbol,text:c}});n.push(b)}}}),this.detachmentLayer.addMany(n),this.detachmentLayerLoaded=!0}catch(s){console.error("加载支队图层失败:",s);return}}}exports.default=k;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IResult } from '../../../types';
|
|
2
|
+
import DistrictController from './district-controller';
|
|
3
|
+
export default class CrossRenderer {
|
|
4
|
+
private view;
|
|
5
|
+
private hasGpu;
|
|
6
|
+
private signalMarkerLayer;
|
|
7
|
+
private signalPictureLayer;
|
|
8
|
+
private signalClusterLayer;
|
|
9
|
+
constructor(view: __esri.MapView | __esri.SceneView, hasGpu: boolean);
|
|
10
|
+
showSignals(controllers: DistrictController[]): Promise<void>;
|
|
11
|
+
clearSignals(): Promise<void>;
|
|
12
|
+
setPointVisible(visible: boolean): Promise<void>;
|
|
13
|
+
setClusterVisible(visible: boolean): void;
|
|
14
|
+
locateSignal(id: string): Promise<IResult>;
|
|
15
|
+
highlightSignal(id: string): Promise<{
|
|
16
|
+
districtId: string;
|
|
17
|
+
subDistrictId: string;
|
|
18
|
+
count: number;
|
|
19
|
+
}>;
|
|
20
|
+
filter(type: string, id: string): void;
|
|
21
|
+
resetFilter(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("@arcgis/core/Graphic"),u=require("@arcgis/core/layers/FeatureLayer"),l=require("./layer-symbol.js");class y{constructor(e,a){this.view=e,this.hasGpu=a,this.signalMarkerLayer=new u(l.signalMarkerLayerOptions),this.signalMarkerLayer.spatialReference=e.spatialReference,this.signalMarkerLayer.popupEnabled=!0,this.signalPictureLayer=new u(l.signalPictureLayerOptions),this.signalPictureLayer.spatialReference=e.spatialReference,this.signalPictureLayer.popupEnabled=!0,this.signalClusterLayer=new u(l.signalClusterLayerOptions),this.signalClusterLayer.spatialReference=e.spatialReference,this.signalClusterLayer.popupEnabled=!0,this.view.map.addMany([this.signalMarkerLayer,this.signalPictureLayer,this.signalClusterLayer])}async showSignals(e){await this.clearSignals();let a=0;const s=[];e.forEach(r=>{r.signals.forEach(i=>{const t=new d({geometry:{type:"point",longitude:i.longitude,latitude:i.latitude},attributes:{ObjectID:a++,id:i.id,name:i.name,signalId:i.signalId,nodeId:i.nodeId||i.id,districtId:r.id,districtName:r.name,subDistrictId:"",subDistrictName:"",isKey:i.isKey,type:"signal",selected:!0}});s.push(t)}),r.subDistricts.forEach(i=>{i.signals.forEach(t=>{const n=new d({geometry:{type:"point",longitude:t.longitude,latitude:t.latitude},attributes:{ObjectID:a++,id:t.id,name:t.name,signalId:t.signalId,nodeId:t.nodeId||t.id,districtId:r.id,districtName:r.name,subDistrictId:i.id,subDistrictName:i.name,isKey:t.isKey,type:"signal",selected:!0}});s.push(n)})})}),await this.signalMarkerLayer.applyEdits({addFeatures:s}),await this.signalPictureLayer.applyEdits({addFeatures:s}),await this.signalClusterLayer.applyEdits({addFeatures:s})}async clearSignals(){let e=await this.signalMarkerLayer.queryFeatures();await this.signalMarkerLayer.applyEdits({deleteFeatures:e.features}),this.signalMarkerLayer.definitionExpression="1=1",e=await this.signalPictureLayer.queryFeatures(),await this.signalPictureLayer.applyEdits({deleteFeatures:e.features}),this.signalPictureLayer.definitionExpression="1=1",e=await this.signalClusterLayer.queryFeatures(),await this.signalClusterLayer.applyEdits({deleteFeatures:e.features}),this.signalClusterLayer.definitionExpression="1=1"}async setPointVisible(e){this.signalMarkerLayer.visible=e,this.signalPictureLayer.visible=e}setClusterVisible(e){this.signalClusterLayer.visible=e}async locateSignal(e){return{status:0,message:"ok"}}async highlightSignal(e){let a="",s="";const r=this.signalMarkerLayer.definitionExpression;this.signalMarkerLayer.definitionExpression=`signalId = '${e}'`;const i=await this.signalMarkerLayer.queryFeatures(),t=i.features.length;if(t>0){const n=i.features[0].attributes.districtId||"",c=i.features[0].attributes.subDistrictId||"";return await this.view.goTo(i.features,{duration:this.hasGpu?1e3:0}),{districtId:n,subDistrictId:c,count:t}}else this.signalMarkerLayer.definitionExpression=r;return{districtId:a,subDistrictId:s,count:t}}filter(e,a){const s=`${e==="district"?"districtId":"subDistrictId"} = '${a}'`;this.signalClusterLayer.definitionExpression=s,this.signalMarkerLayer.definitionExpression=s,this.signalPictureLayer.definitionExpression=s}resetFilter(){const e="1=1";this.signalClusterLayer.definitionExpression=e,this.signalMarkerLayer.definitionExpression=e,this.signalPictureLayer.definitionExpression=e}}exports.default=y;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IResult } from '../../../types';
|
|
2
|
+
import DistrictController from './district-controller';
|
|
3
|
+
export default class SubDistrictRenderer {
|
|
4
|
+
private view;
|
|
5
|
+
private hasGpu;
|
|
6
|
+
private subDistrictPointLayer;
|
|
7
|
+
constructor(view: __esri.MapView | __esri.SceneView, hasGpu: boolean);
|
|
8
|
+
showSubDistricts(controllers: DistrictController[]): Promise<void>;
|
|
9
|
+
clearSubDistricts(): Promise<void>;
|
|
10
|
+
setVisible(visible: boolean): void;
|
|
11
|
+
/**
|
|
12
|
+
* 定位子区
|
|
13
|
+
* @param id 子区ID
|
|
14
|
+
*/
|
|
15
|
+
locateSubDistrict(id: string): Promise<IResult>;
|
|
16
|
+
/**
|
|
17
|
+
* 高亮子区, 其他子区隐藏
|
|
18
|
+
* @param id 子区ID
|
|
19
|
+
* @return 返回高亮子区的数量以及区控id
|
|
20
|
+
*/
|
|
21
|
+
highlightSubDistrict(id: string): Promise<{
|
|
22
|
+
count: number;
|
|
23
|
+
parentId: string;
|
|
24
|
+
}>;
|
|
25
|
+
filter(type: string, id: string): void;
|
|
26
|
+
resetFilter(): void;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("@arcgis/core/Graphic"),o=require("@arcgis/core/layers/FeatureLayer"),c=require("./layer-symbol.js");class d{constructor(t,i){this.view=t,this.hasGpu=i,this.subDistrictPointLayer=new o(c.subDistrictPointLayerOptions),this.subDistrictPointLayer.spatialReference=t.spatialReference,this.subDistrictPointLayer.popupEnabled=!0,this.view.map.add(this.subDistrictPointLayer)}async showSubDistricts(t){await this.clearSubDistricts();let i=0;const s=[],r=[];t.forEach(e=>{r.push({value:e.id,label:e.name,symbol:{type:"simple-marker",style:"circle",color:[0,0,0,0],size:"8px",outline:{color:[...e.areaColor],width:4}}}),e.signals.forEach(a=>{const u=new n({geometry:{type:"point",longitude:a.longitude,latitude:a.latitude},attributes:{ObjectID:i++,id:a.id,name:a.name,subDistrictId:e.id,subDistrictName:e.name,districtId:e.parentId,districtName:e.parentName,signalCount:e.signalCount}});s.push(u)})}),this.subDistrictPointLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-marker",color:"gray",size:"8px",outline:{color:"white",width:1}},defaultLabel:"其他子区",uniqueValueInfos:r,visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:24,value:2500},{size:20,value:5e3},{size:8,value:18055.954822000003},{size:4,value:144447.638572},{size:2,value:1155581108577e-6}]}]},await this.subDistrictPointLayer.applyEdits({addFeatures:s}),await this.view.goTo(s,{duration:this.hasGpu?1e3:0})}async clearSubDistricts(){const t=await this.subDistrictPointLayer.queryFeatures();t.features.length>0&&await this.subDistrictPointLayer.applyEdits({deleteFeatures:t.features}),this.subDistrictPointLayer.definitionExpression="1=1"}setVisible(t){this.subDistrictPointLayer.visible=t}async locateSubDistrict(t){const i=this.subDistrictPointLayer.createQuery();i.where=`subDistrictId = '${t}'`,i.returnGeometry=!0;const s=await this.subDistrictPointLayer.queryFeatures(i);return s.features.length>0?(await this.view.goTo(s.features,{duration:this.hasGpu?1e3:0}),{status:0,message:"ok"}):{status:1,message:"未找到区控"}}async highlightSubDistrict(t){let i="";const s=this.subDistrictPointLayer.definitionExpression;this.subDistrictPointLayer.definitionExpression=`subDistrictId = '${t}'`;const r=await this.subDistrictPointLayer.queryFeatures(),e=r.features.length;return e>0?(i=r.features[0].attributes.districtId,await this.view.goTo(r.features,{duration:this.hasGpu?1e3:0})):this.subDistrictPointLayer.definitionExpression=s,{count:e,parentId:i}}filter(t,i){const s=`${t==="district"?"districtId":"subDistrictId"} = '${i}'`;this.subDistrictPointLayer.definitionExpression=s}resetFilter(){this.subDistrictPointLayer.definitionExpression="1=1"}}exports.default=d;
|
package/package.json
CHANGED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import o from "../common-utils.mjs";
|
|
2
|
-
class e {
|
|
3
|
-
constructor(i, n) {
|
|
4
|
-
this.parentName = "", this.signals = [], this.subDistricts = [], this.signalCount = 0, this.subDistrictCount = 0, this.id = i.name, this.name = i.areaDesc, this.parentId = i.parentId, this.areaColor = n === "alarm" ? [255, 0, 0] : [61, 139, 249];
|
|
5
|
-
for (const t of i.children)
|
|
6
|
-
if (t.children) {
|
|
7
|
-
const s = new e(t, n);
|
|
8
|
-
s.id = t.id, s.name = `SS ${t.name}`, s.parentId = this.id, s.parentName = this.name, this.subDistricts.push(s), this.subDistrictCount++, this.signalCount += s.signalCount;
|
|
9
|
-
} else if (o.isCoordinateValid(t)) {
|
|
10
|
-
const s = {
|
|
11
|
-
id: t.id,
|
|
12
|
-
name: t.name,
|
|
13
|
-
parentId: t.parentId,
|
|
14
|
-
latitude: Number(t.latitude),
|
|
15
|
-
longitude: Number(t.longitude),
|
|
16
|
-
signalId: t.signalId,
|
|
17
|
-
nodeId: t.nodeId,
|
|
18
|
-
isKey: t.isKey === 1
|
|
19
|
-
};
|
|
20
|
-
this.signals.push(s), this.signalCount++;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 获取区控/子区下的所有信号机
|
|
25
|
-
* @returns
|
|
26
|
-
*/
|
|
27
|
-
getAllSignalCoordinates() {
|
|
28
|
-
const i = [];
|
|
29
|
-
for (const n of this.signals)
|
|
30
|
-
i.push([n.longitude, n.latitude]);
|
|
31
|
-
for (const n of this.subDistricts)
|
|
32
|
-
i.push(...n.getAllSignalCoordinates());
|
|
33
|
-
return i;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export {
|
|
37
|
-
e as default
|
|
38
|
-
};
|