박상현 11 months ago
parent
commit
62d67e8698
  1. 13
      src/components/laanc/map/LaancAreaMap.js
  2. 83
      src/components/map/mapbox/draw/LaancDrawControl.js

13
src/components/laanc/map/LaancAreaMap.js

@ -274,11 +274,11 @@ export default function LaancAreaMap({
// dispatch(AREA_COORDINATE_LIST_SAVE(init)); // dispatch(AREA_COORDINATE_LIST_SAVE(init));
// }; // };
const handlerCoordinates = areaInfo => { const handlerAreaInfoToAreaList = areaInfo => {
const initAreaList = initFlightBas.initDetail.areaList.concat(); const initAreaList = initFlightBas.initDetail.areaList.concat();
const coordList = []; const coordList = [];
areaInfo.coordinates.forEach((c, idx) => { areaInfo.coordinates.forEach(c => {
const coord = Object.assign({}, initFlightBas['coord']); const coord = Object.assign({}, initFlightBas['coord']);
coord.lat = c.lat; coord.lat = c.lat;
coord.lon = c.lon; coord.lon = c.lon;
@ -286,7 +286,7 @@ export default function LaancAreaMap({
coordList.push(coord); coordList.push(coord);
}); });
const areaList = initAreaList.map((area, idx) => { const areaList = initAreaList.map(area => {
return { return {
...area, ...area,
bufferZone: areaInfo.bufferZone, bufferZone: areaInfo.bufferZone,
@ -295,6 +295,12 @@ export default function LaancAreaMap({
}; };
}); });
return areaList;
};
const handlerCoordinates = areaInfo => {
const areaList = handlerAreaInfoToAreaList(areaInfo);
if (areaInfo.areaType === 'LINE' || areaInfo.areaType === 'POLYGON') { if (areaInfo.areaType === 'LINE' || areaInfo.areaType === 'POLYGON') {
dispatch(FLIGHT_PLAN_AREA_BUFFER_LIST.request(areaList)); dispatch(FLIGHT_PLAN_AREA_BUFFER_LIST.request(areaList));
} else { } else {
@ -410,6 +416,7 @@ export default function LaancAreaMap({
handlerCoordinates={handlerCoordinates} handlerCoordinates={handlerCoordinates}
handlerInitCoordinates={handlerInitCoordinates} handlerInitCoordinates={handlerInitCoordinates}
setSaveData={setSaveData} setSaveData={setSaveData}
handlerAreaInfoToAreaList={handlerAreaInfoToAreaList}
/> />
<FeatureAirZone map={mapObject} mapboxgl={mapboxgl} /> <FeatureAirZone map={mapObject} mapboxgl={mapboxgl} />
{modal ? ( {modal ? (

83
src/components/map/mapbox/draw/LaancDrawControl.js

@ -13,6 +13,7 @@ import {
import { drawTypeChangeAction } from '../../../../modules/control/map/actions/controlMapActions'; import { drawTypeChangeAction } from '../../../../modules/control/map/actions/controlMapActions';
import MapboxDraw from '@mapbox/mapbox-gl-draw'; import MapboxDraw from '@mapbox/mapbox-gl-draw';
import { CircleMode } from 'mapbox-gl-draw-circle'; import { CircleMode } from 'mapbox-gl-draw-circle';
import axios from '../../../../modules/utils/customAxiosUtil';
export const LaancDrawControl = props => { export const LaancDrawControl = props => {
const dispatch = useDispatch(); const dispatch = useDispatch();
@ -235,11 +236,8 @@ export const LaancDrawControl = props => {
}; };
// 모든 비정상상황 체크 // 모든 비정상상황 체크
const handlerAbnormalityCheck = (data, mode) => { const handlerAbnormalityCheck = async (data, mode) => {
const isBreak1 = handlerIsSpecialFlight(data, mode); console.log('비정상체크');
const isBreak2 = handlerIsUnableArea(data, mode);
if (isBreak1) return;
if (isBreak2) return;
const initCoord = const initCoord =
mode === 'LINE' mode === 'LINE'
@ -251,7 +249,53 @@ export const LaancDrawControl = props => {
: null; : null;
const datas = { coord: initCoord, mode: mode }; const datas = { coord: initCoord, mode: mode };
handlerSaveAreaInfo(datas); const areaInfo = handlerSettingAreaInfo(datas);
const areaList = props.handlerAreaInfoToAreaList(areaInfo);
const isBreak1 = handlerIsSpecialFlight(data, mode);
const isBreak2 = handlerIsUnableArea(data, mode);
if (isBreak1 || isBreak2) return;
try {
console.log('unableElev');
const result = await axios.post(`api/bas/laanc/valid/elev`, areaList);
if (result.data[0] === 0) {
props.setModal({
title: '비행 불가 지역',
desc: (
<>
설정하신 비행구역 허용고도가 0m인 구역이 있습니다.
<br />
비행구역 설정 허용고도를 다시 확인해주시기 바랍니다.
</>
),
isOpen: true
});
handlerRemoveError(data.id);
return;
} else {
props.handlerSaveCheck(true);
}
} catch (error) {
alert('에러 발생');
}
props.handlerCoordinates(areaInfo);
setIsDrawDone(true);
const viewCoordObj = drawObj
.getAll()
.features.filter(o => o.properties.id !== 'BUFFER');
props.setViewCoordObj(viewCoordObj);
if (viewCoordObj.length > 19) {
props.handlerAddChange('overAdd', true);
} else {
props.handlerAddChange('isViewAdd', true);
}
}; };
// 비가시권 검사 // 비가시권 검사
@ -374,12 +418,12 @@ export const LaancDrawControl = props => {
}; };
// areaInfo 셋팅 // areaInfo 셋팅
const handlerSaveAreaInfo = data => { const handlerSettingAreaInfo = data => {
if (!data.coord || !data.mode) { if (!data.coord || !data.mode) {
alert('에러 발생. 다시 시도해 주세요.'); alert('에러 발생. 다시 시도해 주세요.');
return; return;
} }
console.log('saveAreaInfo'); console.log('settingeAreaInfo');
const areaInfo = { const areaInfo = {
coordinates: [], coordinates: [],
@ -416,20 +460,21 @@ export const LaancDrawControl = props => {
areaInfo.bufferZone = feature[0].properties.radiusInKm * 1000; areaInfo.bufferZone = feature[0].properties.radiusInKm * 1000;
} }
props.handlerCoordinates(areaInfo); return areaInfo;
setIsDrawDone(true); // props.handlerCoordinates(areaInfo);
// setIsDrawDone(true);
const viewCoordObj = drawObj // const viewCoordObj = drawObj
.getAll() // .getAll()
.features.filter(o => o.properties.id !== 'BUFFER'); // .features.filter(o => o.properties.id !== 'BUFFER');
props.setViewCoordObj(viewCoordObj); // props.setViewCoordObj(viewCoordObj);
if (viewCoordObj.length > 19) { // if (viewCoordObj.length > 19) {
props.handlerAddChange('overAdd', true); // props.handlerAddChange('overAdd', true);
} else { // } else {
props.handlerAddChange('isViewAdd', true); // props.handlerAddChange('isViewAdd', true);
} // }
}; };
// 두 좌표배열이 완전히 일치하는지 판단 // 두 좌표배열이 완전히 일치하는지 판단

Loading…
Cancel
Save