junh_eee
2 years ago
10 changed files with 107 additions and 497 deletions
@ -1,71 +0,0 @@ |
|||||||
import { useEffect, useState } from "react"; |
|
||||||
import { useSelector } from "react-redux"; |
|
||||||
|
|
||||||
|
|
||||||
export const DrawTest0 = props => { |
|
||||||
const {naver} = props; |
|
||||||
const {map} = props; |
|
||||||
|
|
||||||
const mapControl = useSelector(state => state.controlMapReducer); |
|
||||||
|
|
||||||
// const [linePositions, setLinePositions] = useState([]);
|
|
||||||
const positions = ([]); |
|
||||||
const [lineZips, setLineZips] = useState([]); |
|
||||||
|
|
||||||
useEffect(() => { |
|
||||||
}, [mapControl.drawType]); |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(mapControl.drawType === 'LINE') { |
|
||||||
naver.maps.Event.addListener(map, 'click', function(e) { |
|
||||||
// const position = e.coord;
|
|
||||||
positions.push(e.coord); |
|
||||||
createPolyline(positions); |
|
||||||
}) |
|
||||||
|
|
||||||
// naver.maps.Event.addListener(map, 'dbclick', function(e) {
|
|
||||||
// console.log("dbclick")
|
|
||||||
// })
|
|
||||||
|
|
||||||
naver.maps.Event.addListener(map, 'keydown', function(e) { |
|
||||||
const keyboardEvent = e.keyboardEvent, |
|
||||||
keyCode = keyboardEvent.keyCode || keyboardEvent.which; |
|
||||||
|
|
||||||
const ESC = 27; |
|
||||||
|
|
||||||
if(keyCode === ESC) { |
|
||||||
keyboardEvent.preventDefault(); |
|
||||||
|
|
||||||
// for(var i=0, ii=lineZips.length; i<ii; i++) {
|
|
||||||
// lineZips[i].setMap(null);
|
|
||||||
// // console.log(lineZips[i]);
|
|
||||||
// }
|
|
||||||
lineZips.forEach(line => line.setMap(null)); |
|
||||||
setLineZips([]); |
|
||||||
console.log(lineZips); |
|
||||||
|
|
||||||
} |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
const createPolyline = (positions) => { |
|
||||||
if(positions.length >= 2) { |
|
||||||
const polyline = new naver.maps.Polyline({ |
|
||||||
path: [positions[(positions.length)-1], positions[(positions.length)-2]], |
|
||||||
strokeWeight: 2, |
|
||||||
strokeOpacity: 1, |
|
||||||
strokeColor: '#ff0000', |
|
||||||
map: map |
|
||||||
}) |
|
||||||
// polyline.setMap(map);
|
|
||||||
setLineZips([...lineZips, positions]); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
const removeLine = () => { |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
return null; |
|
||||||
} |
|
@ -1,157 +0,0 @@ |
|||||||
import { useEffect, useState } from "react"; |
|
||||||
import { BiCaretLeftCircle } from "react-icons/bi"; |
|
||||||
import { useSelector } from "react-redux"; |
|
||||||
|
|
||||||
export const DrawTest1 = props => { |
|
||||||
const {naver} = props; |
|
||||||
const {map} = props; |
|
||||||
const {drawType} = useSelector(state => state.controlMapReducer); |
|
||||||
|
|
||||||
let linePath = ([]); |
|
||||||
let circleCenter = ''; |
|
||||||
// let positions = ([]);
|
|
||||||
// let po = '';
|
|
||||||
|
|
||||||
const r = 1000; |
|
||||||
// const [polylines, setPolylines] = useState([]);
|
|
||||||
// const [circleLayers, setCircleLayers] = useState();
|
|
||||||
let polylines = ([]); |
|
||||||
// let circleLayers = ('');
|
|
||||||
let circleLayers = ([]); |
|
||||||
|
|
||||||
useEffect(() => { |
|
||||||
init(); |
|
||||||
}, []); |
|
||||||
|
|
||||||
useEffect(() => { |
|
||||||
remove(); |
|
||||||
console.log(drawType) |
|
||||||
// init();
|
|
||||||
}, [drawType]); |
|
||||||
|
|
||||||
const event = () => { |
|
||||||
let addClick = naver.maps.Event.addListener(map, 'click', function(e) { |
|
||||||
if(drawType) { |
|
||||||
linePath.push(e.coord); |
|
||||||
circleCenter = e.coord |
|
||||||
clickDraw(); |
|
||||||
} else { |
|
||||||
|
|
||||||
} |
|
||||||
}) |
|
||||||
|
|
||||||
let escDown = naver.maps.Event.addListener(map, 'keydown', function(e) { |
|
||||||
const keyboardEvent = e.keyboardEvent, |
|
||||||
keyCode = keyboardEvent.keyCode || keyboardEvent.which; |
|
||||||
|
|
||||||
const ESC = 27; |
|
||||||
|
|
||||||
if(keyCode === ESC) { |
|
||||||
keyboardEvent.preventDefault(); |
|
||||||
remove(); |
|
||||||
} |
|
||||||
}) |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
const init = () => { |
|
||||||
remove(); |
|
||||||
event(); |
|
||||||
} |
|
||||||
|
|
||||||
const clickDraw = () => { |
|
||||||
// if(!drawType) {
|
|
||||||
// alert("path option을 선택해주세요.")
|
|
||||||
// } else {
|
|
||||||
// if(drawType === 'LINE') {
|
|
||||||
// console.log("LINE")
|
|
||||||
// createPolyline();
|
|
||||||
// } else if(drawType === 'CIRCLE') {
|
|
||||||
// console.log("CIRCLE")
|
|
||||||
// createCircle();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if(drawType === 'LINE') { |
|
||||||
console.log('1') |
|
||||||
createPolyline(); |
|
||||||
} else if(drawType === 'CIRCLE') { |
|
||||||
createCircle(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
const createPolyline = () => { |
|
||||||
if(linePath.length >= 2) { |
|
||||||
const polyline = new naver.maps.Polyline({ |
|
||||||
// path: [positions[positions.length-1], po],
|
|
||||||
path: linePath, |
|
||||||
strokeColor: '#ff0000', |
|
||||||
strokeWeight: 2, |
|
||||||
strokeOpacity: 0.5, |
|
||||||
map: map |
|
||||||
}); |
|
||||||
linePath.shift(); |
|
||||||
// setPolylines(prev => ([...prev, polyline]));
|
|
||||||
polylines.push(polyline); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// const createCircle = (positions) => {
|
|
||||||
const createCircle = () => { |
|
||||||
if(circleLayers) remove(); |
|
||||||
// const circleCenter = positions[0];
|
|
||||||
// console.log(circleCenter)
|
|
||||||
// console.log(po)
|
|
||||||
// const te = positions[0];
|
|
||||||
const circle = new naver.maps.Circle({ |
|
||||||
center: circleCenter, |
|
||||||
// center: positions[0],
|
|
||||||
strokeColor: '#ff0000', |
|
||||||
strokeWeight: 2, |
|
||||||
strokeOpacity: 1, |
|
||||||
fillColor: '#0000ff', |
|
||||||
fillOpacity: 0.35, |
|
||||||
radius: r, |
|
||||||
clickable: false, |
|
||||||
map: map |
|
||||||
}) |
|
||||||
// circleCenter.shift();
|
|
||||||
// setCircleLayers(circle);
|
|
||||||
// circleLayers = circle;
|
|
||||||
circleLayers.push(circle); |
|
||||||
} |
|
||||||
|
|
||||||
// const reCircle = () => {
|
|
||||||
// // circle.setMap(null);
|
|
||||||
// // positions = ([]);
|
|
||||||
// // circleLayers.forEach(cir => cir.setMap(null));
|
|
||||||
// circleLayers.setMap(null);
|
|
||||||
// // setCircleLayers();
|
|
||||||
// circleLayers = '';
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
const remove = () => { |
|
||||||
// debugger;
|
|
||||||
if(polylines) { |
|
||||||
polylines.forEach(poly => poly.setMap(null)); |
|
||||||
polylines = ([]); |
|
||||||
// console.log("poly remove")
|
|
||||||
} |
|
||||||
if(circleLayers) { |
|
||||||
circleLayers.forEach(cir => cir.setMap(null)); |
|
||||||
circleLayers = ([]); |
|
||||||
// console.log("circle remove")
|
|
||||||
} |
|
||||||
// circleLayers.forEach(cir => cir.setMap(null));
|
|
||||||
// circleLayers = ([]);
|
|
||||||
circleCenter = ''; |
|
||||||
linePath = ([]); |
|
||||||
// console.log("remove!!")
|
|
||||||
// setClickable(0);
|
|
||||||
} |
|
||||||
|
|
||||||
return null; |
|
||||||
}; |
|
||||||
|
|
@ -1,180 +0,0 @@ |
|||||||
import { useEffect, useState } from "react"; |
|
||||||
import { useSelector } from "react-redux"; |
|
||||||
|
|
||||||
|
|
||||||
export const DrawTest2 = props => { |
|
||||||
const {naver} = props; |
|
||||||
const {map} = props; |
|
||||||
let draw = ''; |
|
||||||
const {drawType} = useSelector(state => state.controlMapReducer); |
|
||||||
|
|
||||||
const r = 1000; |
|
||||||
let positions = ([]); |
|
||||||
const [polyGroup, setPolyGroup] = useState([]); |
|
||||||
const [eventGroup, setEventGrouop] = useState([]); |
|
||||||
const [circleGroup, setCircleGroup] = useState([]); |
|
||||||
|
|
||||||
useEffect(() => { |
|
||||||
remove2(); |
|
||||||
clickEvent(); |
|
||||||
}, [drawType]); |
|
||||||
|
|
||||||
useEffect(() => { |
|
||||||
remove(); |
|
||||||
}, [polyGroup, eventGroup]); |
|
||||||
|
|
||||||
useEffect(() => { |
|
||||||
// moveCircle();
|
|
||||||
remove(); |
|
||||||
}, [circleGroup]); |
|
||||||
|
|
||||||
|
|
||||||
const moveCircle = () => { |
|
||||||
if(circleGroup) { |
|
||||||
circleGroup.forEach(prev => prev.setMap(null)); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
const movePoly = () => { |
|
||||||
if(polyGroup) { |
|
||||||
polyGroup.forEach(prev => prev.setMap(null)); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
const clickEvent = () => { |
|
||||||
console.log("d") |
|
||||||
// remove2();
|
|
||||||
// drawType =
|
|
||||||
if(drawType === 'CIRCLE') { |
|
||||||
console.log("circle") |
|
||||||
} else if(drawType === 'LINE') { |
|
||||||
console.log("LINE") |
|
||||||
}else if(drawType === 'POLYGON') { |
|
||||||
console.log("POLYGON") |
|
||||||
} |
|
||||||
|
|
||||||
addPositions(); |
|
||||||
} |
|
||||||
|
|
||||||
const remove2 = () => { |
|
||||||
polyGroup.forEach(poly => poly.setMap(null)); |
|
||||||
setPolyGroup([]); |
|
||||||
circleGroup.forEach(cir => cir.setMap(null)); |
|
||||||
setCircleGroup([]); |
|
||||||
eventGroup.forEach(eve => naver.maps.Event.removeListener(eve)); |
|
||||||
setEventGrouop([]); |
|
||||||
positions = []; |
|
||||||
} |
|
||||||
|
|
||||||
const addPositions = () => { |
|
||||||
if(event) naver.maps.Event.removeListener(event); |
|
||||||
var event = naver.maps.Event.addListener(map, 'click', function(e) { |
|
||||||
debugger; |
|
||||||
if(drawType === 'LINE') { |
|
||||||
positions.push(e.coord); |
|
||||||
createPolyline(positions); |
|
||||||
} else if(drawType === 'CIRCLE') { |
|
||||||
positions = e.coord; |
|
||||||
createCircle(positions); |
|
||||||
} |
|
||||||
}) |
|
||||||
// setEventGrouop(prev => ([...prev, event]));
|
|
||||||
} |
|
||||||
|
|
||||||
const createCircle = (positions) => { |
|
||||||
moveCircle(); |
|
||||||
const circle = new naver.maps.Circle({ |
|
||||||
center: positions, |
|
||||||
strokeColor: '#ff0000', |
|
||||||
strokeWeight: 2, |
|
||||||
strokeOpacity: 1, |
|
||||||
fillColor: '#0000ff', |
|
||||||
fillOpacity: 0.35, |
|
||||||
radius: r, |
|
||||||
clickable: false, |
|
||||||
map: map |
|
||||||
}) |
|
||||||
draw = drawType; |
|
||||||
setCircleGroup(prev => ([...prev, circle])); |
|
||||||
} |
|
||||||
|
|
||||||
const createPolyline = (positions) => { |
|
||||||
if(positions.length >= 2) { |
|
||||||
movePoly(); |
|
||||||
const polyline = new naver.maps.Polyline({ |
|
||||||
// path: [positions[(positions.length)-1], positions[(positions.length)-2]],
|
|
||||||
path: positions, |
|
||||||
strokeColor: '#ff0000', |
|
||||||
strokeWeight: 2, |
|
||||||
strokeOpacity: 1, |
|
||||||
map: map |
|
||||||
}) |
|
||||||
positions.shift(); |
|
||||||
console.log(positions) |
|
||||||
draw = drawType; |
|
||||||
setPolyGroup(prev => ([...prev, polyline])); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
const remove = () => { |
|
||||||
if(drawType!=draw) { |
|
||||||
naver.maps.Event.addListener(map, 'keydown', function(e) { |
|
||||||
const keyboardEvent = e.keyboardEvent, |
|
||||||
keyCode = keyboardEvent.keyCode || keyboardEvent.which; |
|
||||||
|
|
||||||
const ESC = 27; |
|
||||||
|
|
||||||
if(keyCode === ESC) { |
|
||||||
keyboardEvent.preventDefault(); |
|
||||||
polyGroup.forEach(poly => poly.setMap(null)); |
|
||||||
setPolyGroup([]); |
|
||||||
circleGroup.forEach(cir => cir.setMap(null)); |
|
||||||
setCircleGroup([]); |
|
||||||
// eventGroup.forEach(eve => naver.maps.Event.removeListener(eve));
|
|
||||||
// setEventGrouop([]);
|
|
||||||
positions = []; |
|
||||||
// debugger;
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
}) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// const drawTypeChange = () => {
|
|
||||||
// remove();
|
|
||||||
// draw = drawType;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const init = () => {
|
|
||||||
// // draw = drawType;
|
|
||||||
// if(draw) {
|
|
||||||
// var event = naver.maps.Event.addListener(map, 'click', function(e) {
|
|
||||||
// draw = drawType;
|
|
||||||
// console.log(drawType, "drawType")
|
|
||||||
// // remove(draw, event);
|
|
||||||
// drawTypeChange();
|
|
||||||
// // naver.maps.Event.removeListener(event);
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// // remove(event);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const remove = (draw, event) => {
|
|
||||||
// if(draw == drawType) {
|
|
||||||
// console.log("안지워")
|
|
||||||
// } else {
|
|
||||||
// console.log("지워")
|
|
||||||
// naver.maps.Event.removeListener(event);
|
|
||||||
// }
|
|
||||||
// if(positions) naver.maps.Event.removeListener(map, 'click', function(e) {
|
|
||||||
// console.log(e);
|
|
||||||
// });
|
|
||||||
// naver.maps.removeListener(event);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return null; |
|
||||||
} |
|
Loading…
Reference in new issue