Browse Source

드론 운항정보 표출

pull/2/head
노승철 2 years ago
parent
commit
a78e5ccc04
  1. 10
      src/components/map/naver/NaverMap.js
  2. 41
      src/components/map/naver/dron/DronMarker.js
  3. 2
      src/components/map/naver/dron/DronPlan.js
  4. 2
      src/modules/control/map/reducers/controlMapReducer.ts

10
src/components/map/naver/NaverMap.js

@ -1,26 +1,18 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { useSelector, useDispatch } from 'react-redux'; import { useSelector, useDispatch } from 'react-redux';
import dronicon from '../../../assets/control/icon/drone.png';
import { DronMarker } from './dron/DronMarker'; import { DronMarker } from './dron/DronMarker';
import { DronHistory } from './dron/DronHistory'; import { DronHistory } from './dron/DronHistory';
import NaverMapControl from './NaverMapControl'; import NaverMapControl from './NaverMapControl';
import { NaverMapSearch } from './search/NaverMapSearch'; import { NaverMapSearch } from './search/NaverMapSearch';
import { FeatureAirZone } from './feature/FeatureAirZone'; import { FeatureAirZone } from './feature/FeatureAirZone';
import geoJson from '../geojson/airArea.json'; import geoJson from '../geojson/airArea.json';
import SensorZone from "./sensor/SensorZone";
import { controlGroupAuthAction } from '../../../modules/control/gp'; import { controlGroupAuthAction } from '../../../modules/control/gp';
import DronPlan from './dron/DronPlan'; import DronPlan from './dron/DronPlan';
import DronToast from './dron/DronToast';
import { toast } from 'react-toastify';
export const NaverCustomMap = () => { export const NaverCustomMap = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const naver = window.naver; const naver = window.naver;
// const { controlGpContains } = useSelector(state => state.controlGpFltPlanState);
const [isMapLoad, setIsMapLoad] = useState(false);
const [mapObject, setMapObject] = useState(null); const [mapObject, setMapObject] = useState(null);
const [arrPolyline, setArrPolyline] = useState([]); const [arrPolyline, setArrPolyline] = useState([]);
@ -39,7 +31,7 @@ export const NaverCustomMap = () => {
center: new naver.maps.LatLng(36.56793936069445, 127.85101412107547), center: new naver.maps.LatLng(36.56793936069445, 127.85101412107547),
zoom: 10, zoom: 10,
zoomControl: true, zoomControl: true,
mapTypeId: naver.maps.MapTypeId.HYBRID, mapTypeId: naver.maps.MapTypeId.NORMAR,
zoomControlOptions: { zoomControlOptions: {
position: naver.maps.Position.TOP_LEFT, position: naver.maps.Position.TOP_LEFT,

41
src/components/map/naver/dron/DronMarker.js

@ -105,6 +105,9 @@ export const DronMarker = props => {
marker.setMap(props.map); marker.setMap(props.map);
// drone 정보 창
markerInfoWindow(marker);
naver.maps.Event.addListener(marker, 'click', function (e) { naver.maps.Event.addListener(marker, 'click', function (e) {
handlerDronClick(marker); handlerDronClick(marker);
}); });
@ -182,5 +185,43 @@ export const DronMarker = props => {
setArrMarkers(arrData); setArrMarkers(arrData);
}; };
const markerInfoWindow = (marker) => {
controlGpList.forEach(gps => {
const contents = [
`<div class="tooltip-box">`,
` <div class="tooltip-ti">`,
` <span>${marker.id}</span>`,
` </div>`,
` <div class="tooltip-txt">`,
` <div class="tooltip-txt-list">`,
` <span>${gps.speed}${gps.speedType}</span>`,
` </div>`,
` <div class="tooltip-txt-list">`,
` <span>${gps.elev}${gps.elevType}</span>`,
` </div>`,
` <div class="tooltip-txt-list">`,
` <span>${gps.heading}</span>`,
` </div>`,
` </div>`,
`</div>`
].join('');
const info = new naver.maps.InfoWindow({
id: marker.id,
content: contents,
backgroundColor: '#283046', //박스안쪽영역 컬러
anchorSize: new props.naver.maps.Size(30, -10),
anchorSkew: false,
anchorColor: '#283046',
pixelOffset: new props.naver.maps.Point(20, -20)
});
console.log(info);
info.open(props.map, marker);
});
}
return null; return null;
}; };

2
src/components/map/naver/dron/DronPlan.js

@ -11,8 +11,6 @@ const DronPlan = ({ naver, map }) => {
const { controlGpList } = useSelector(state => state.controlGpState); const { controlGpList } = useSelector(state => state.controlGpState);
const { controlGpFltPlanList } = useSelector(state => state.controlGpFltPlanState); const { controlGpFltPlanList } = useSelector(state => state.controlGpFltPlanState);
const { objectId, isClickObject } = useSelector(state => state.controlMapReducer); const { objectId, isClickObject } = useSelector(state => state.controlMapReducer);
const { controlGpContains } = useSelector(state => state.controlGpFltPlanState);
const [area, setArea] = useState(); // 비행 구역 관리 const [area, setArea] = useState(); // 비행 구역 관리
const [buffer, setBuffer] = useState(); // 버퍼 구역 관리 const [buffer, setBuffer] = useState(); // 버퍼 구역 관리

2
src/modules/control/map/reducers/controlMapReducer.ts

@ -1,6 +1,6 @@
// ** Initial State // ** Initial State
const initialState = { const initialState = {
mapType: 'HYBRID', mapType: 'NORMAL',
objectId: null, objectId: null,
isClickObject: false, isClickObject: false,
area0001: true, // 비행금지 구역 area0001: true, // 비행금지 구역

Loading…
Cancel
Save