|
|
|
@ -1,431 +1,24 @@
|
|
|
|
|
import { useEffect, useState } from 'react'; |
|
|
|
|
import { useSelector } from 'react-redux'; |
|
|
|
|
import { handlerGetCircleCoord } from '../../../../utility/DrawUtil'; |
|
|
|
|
import { handlerGetCircleCoord } from '../../../../utility/MapUtils'; |
|
|
|
|
|
|
|
|
|
export const dummyPolyline = [ |
|
|
|
|
{ |
|
|
|
|
planSno: 242, |
|
|
|
|
groupId: 'C807F9', |
|
|
|
|
cstmrSno: 2, |
|
|
|
|
memberName: '팔네트웍스', |
|
|
|
|
email: 'dhji@palnet.co.kr', |
|
|
|
|
hpno: '01082504456', |
|
|
|
|
clncd: '+82', |
|
|
|
|
schFltStDt: '2023-11-15 10:00:00', |
|
|
|
|
schFltEndDt: '2023-11-15 16:31:18', |
|
|
|
|
fltPurpose: 'EDUCATION_FLIGHT', |
|
|
|
|
aprvlYn: 'Y', |
|
|
|
|
delYn: 'N', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 10:00:00', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-15 10:00:00', |
|
|
|
|
docState: 'R', |
|
|
|
|
areaList: [ |
|
|
|
|
{ |
|
|
|
|
planAreaSno: 242, |
|
|
|
|
planSno: 242, |
|
|
|
|
areaType: 'LINE', |
|
|
|
|
fltAreaAddr: '인천광역시 계양구 봉오대로463번길 26', |
|
|
|
|
bufferZone: 100, |
|
|
|
|
fltElev: '100', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-14 15:57:21', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-14 15:57:21', |
|
|
|
|
docState: 'R', |
|
|
|
|
coordList: [ |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 515, |
|
|
|
|
planAreaSno: 242, |
|
|
|
|
lat: 37.530121373976954, |
|
|
|
|
lon: 126.69937537668989, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-14 15:57:21', |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 516, |
|
|
|
|
planAreaSno: 242, |
|
|
|
|
lat: 37.53072487369214, |
|
|
|
|
lon: 126.70586394488811, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-14 15:57:21', |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 517, |
|
|
|
|
planAreaSno: 242, |
|
|
|
|
lat: 37.52748497586097, |
|
|
|
|
lon: 126.70594405066777, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-14 15:57:21', |
|
|
|
|
docState: 'R' |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
bufferCoordList: [ |
|
|
|
|
{ |
|
|
|
|
lat: 37.5316197886034, |
|
|
|
|
lon: 126.70573274477093, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.531625304714495, |
|
|
|
|
lon: 126.70590392813509, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53161017252108, |
|
|
|
|
lon: 126.70607419460082, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.531574739035676, |
|
|
|
|
lon: 126.70623963959872, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53151981682155, |
|
|
|
|
lon: 126.70639646913716, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53144666535704, |
|
|
|
|
lon: 126.70654108681464, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.531356962150426, |
|
|
|
|
lon: 126.70667017629863, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53125276426794, |
|
|
|
|
lon: 126.70678077737894, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53113646115761, |
|
|
|
|
lon: 126.70687035385097, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53101071985107, |
|
|
|
|
lon: 126.7069368516722, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53087842380056, |
|
|
|
|
lon: 126.70697874605814, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.530742606753975, |
|
|
|
|
lon: 126.70699507643907, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.527502707958675, |
|
|
|
|
lon: 126.70707513332411, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.526601887803295, |
|
|
|
|
lon: 126.70709739090397, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.526566413313844, |
|
|
|
|
lon: 126.70483525338567, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.52971486141971, |
|
|
|
|
lon: 126.70475736339164, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.529226466217224, |
|
|
|
|
lon: 126.69950664996875, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.52912191557935, |
|
|
|
|
lon: 126.69838296584224, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.53091172822204, |
|
|
|
|
lon: 126.69812038962549, |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
lat: 37.5316197886034, |
|
|
|
|
lon: 126.70573274477093, |
|
|
|
|
docState: 'R' |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
arcrftList: [ |
|
|
|
|
{ |
|
|
|
|
arcrftSno: 1, |
|
|
|
|
idntfNum: 'PA0001', |
|
|
|
|
prdctNum: 'PAV_001_PPAL20230914', |
|
|
|
|
arcrftTypeCd: '01', |
|
|
|
|
arcrftModelNm: 'PAV_001', |
|
|
|
|
prdctCmpnNm: 'PalNetworks', |
|
|
|
|
arcrftLngth: 0, |
|
|
|
|
arcrftWdth: 0, |
|
|
|
|
arcrftHght: 0, |
|
|
|
|
arcrftWght: 0, |
|
|
|
|
wghtTypeCd: '250G+2KG-', |
|
|
|
|
takeoffWght: 0, |
|
|
|
|
useYn: 'Y', |
|
|
|
|
cameraYn: 'N', |
|
|
|
|
insrncYn: 'Y', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-09-14 17:32:59', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-09-14 17:32:59', |
|
|
|
|
docState: 'R' |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
corpRegYn: 'N', |
|
|
|
|
serviceType: 'PAV-KAC' |
|
|
|
|
} |
|
|
|
|
]; |
|
|
|
|
export const dummyPolygon = [ |
|
|
|
|
{ |
|
|
|
|
planSno: 244, |
|
|
|
|
groupId: 'C807F9', |
|
|
|
|
cstmrSno: 2, |
|
|
|
|
memberName: '팔네트웍스', |
|
|
|
|
email: 'dhji@palnet.co.kr', |
|
|
|
|
hpno: '01082504456', |
|
|
|
|
clncd: '+82', |
|
|
|
|
schFltStDt: '2023-11-15 16:26:13', |
|
|
|
|
schFltEndDt: '2023-11-15 18:21:13', |
|
|
|
|
fltPurpose: 'TRAFFIC_MANAGEMENT', |
|
|
|
|
fltType: 'COMMERCIAL', |
|
|
|
|
fltTypeNm: '상업용', |
|
|
|
|
aprvlYn: 'Y', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-15 16:22:46', |
|
|
|
|
serviceType: 'PAV-KAC', |
|
|
|
|
corpRegYn: 'N', |
|
|
|
|
pdfUrl: '/api/comn/file/download/387', |
|
|
|
|
areaList: [ |
|
|
|
|
{ |
|
|
|
|
planAreaSno: 244, |
|
|
|
|
planSno: 244, |
|
|
|
|
areaType: 'POLYGON', |
|
|
|
|
fltAreaAddr: '인천광역시 계양구 26', |
|
|
|
|
bufferZone: 0, |
|
|
|
|
fltElev: '100', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-15 16:22:46', |
|
|
|
|
docState: 'R', |
|
|
|
|
coordList: [ |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 522, |
|
|
|
|
planAreaSno: 244, |
|
|
|
|
lat: 37.575642815639966, |
|
|
|
|
lon: 126.7053377657183, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 523, |
|
|
|
|
planAreaSno: 244, |
|
|
|
|
lat: 37.56753805633005, |
|
|
|
|
lon: 126.7033921798162, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 524, |
|
|
|
|
planAreaSno: 244, |
|
|
|
|
lat: 37.56832705395003, |
|
|
|
|
lon: 126.71429651010209, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
docState: 'R' |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 525, |
|
|
|
|
planAreaSno: 244, |
|
|
|
|
lat: 37.57553523611571, |
|
|
|
|
lon: 126.71606111127, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
docState: 'R' |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
arcrftList: [ |
|
|
|
|
{ |
|
|
|
|
planArcrftSno: 240, |
|
|
|
|
planSno: 244, |
|
|
|
|
arcrftSno: 0, |
|
|
|
|
idntfNum: 'PA0001', |
|
|
|
|
arcrftTypeCd: 'UNMANNED_AIRCRAFT', |
|
|
|
|
arcrftLngth: 0, |
|
|
|
|
arcrftWdth: 0, |
|
|
|
|
arcrftHght: 0, |
|
|
|
|
arcrftWght: 0, |
|
|
|
|
takeoffWght: 0, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-15 16:22:46', |
|
|
|
|
docState: 'R', |
|
|
|
|
acrftInsuranceYn: 'N', |
|
|
|
|
arcrftWghtCd: 'W250G_LOE' |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
pilotList: [ |
|
|
|
|
{ |
|
|
|
|
planPilotSno: 242, |
|
|
|
|
planSno: 244, |
|
|
|
|
cstmrSno: 2, |
|
|
|
|
groupNm: 'KAC', |
|
|
|
|
memberName: '팔네트웍스', |
|
|
|
|
email: 'dhji@palnet.co.kr', |
|
|
|
|
hpno: '01082504456', |
|
|
|
|
clncd: '+82', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-15 16:22:46', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-15 16:22:46', |
|
|
|
|
docState: 'R' |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
arcrftWght: '최대이륙중량 250g 이하', |
|
|
|
|
elev: '100' |
|
|
|
|
} |
|
|
|
|
]; |
|
|
|
|
export const dummyCircle = [ |
|
|
|
|
{ |
|
|
|
|
planSno: 239, |
|
|
|
|
groupId: 'C807F9', |
|
|
|
|
cstmrSno: 2, |
|
|
|
|
memberName: '팔네트웍스', |
|
|
|
|
email: 'dhji@palnet.co.kr', |
|
|
|
|
hpno: '01082504456', |
|
|
|
|
clncd: '+82', |
|
|
|
|
schFltStDt: '2023-11-14 12:01:00', |
|
|
|
|
schFltEndDt: '2023-11-14 13:56:00', |
|
|
|
|
fltPurpose: 'TRAFFIC_MANAGEMENT', |
|
|
|
|
fltType: 'COMMERCIAL', |
|
|
|
|
fltTypeNm: '상업용', |
|
|
|
|
aprvlYn: 'Y', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-13 11:59:10', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-13 11:59:13', |
|
|
|
|
serviceType: 'PAV-KAC', |
|
|
|
|
corpRegYn: 'N', |
|
|
|
|
pdfUrl: '/api/comn/file/download/382', |
|
|
|
|
areaList: [ |
|
|
|
|
{ |
|
|
|
|
planAreaSno: 239, |
|
|
|
|
planSno: 239, |
|
|
|
|
areaType: 'CIRCLE', |
|
|
|
|
fltMethod: 'CLOCK_FLIGHT', |
|
|
|
|
fltAreaAddr: '인천광역시 부평구 401', |
|
|
|
|
bufferZone: 100, |
|
|
|
|
fltElev: '12', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-13 11:59:10', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-13 11:59:10', |
|
|
|
|
docState: 'R', |
|
|
|
|
coordList: [ |
|
|
|
|
{ |
|
|
|
|
planAreaCoordSno: 507, |
|
|
|
|
planAreaSno: 239, |
|
|
|
|
lat: 37.52165750816398, |
|
|
|
|
lon: 126.71042734097875, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-13 11:59:10', |
|
|
|
|
docState: 'R' |
|
|
|
|
} |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
arcrftList: [ |
|
|
|
|
{ |
|
|
|
|
planArcrftSno: 235, |
|
|
|
|
planSno: 239, |
|
|
|
|
arcrftSno: 0, |
|
|
|
|
idntfNum: 'PA0001', |
|
|
|
|
arcrftTypeCd: 'UNMANNED_AIRCRAFT', |
|
|
|
|
arcrftLngth: 0, |
|
|
|
|
arcrftWdth: 0, |
|
|
|
|
arcrftHght: 0, |
|
|
|
|
arcrftWght: 0, |
|
|
|
|
takeoffWght: 0, |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-13 11:59:10', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-13 11:59:10', |
|
|
|
|
docState: 'R', |
|
|
|
|
acrftInsuranceYn: 'N', |
|
|
|
|
arcrftWghtCd: 'W250G_LOE' |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
pilotList: [ |
|
|
|
|
{ |
|
|
|
|
planPilotSno: 237, |
|
|
|
|
planSno: 239, |
|
|
|
|
cstmrSno: 2, |
|
|
|
|
groupNm: 'KAC', |
|
|
|
|
memberName: '팔네트웍스', |
|
|
|
|
email: 'dhji@palnet.co.kr', |
|
|
|
|
hpno: '01082504456', |
|
|
|
|
clncd: '+82', |
|
|
|
|
createUserId: 'palnet', |
|
|
|
|
createDt: '2023-11-13 11:59:10', |
|
|
|
|
updateUserId: 'palnet', |
|
|
|
|
updateDt: '2023-11-13 11:59:10', |
|
|
|
|
docState: 'R' |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
elev: '12', |
|
|
|
|
arcrftWght: '최대이륙중량 250g 이하' |
|
|
|
|
} |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
export default function DronPlan({ map, planGeo, setPlanGeo }) { |
|
|
|
|
export const DronPlan = ({ map, planGeo, setPlanGeo }) => { |
|
|
|
|
const { controlGpList } = useSelector(state => state.controlGpState); |
|
|
|
|
|
|
|
|
|
// 비행예상경로 목록
|
|
|
|
|
const { controlGpFltPlanList } = useSelector( |
|
|
|
|
state => state.controlGpFltPlanState |
|
|
|
|
); |
|
|
|
|
const [objArr, setObjArr] = useState([]); |
|
|
|
|
|
|
|
|
|
const [areaArr, setAreaArr] = useState([]); |
|
|
|
|
const [bufferArr, setBufferArr] = useState([]); |
|
|
|
|
// 비행중인 기체의 controlId 목록
|
|
|
|
|
const [controlIdArr, setControlIdArr] = useState([]); |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (controlGpFltPlanList) { |
|
|
|
|
console.log(controlGpFltPlanList, 'planList'); |
|
|
|
|
planInit(); |
|
|
|
|
} |
|
|
|
|
}, [controlGpFltPlanList]); |
|
|
|
|
|
|
|
|
|
// useEffect(() => {
|
|
|
|
|
// planInit();
|
|
|
|
|
// }, []);
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (controlGpList) { |
|
|
|
|
const listArr = controlGpList.map(gpList => { |
|
|
|
@ -439,6 +32,7 @@ export default function DronPlan({ map, planGeo, setPlanGeo }) {
|
|
|
|
|
} |
|
|
|
|
}, [controlGpList]); |
|
|
|
|
|
|
|
|
|
// 비행예상경로 geoJson 업데이트
|
|
|
|
|
const updatePlanGeo = feature => { |
|
|
|
|
setPlanGeo(prev => ({ |
|
|
|
|
...prev, |
|
|
|
@ -446,11 +40,8 @@ export default function DronPlan({ map, planGeo, setPlanGeo }) {
|
|
|
|
|
})); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// 비행예상경로 생성 준비 셋팅
|
|
|
|
|
const planInit = () => { |
|
|
|
|
// const planList = dummyPolyline;
|
|
|
|
|
// const planList = dummyPolygon;
|
|
|
|
|
// const planList = dummyCircle;
|
|
|
|
|
|
|
|
|
|
const planList = controlGpFltPlanList; |
|
|
|
|
planList.forEach(plan => { |
|
|
|
|
const areaList = plan.areaList; |
|
|
|
@ -480,6 +71,7 @@ export default function DronPlan({ map, planGeo, setPlanGeo }) {
|
|
|
|
|
map?.getSource('plan').setData(planGeo); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// circle 비행예상경로 생성
|
|
|
|
|
const createCircle = (paths, bufferZone, idntfNum) => { |
|
|
|
|
const center = [paths[0][0], paths[0][1]]; |
|
|
|
|
const circlePaths = handlerGetCircleCoord(center, bufferZone); |
|
|
|
@ -494,10 +86,10 @@ export default function DronPlan({ map, planGeo, setPlanGeo }) {
|
|
|
|
|
properties: { id: 'circle', idntfNum: idntfNum } |
|
|
|
|
}; |
|
|
|
|
updatePlanGeo(circle); |
|
|
|
|
setObjArr(prev => [...prev, { idntfNum: idntfNum, obj: circle }]); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// polygon 비행예상경로 생성
|
|
|
|
|
const createPolygon = (paths, idntfNum) => { |
|
|
|
|
if (paths && paths[0].length > 2) { |
|
|
|
|
const polygon = { |
|
|
|
@ -509,10 +101,10 @@ export default function DronPlan({ map, planGeo, setPlanGeo }) {
|
|
|
|
|
properties: { id: 'polygon', idntfNum: idntfNum } |
|
|
|
|
}; |
|
|
|
|
updatePlanGeo(polygon); |
|
|
|
|
setObjArr(prev => [...prev, { idntfNum: idntfNum, obj: polygon }]); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// wayPoint 비행예상경로 생성
|
|
|
|
|
const createWayPoint = (paths, bufferList, idntfNum) => { |
|
|
|
|
if (paths && paths.length > 1) { |
|
|
|
|
const line = { |
|
|
|
@ -524,7 +116,6 @@ export default function DronPlan({ map, planGeo, setPlanGeo }) {
|
|
|
|
|
properties: { id: 'line', idntfNum: idntfNum } |
|
|
|
|
}; |
|
|
|
|
updatePlanGeo(line); |
|
|
|
|
setObjArr(prev => [...prev, { idntfNum: idntfNum, obj: line }]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (bufferList && bufferList.length > 1) { |
|
|
|
@ -543,32 +134,23 @@ export default function DronPlan({ map, planGeo, setPlanGeo }) {
|
|
|
|
|
properties: { id: 'buffer', idntfNum: idntfNum } |
|
|
|
|
}; |
|
|
|
|
updatePlanGeo(buffer); |
|
|
|
|
setObjArr(prev => [...prev, { idntfNum: idntfNum, obj: buffer }]); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// 표출된 비행예상경로 삭제
|
|
|
|
|
const clear = diffArr => { |
|
|
|
|
if (objArr) { |
|
|
|
|
const clearObj = objArr |
|
|
|
|
.filter(obj => diffArr.includes(obj.idntfNum)) |
|
|
|
|
.map(obj => obj.obj); |
|
|
|
|
|
|
|
|
|
clearObj.map(obj => { |
|
|
|
|
const feature = planGeo.features.filter( |
|
|
|
|
geo => geo.properties.idntfNum !== obj.properties.idntfNum |
|
|
|
|
); |
|
|
|
|
setPlanGeo(prev => ({ |
|
|
|
|
...prev, |
|
|
|
|
features: feature |
|
|
|
|
})); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const saveObj = objArr.filter(obj => !diffArr.includes(obj.idntfNum)); |
|
|
|
|
setObjArr(saveObj); |
|
|
|
|
if (planGeo.features.length > 0) { |
|
|
|
|
const existObj = planGeo.features.filter( |
|
|
|
|
obj => !diffArr.includes(obj.properties.idntfNum) |
|
|
|
|
); |
|
|
|
|
setPlanGeo(prev => ({ |
|
|
|
|
...prev, |
|
|
|
|
features: existObj |
|
|
|
|
})); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
map?.getSource('plan').setData(planGeo); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|