김지은 11 months ago
parent
commit
e5a5d5c572
  1. 30
      src/components/laanc/map/FlightArea.js
  2. 149
      src/components/laanc/map/LaancAreaMap.js
  3. 2
      src/components/laanc/map/LaancDrawControl.js
  4. 2
      src/components/laanc/map/LaancDrawModal.js

30
src/components/laanc/map/FlightArea.js

@ -41,6 +41,7 @@ import { FeatureAirZone } from '../../map/mapbox/feature/FeatureAirZone';
import { WeatherContainer } from '../../../containers/basis/flight/plan/WeatherContainer'; import { WeatherContainer } from '../../../containers/basis/flight/plan/WeatherContainer';
import { initFlightBas } from '../../../modules/laanc/models/laancModels'; import { initFlightBas } from '../../../modules/laanc/models/laancModels';
import * as LaancAction from '../../../modules/laanc/actions/laancActions'; import * as LaancAction from '../../../modules/laanc/actions/laancActions';
import LaancDrawModal from './LaancDrawModal';
const initialAddData = { const initialAddData = {
isAddable: false, isAddable: false,
@ -72,6 +73,12 @@ export default function FlightArea({
const [previewLayer, setPreviewLayer] = useState(); const [previewLayer, setPreviewLayer] = useState();
const [formModal, setFormModal] = useState(false); const [formModal, setFormModal] = useState(false);
const [modal, setModal] = useState({
title: '',
desc: '',
isOpen: false
});
const [isSaveable, setIsSaveable] = useState(false); const [isSaveable, setIsSaveable] = useState(false);
const [addData, setAddData] = useState(initialAddData); const [addData, setAddData] = useState(initialAddData);
@ -169,8 +176,27 @@ export default function FlightArea({
}); });
}; };
const handlerModal = () => {
setModal(!modal);
};
const handlerDrawType = val => { const handlerDrawType = val => {
dispatch(drawTypeChangeAction(val)); if (drawObj.getMode().includes('draw')) {
// alert('비행구역설정 완료 후 타입을 변경해주세요.');
setModal({
title: '비행 구역 설정',
desc: (
<>
비행구역 설정이 완료되지 않았습니다.
<br />
비행구역 설정 완료 타입 변경 부탁드립니다.
</>
),
isOpen: true
});
} else {
dispatch(drawTypeChangeAction(val));
}
}; };
const handlerSave = async () => { const handlerSave = async () => {
@ -564,6 +590,7 @@ export default function FlightArea({
addData={addData} addData={addData}
setSaveData={setSaveData} setSaveData={setSaveData}
handlerSaveElev={handlerSaveElev} handlerSaveElev={handlerSaveElev}
setModal={setModal}
/> />
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>
@ -657,6 +684,7 @@ export default function FlightArea({
</ModalFooter> </ModalFooter>
</Modal> </Modal>
) : null} ) : null}
{modal ? <LaancDrawModal modal={modal} handler={handlerModal} /> : null}
<Modal <Modal
isOpen={formModal} isOpen={formModal}
toggle={handlerWeather} toggle={handlerWeather}

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

@ -32,7 +32,6 @@ import geoJson from '../../map/geojson/airArea.json';
import { FeatureAirZone } from '../../map/mapbox/feature/FeatureAirZone'; import { FeatureAirZone } from '../../map/mapbox/feature/FeatureAirZone';
import LaancMapSearch from './LaancMapSearch'; import LaancMapSearch from './LaancMapSearch';
import { LaancDrawControl } from './LaancDrawControl'; import { LaancDrawControl } from './LaancDrawControl';
import LaancModal from '../../map/mapbox/draw/LaancModal';
export default function LaancAreaMap({ export default function LaancAreaMap({
centeredModal, centeredModal,
@ -43,7 +42,8 @@ export default function LaancAreaMap({
addData, addData,
handlerInitCoordinates, handlerInitCoordinates,
setSaveData, setSaveData,
handlerSaveElev handlerSaveElev,
setModal
}) { }) {
const dispatch = useDispatch(); const dispatch = useDispatch();
const mapControl = useSelector(state => state.controlMapReducer); const mapControl = useSelector(state => state.controlMapReducer);
@ -57,11 +57,11 @@ export default function LaancAreaMap({
); );
const [number, setNumber] = useState(0); const [number, setNumber] = useState(0);
const [modal, setModal] = useState({ // const [modal, setModal] = useState({
title: '', // title: '',
desc: '', // desc: '',
isOpen: false // isOpen: false
}); // });
const [detailLayer, setDetailLayer] = useState(); const [detailLayer, setDetailLayer] = useState();
@ -315,9 +315,9 @@ export default function LaancAreaMap({
dispatch(AREA_COORDINATE_LIST_SAVE(areaList)); dispatch(AREA_COORDINATE_LIST_SAVE(areaList));
}; };
const handlerModal = () => { // const handlerModal = () => {
setModal(!modal); // setModal(!modal);
}; // };
return ( return (
<Card className='mb-0'> <Card className='mb-0'>
@ -325,73 +325,72 @@ export default function LaancAreaMap({
<div style={{ position: 'relative' }}> <div style={{ position: 'relative' }}>
<LaancMapSearch mapObject={mapObject} /> <LaancMapSearch mapObject={mapObject} />
<div className='d-flex coords-wrap'> <div className='d-flex coords-wrap'>
{mapObject && viewCoordObj.length > 0 ? ( {viewCoordObj?.map((obj, i) => {
<div className='coords-box'> let coord =
{/* {console.log(viewCoordObj, '----')} */} obj.properties.id === 'LINE'
{viewCoordObj?.map((obj, i) => { ? obj.geometry.coordinates
let coord = : obj.geometry.coordinates[0];
obj.properties.id === 'LINE' if (obj.properties.id === 'POLYGON') {
? obj.geometry.coordinates coord = coord.slice(0, coord.length - 1);
: obj.geometry.coordinates[0]; } else if (obj.properties.id === 'CIRCLE') {
if (obj.properties.id === 'POLYGON') { coord = [obj.properties.center];
coord = coord.slice(0, coord.length - 1); }
} else if (obj.properties.id === 'CIRCLE') {
coord = [obj.properties.center]; return (
} <div
className='coords-box'
return ( key={i}
<div onClick={() => {
key={i} const allObj = drawObj
onClick={() => { .getAll()
const allObj = drawObj .features.filter(o => o.properties.id !== 'BUFFER');
.getAll()
.features.filter(o => o.properties.id !== 'BUFFER'); drawObj.changeMode('direct_select', {
featureId: allObj[i].id
drawObj.changeMode('direct_select', { });
featureId: allObj[i].id }}
}); >
}} <div>
> <h6 className='ti'>비행구역 {i + 1}</h6>
<h6 className='ti'>비행구역 {i + 1}</h6> <div className='coords-box-scroll'>
<div className='coords-box-scroll'> {coord?.map((co, idx) => {
{coord?.map((co, idx) => { if (idx % 2 === 0) {
if (idx % 2 === 0) { const fCoord = FormattingCoord(co);
const fCoord = FormattingCoord(co); const current = fCoord.join(', ');
const current = fCoord.join(', '); if (idx !== coord.length - 1) {
if (idx !== coord.length - 1) { const next = FormattingCoord(coord[idx + 1]).join(
const next = FormattingCoord(coord[idx + 1]).join( ', '
', ' );
);
return (
return ( <div className='coords-box-list' key={idx}>
<div className='coords-box-list' key={idx}> <span>
<span> <span>{current}</span>
<span>{current}</span> <span className='etc'>/</span>
<span className='etc'>/</span> <span>{next}</span>
<span>{next}</span> </span>
</span> </div>
</div> );
);
} else {
return (
<div className='coords-box-list' key={idx}>
<span>
<span>{current}</span>
</span>
</div>
);
}
} else { } else {
return null; return (
<div className='coords-box-list' key={idx}>
<span>
<span>{current}</span>
</span>
</div>
);
} }
})} } else {
</div> return null;
}
})}
</div> </div>
); </div>
})} </div>
</div> );
) : null} })}
</div> </div>
<div <div
id='detail' id='detail'
ref={mapContainer} ref={mapContainer}
@ -417,9 +416,9 @@ export default function LaancAreaMap({
handlerSaveElev={handlerSaveElev} handlerSaveElev={handlerSaveElev}
/> />
<FeatureAirZone map={mapObject} mapboxgl={mapboxgl} /> <FeatureAirZone map={mapObject} mapboxgl={mapboxgl} />
{modal ? ( {/* {modal ? (
<LaancModal modal={modal} handler={handlerModal} /> <LaancModal modal={modal} handler={handlerModal} />
) : null} ) : null} */}
</> </>
) : null} ) : null}
</div> </div>

2
src/components/laanc/map/LaancDrawControl.js

@ -357,8 +357,10 @@ export const LaancDrawControl = props => {
const remainObj = drawObj const remainObj = drawObj
.getAll() .getAll()
.features.filter(o => o.properties.id !== 'BUFFER' && o.id !== id); .features.filter(o => o.properties.id !== 'BUFFER' && o.id !== id);
if (remainObj.length === 0) { if (remainObj.length === 0) {
props.handlerSaveCheck(false); props.handlerSaveCheck(false);
dispatch(drawTypeChangeAction('RESET'));
} else { } else {
props.handlerSaveCheck(true); props.handlerSaveCheck(true);
} }

2
src/components/map/mapbox/draw/LaancModal.js → src/components/laanc/map/LaancDrawModal.js

@ -1,6 +1,6 @@
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap'; import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
export default function LaancModal({ modal, handler }) { export default function LaancDrawModal({ modal, handler }) {
const handlerDroneOneStop = () => { const handlerDroneOneStop = () => {
window.open('https://drone.onestop.go.kr/', '드론원스탑'); window.open('https://drone.onestop.go.kr/', '드론원스탑');
handler(); handler();
Loading…
Cancel
Save