박상현 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));
// };
const handlerCoordinates = areaInfo => {
const handlerAreaInfoToAreaList = areaInfo => {
const initAreaList = initFlightBas.initDetail.areaList.concat();
const coordList = [];
areaInfo.coordinates.forEach((c, idx) => {
areaInfo.coordinates.forEach(c => {
const coord = Object.assign({}, initFlightBas['coord']);
coord.lat = c.lat;
coord.lon = c.lon;
@ -286,7 +286,7 @@ export default function LaancAreaMap({
coordList.push(coord);
});
const areaList = initAreaList.map((area, idx) => {
const areaList = initAreaList.map(area => {
return {
...area,
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') {
dispatch(FLIGHT_PLAN_AREA_BUFFER_LIST.request(areaList));
} else {
@ -410,6 +416,7 @@ export default function LaancAreaMap({
handlerCoordinates={handlerCoordinates}
handlerInitCoordinates={handlerInitCoordinates}
setSaveData={setSaveData}
handlerAreaInfoToAreaList={handlerAreaInfoToAreaList}
/>
<FeatureAirZone map={mapObject} mapboxgl={mapboxgl} />
{modal ? (

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

@ -13,6 +13,7 @@ import {
import { drawTypeChangeAction } from '../../../../modules/control/map/actions/controlMapActions';
import MapboxDraw from '@mapbox/mapbox-gl-draw';
import { CircleMode } from 'mapbox-gl-draw-circle';
import axios from '../../../../modules/utils/customAxiosUtil';
export const LaancDrawControl = props => {
const dispatch = useDispatch();
@ -235,11 +236,8 @@ export const LaancDrawControl = props => {
};
// 모든 비정상상황 체크
const handlerAbnormalityCheck = (data, mode) => {
const isBreak1 = handlerIsSpecialFlight(data, mode);
const isBreak2 = handlerIsUnableArea(data, mode);
if (isBreak1) return;
if (isBreak2) return;
const handlerAbnormalityCheck = async (data, mode) => {
console.log('비정상체크');
const initCoord =
mode === 'LINE'
@ -251,7 +249,53 @@ export const LaancDrawControl = props => {
: null;
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 셋팅
const handlerSaveAreaInfo = data => {
const handlerSettingAreaInfo = data => {
if (!data.coord || !data.mode) {
alert('에러 발생. 다시 시도해 주세요.');
return;
}
console.log('saveAreaInfo');
console.log('settingeAreaInfo');
const areaInfo = {
coordinates: [],
@ -416,20 +460,21 @@ export const LaancDrawControl = props => {
areaInfo.bufferZone = feature[0].properties.radiusInKm * 1000;
}
props.handlerCoordinates(areaInfo);
setIsDrawDone(true);
return areaInfo;
// props.handlerCoordinates(areaInfo);
// setIsDrawDone(true);
const viewCoordObj = drawObj
.getAll()
.features.filter(o => o.properties.id !== 'BUFFER');
// const viewCoordObj = drawObj
// .getAll()
// .features.filter(o => o.properties.id !== 'BUFFER');
props.setViewCoordObj(viewCoordObj);
// props.setViewCoordObj(viewCoordObj);
if (viewCoordObj.length > 19) {
props.handlerAddChange('overAdd', true);
} else {
props.handlerAddChange('isViewAdd', true);
}
// if (viewCoordObj.length > 19) {
// props.handlerAddChange('overAdd', true);
// } else {
// props.handlerAddChange('isViewAdd', true);
// }
};
// 두 좌표배열이 완전히 일치하는지 판단

Loading…
Cancel
Save