Browse Source

비행 구역 기초 좌표 상세 작업

feature/flight-plan
노승철 2 years ago
parent
commit
f1203f217a
  1. 13
      src/components/basis/flight/plan/FlightPlanAreaMap.js
  2. 166
      src/components/map/naver/draw/FlightPlanDrawTest.js
  3. 2
      src/containers/basis/flight/plan/FlightPlanAreaContainer.js
  4. 8
      src/containers/basis/flight/plan/FlightPlanAreaDetailContainer.js
  5. 34
      src/containers/basis/flight/plan/FlightPlanDetailContainer.js
  6. 3
      src/modules/basis/flight/reducers/basisFlightReducer.ts

13
src/components/basis/flight/plan/FlightPlanAreaMap.js

@ -71,14 +71,15 @@ const FlightPlanAreaMap = (props) => {
}; };
const handleInitCoordinates = () => { const handleInitCoordinates = () => {
dispatch(AREA_COORDINATE_LIST_SAVE(null)) const init = initFlightBas.initDetail.areaList.concat();
dispatch(AREA_COORDINATE_LIST_SAVE(init))
} }
const handleCoordinates = (areaInfo) => { const handleCoordinates = (areaInfo) => {
const initAreaList = Object.assign([], initFlightBas.initDetail.areaList); const initAreaList = initFlightBas.initDetail.areaList.concat()
const coordList = []; const coordList = [];
// radius = 10; // radius = 10;
areaInfo.coordinates.forEach((c, i) => { areaInfo.coordinates.forEach((c, i) => {
const coord = Object.assign({}, initFlightBas['coord']); const coord = Object.assign({}, initFlightBas['coord']);
@ -88,12 +89,14 @@ const FlightPlanAreaMap = (props) => {
coordList.push(coord); coordList.push(coord);
}); });
initAreaList[0].bufferZone = areaInfo.bufferZone; // initAreaList[0].bufferZone = areaInfo.bufferZone;
initAreaList[0].areaType = areaInfo.areaType; // initAreaList[0].areaType = areaInfo.areaType;
const areaList = initAreaList.map((area, i) => { const areaList = initAreaList.map((area, i) => {
return { return {
...area, ...area,
bufferZone: areaInfo.bufferZone,
areaType: areaInfo.areaType,
coordList : coordList coordList : coordList
} }
}) })

166
src/components/map/naver/draw/FlightPlanDrawTest.js

@ -62,7 +62,7 @@ export const FlightPlanDrawTest = props => {
}, [mapControl.drawType]) }, [mapControl.drawType])
useEffect(() => { useEffect(() => {
// handleDetailDrwa(); handleDetailDrwa();
}, []) }, [])
const zoomChange = () => { const zoomChange = () => {
@ -79,7 +79,8 @@ export const FlightPlanDrawTest = props => {
} }
} }
const drawInit = () => { const drawInit = () => {
console.log(mapControl.drawType);
if(mapControl.drawType==='LINE') { if(mapControl.drawType==='LINE') {
onClickButton('LINE'); onClickButton('LINE');
} else if(mapControl.drawType==='CIRCLE') { } else if(mapControl.drawType==='CIRCLE') {
@ -87,7 +88,7 @@ export const FlightPlanDrawTest = props => {
} else if(mapControl.drawType==='POLYGON') { } else if(mapControl.drawType==='POLYGON') {
onClickButton('POLYGON'); onClickButton('POLYGON');
} else if(mapControl.drawType==='RESET') { } else if(mapControl.drawType==='RESET') {
// onClickReset('RESET') onClickReset('RESET')
} }
} }
@ -103,7 +104,7 @@ export const FlightPlanDrawTest = props => {
return; return;
} }
mode = newMode; // mode = newMode;
startMode(newMode); startMode(newMode);
} }
@ -111,40 +112,69 @@ export const FlightPlanDrawTest = props => {
const clearMode = (mode) => { const clearMode = (mode) => {
console.log('clearMode') console.log('clearMode')
if(!mode) return; // if(!mode) return;
if (mode === 'LINE') { // clear mode는 전체를 다 초기화 하는게 맞지 않을까..? 무조건 drawType이 변할때마다 초기화해주기로..
if(pastPolyline) { if (pastPolyline) {
pastPolyline.setMap(null); console.log('clrea polyline ', pastPolyline)
pastDragCircle.forEach(prev => prev.setMap(null)); pastPolyline.setMap(null);
setDragCircle([]); pastDragCircle.forEach(c => c.setMap(null));
}
setPolyline();
} else if(mode === 'POLYGON') { setDragCircle([]);
if(pastPolygon) { }
pastPolygon.setMap(null); if (pastCircle) {
setPolygon(); console.log('clrea circle ', pastCircle)
pastDragCircle.forEach(prev => prev.setMap(null)); pastCircle.setMap(null);
setDragCircle([]); naver.maps.Event.removeListener(pastEve);
}
} else if(mode === 'CIRCLE') { setCircle();
if(pastCircle) { }
pastCircle.setMap(null); if (pastPolygon) {
setCircle(); console.log('clrea polygon ', pastPolygon)
naver.maps.Event.removeListener(pastEve); pastPolygon.setMap(null);
} pastDragCircle.forEach(c => c.setMap(null));
setPolygon();
setDragCircle([]);
} }
finishDraw(); finishDraw();
props.handleInitCoordinates(); props.handleInitCoordinates();
// if(mode === 'LINE' && pastPolyline) {
// pastPolyline.setMap(null);
// pastDragCircle.forEach(c => c.setMap(null));
// setPolyline({});
// setDragCircle([]);
// }
// if(mode === 'POLYGON' && pastPolygon) {
// pastPolygon.setMap(null);
// pastDragCircle.forEach(c => c.setMap(null));
// setPolygon({});
// setDragCircle([]);
// }
// if(mode === 'CIRCLE' && pastCircle) {
// pastCircle.setMap(null);
// naver.maps.Event.removeListener(pastEve);
// setCircle({});
// }
// if(mode === 'RESET') {
// if(pastPolyline) pastPolyline.setMap(null);
// if(pastCircle) pastCircle.setMap(null);
// if(pastPolygon) pastPolygon.setMap(null);
// }
} }
const startMode = (mode) => { const startMode = (mode) => {
console.log('startMode') console.log('startMode')
// console.log(polyline, 'polyline', pastPolyline, 'pastPolyline');
// console.log(polygon, 'polygon', pastPolygon, 'pastPolygon');
// console.log(circle, 'circle', pastCircle, 'pastCircle');
if (!mode) return; if (!mode) return;
if (mode === 'LINE') { if (mode === 'LINE') {
@ -304,7 +334,7 @@ export const FlightPlanDrawTest = props => {
}); });
Eve.rightclickEve = naver.maps.Event.addListener(map, 'rightclick', function() { finishDraw() }) Eve.rightclickEve = naver.maps.Event.addListener(map, 'rightclick', function() { finishDraw() })
$(document).on('mousemove.measure', function(e) { onMouseMovePolygon(e) }); $(document).on('mousemove.measure', function(e) { onMouseMovePolygon(e) });
} else { } else {
polygon.getPath().push(coord); polygon.getPath().push(coord);
} }
@ -655,48 +685,68 @@ export const FlightPlanDrawTest = props => {
} }
const onClickReset = () => { const onClickReset = () => {
if(mapControl.drawType === 'RESET') { console.log('onClickRest - ', mapControl.drawType);
clearMode(mode); if(mapControl.drawType === 'RESET') {
clearMode('RESET');
} }
} }
const handleDetailDrwa = () => { const handleDetailDrwa = () => {
if (props.areaCoordList) { if (props.areaCoordList) {
const areas = props.areaCoordList[0]; const areas = props.areaCoordList[0];
if(areas.areaType && areas.areaType === 'LINE') {
const paths = [];
areas.coordList.forEach((coord) => { const paths = [];
const path = new naver.maps.LatLng(coord.lat, coord.lon)
paths.push(path); areas.coordList.forEach((coord) => {
}) const path = new naver.maps.LatLng(coord.lat, coord.lon)
polyline = new naver.maps.Polyline({
strokeLineCap: 'round',
strokeLineJoin: 'round',
strokeColor: '#283046',
strokeWeight: 3,
strokeOpacity: 1,
path: paths,
map: map
});
setPolyline(polyline)
// $(document).on('mousemove.measure', function(e) { onMouseMovePolyline(e); });
}
if(areas.areaType && areas.areaType === 'PLOYGON') { paths.push(path);
});
} if(areas.areaType && areas.areaType === 'LINE') {
polyline = new naver.maps.Polyline({
strokeLineCap: 'round',
strokeLineJoin: 'round',
strokeColor: '#283046',
strokeWeight: 3,
strokeOpacity: 1,
path: paths,
map: map
});
setPolyline(polyline)
// $(document).on('mousemove.measure', function(e) { onMouseMovePolyline(e); });
}
if(areas.areaType && areas.areaType === 'CIRCLE') { if(areas.areaType && areas.areaType === 'POLYGON') {
polygon = new naver.maps.Polygon({
strokeColor: '#283046',
strokeOpacity: 1,
fillColor: '#7367F0',
fillOpacity: 0.1,
paths: paths,
map: map
});
} setPolygon(polygon);
}
} if(areas.areaType && areas.areaType === 'CIRCLE') {
circle = new naver.maps.Circle({
strokeColor: '#283046',
strokeOpacity: 1,
fillColor: '#7367F0',
fillOpacity: 0.1,
center: paths[0],
radius: areas.bufferZone,
map: map,
clickable: true
});
setCircle(circle);
}
}
} }
return ( return (

2
src/containers/basis/flight/plan/FlightPlanAreaContainer.js

@ -30,7 +30,7 @@ const FlightPlanAreaContainer = ({handleModal}) => {
} }
useEffect(() => { useEffect(() => {
dispatch(drawTypeChangeAction('RESET')); dispatch(drawTypeChangeAction(''));
getAirAreaList(); getAirAreaList();
}, []); }, []);

8
src/containers/basis/flight/plan/FlightPlanAreaDetailContainer.js

@ -16,13 +16,13 @@ const FlightPlanAreaDetailContainer = ({ handleModal }) => {
handleModal({ type: 'area', isOpne: false}); handleModal({ type: 'area', isOpne: false});
} }
const handleSave = () => { const handleSave = () => {
const resultAreaDetail = areaDetail.map((area, i) => { const resultAreaDetail = areaDetail.map((area, i) => {
return { return {
...area, ...area,
coordList : areaDetail[0].coordList coordList : areaDetail[0].coordList
} }
}); });
dispatch(Actions.AREA_DETAIL_LIST_SAVE(resultAreaDetail)); dispatch(Actions.AREA_DETAIL_LIST_SAVE(resultAreaDetail));
@ -52,7 +52,9 @@ const FlightPlanAreaDetailContainer = ({ handleModal }) => {
useEffect(() => { useEffect(() => {
// detail의 area 정보가 존재하면 detail 정보로 매핑 // detail의 area 정보가 존재하면 detail 정보로 매핑
if(detail.areaList[0].planAreaSno !== 0) { if(detail.areaList[0].planAreaSno !== 0) {
setAreaDetail(detail.areaList); setAreaDetail(detail.areaList);
dispatch(Actions.AREA_DETAIL_LIST_SAVE(detail.areaList));
} }
}, []) }, [])

34
src/containers/basis/flight/plan/FlightPlanDetailContainer.js

@ -99,23 +99,31 @@ const FlightPlanDetailContainer = () => {
useEffect(() => { useEffect(() => {
if(areaList !== undefined) { if(areaList !== undefined) {
const detailAreaList = detailData.areaList.concat(); // const detailAreaList = detailData.areaList.concat();
const area = Object.assign({}, initFlightBas['area']); // const area = Object.assign({}, initFlightBas['area']);
area.bufferZone = areaList[0].bufferZone;
area.fltElev = areaList[0].fltElev;
area.fltMethod = areaList[0].fltMethod;
area.coordList = areaList[0].coordList;
detailAreaList.forEach((a, i) => { const detailAreaList = areaList.map((area) => {
detailAreaList[i] = area; return {
...area
}
})
// area.bufferZone = areaList[0].bufferZone;
// area.fltElev = areaList[0].fltElev;
// area.fltMethod = areaList[0].fltMethod;
// area.areaType = areaList[0]
// area.coordList = areaList[0].coordList;
// detailAreaList.forEach((a, i) => {
// detailAreaList[i] = area;
// if(a.planAreaSno === 0) { // create // // if(a.planAreaSno === 0) { // create
// areaList[i] = area; // // areaList[i] = area;
// } else { // update // // } else { // update
// } // // }
}); // });
setDetailData(prevState => { setDetailData(prevState => {
return { return {

3
src/modules/basis/flight/reducers/basisFlightReducer.ts

@ -86,6 +86,7 @@ export const flightReducer = createReducer<FlightState, Actions.FlightAction>(in
.handleAction(Actions.AREA_DETAIL_LIST_SAVE, (state, action) => .handleAction(Actions.AREA_DETAIL_LIST_SAVE, (state, action) =>
produce(state, draft => { produce(state, draft => {
const data = action.payload; const data = action.payload;
draft.areaList = data; draft.areaList = data;
draft.areaCoordList = data;
}) })
) )

Loading…
Cancel
Save