Browse Source

라인 버퍼

pull/2/head
junh_eee(이준희) 2 years ago
parent
commit
0245eeeab5
  1. 22
      src/components/mapDraw/naver/NaverMap.js
  2. 50
      src/components/mapDraw/naver/draw/JQueryDraw.js

22
src/components/mapDraw/naver/NaverMap.js

@ -1,24 +1,16 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import NaverMapControl from './NaverMapControl'; import NaverMapControl from './NaverMapControl';
import geoJson from '../geojson/airArea.json';
import { FeatureAirZone } from './feature/FeatureAirZone'; import { FeatureAirZone } from './feature/FeatureAirZone';
import { DrawMap } from './draw/DrawMap'; import { DrawMap } from './draw/DrawMap';
import { JQueryDraw } from './draw/JQueryDraw'; import { JQueryDraw } from './draw/JQueryDraw';
import { JQueryTest } from './draw/JQueryTest';
import geoJson from '../geojson/airArea.json';
import SensorZone from "./sensor/SensorZone";
import $ from 'jquery';
export const NaverCustomMap = () => { export const NaverCustomMap = () => {
const naver = window.naver; const naver = window.naver;
// let map;
const [isMapLoad, setIsMapLoad] = useState(false);
const [mapObject, setMapObject] = useState(null); const [mapObject, setMapObject] = useState(null);
let arrMarkers = []; // 마커 배열
let arrPolyline = []; // 폴리라인 배열
let features = geoJson.features; let features = geoJson.features;
useEffect(() => { useEffect(() => {
@ -26,14 +18,10 @@ export const NaverCustomMap = () => {
}, []); }, []);
const removeArrMarkers = arrData => {
arrMarkers = arrData;
};
const NaverMapInit = () => { const NaverMapInit = () => {
const mapOptions = { const mapOptions = {
center: new naver.maps.LatLng(37.520357, 126.610166), center: new naver.maps.LatLng(37.520357, 126.610166),
zoom: 16, zoom: 17,
zoomControl: true, zoomControl: true,
// mapTypeId: naver.maps.MapTypeId.HYBRID, // mapTypeId: naver.maps.MapTypeId.HYBRID,
zoomControlOptions: { zoomControlOptions: {
@ -44,6 +32,7 @@ export const NaverCustomMap = () => {
}; };
const map = new naver.maps.Map('map', mapOptions); const map = new naver.maps.Map('map', mapOptions);
setMapObject(map); setMapObject(map);
}; };
return ( return (
@ -51,6 +40,7 @@ export const NaverCustomMap = () => {
<div id='map' style={{ width: '100%', height: '100vh', position: 'absolute' }}> <div id='map' style={{ width: '100%', height: '100vh', position: 'absolute' }}>
{/* 제이쿼리로 그리기 */} {/* 제이쿼리로 그리기 */}
<JQueryDraw map={mapObject} naver={naver} /> <JQueryDraw map={mapObject} naver={naver} />
{/* <JQueryTest map={mapObject} naver={naver} /> */}
</div> </div>
{mapObject != null ? ( {mapObject != null ? (
@ -61,6 +51,8 @@ export const NaverCustomMap = () => {
{/* 그리기 도구 모음 불러오는 거 */} {/* 그리기 도구 모음 불러오는 거 */}
<DrawMap map={mapObject} naver={naver} /> <DrawMap map={mapObject} naver={naver} />
{/* <JQueryConv map={mapObject} naver={naver} /> */}
</> </>
) : null} ) : null}

50
src/components/mapDraw/naver/draw/JQueryDraw.js

@ -2,6 +2,11 @@ import $ from 'jquery';
import '../../../../assets/css/custom.css'; import '../../../../assets/css/custom.css';
import { CustomInput } from 'reactstrap'; import { CustomInput } from 'reactstrap';
import GeoJSONReader from 'jsts/org/locationtech/jts/io/GeoJSONReader'
import GeoJSONWriter from 'jsts/org/locationtech/jts/io/GeoJSONWriter'
import GeometryFactory from 'jsts/org/locationtech/jts/geom/GeometryFactory'
import {BufferOp} from 'jsts/org/locationtech/jts/operation/buffer'
export const JQueryDraw = props => { export const JQueryDraw = props => {
const {naver} = props; const {naver} = props;
const {map} = props; const {map} = props;
@ -102,7 +107,48 @@ export const JQueryDraw = props => {
} }
if (this._polyline) { if (this._polyline) {
console.log(this._polyline.getPath()) // console.log(this._polyline.getPath()._array, 'path')
let te = this._polyline.getPath()._array;
let co = [];
for(let i = 0; i< te.length; i++) {
co.push([te[i]._lat, te[i]._lng]);
}
console.log(co, 'co')
let coords = {
"type": "LineString",
"coordinates": co
};
const reader = new GeoJSONReader();
const writer = new GeoJSONWriter();
const distance = (100 * 0.001) / 111.12;
const line = reader.read(coords);
const buffer = BufferOp.bufferOp(line, distance);
const polygon = writer.write(buffer);
// console.log(buffer._shell._points._coordinates, 'coords');
let bu = buffer._shell._points._coordinates;
let buffers = [];
for(let i = 0; i< bu.length; i++) {
buffers.push([bu[i].y, bu[i].x]);
}
console.log(buffers, 'buffers')
const poly = new naver.maps.Polyline({
strokeColor: '#ff0000',
strokeWeight: 2,
strokeStyle: [4, 4],
strokeOpacity: 0.6,
path : buffers,
map: map
})
console.log(poly, 'poly')
// 이거 하면 그동안 한거 싹 사라짐 -> 얘를 통해서 drawType이 바뀌면 다 날라가는 걸로 해보면 될듯 // 이거 하면 그동안 한거 싹 사라짐 -> 얘를 통해서 drawType이 바뀌면 다 날라가는 걸로 해보면 될듯
// this._polyline.setMap(null) // this._polyline.setMap(null)
delete this._polyline; delete this._polyline;
@ -200,7 +246,7 @@ export const JQueryDraw = props => {
var map = this.map, var map = this.map,
coord = e.coord; coord = e.coord;
console.log(coord, '클릭좌표1'); // console.log(coord, '클릭좌표1');
if (!this._polyline) { if (!this._polyline) {
// 임시로 보여줄 점선 폴리라인을 생성합니다. // 임시로 보여줄 점선 폴리라인을 생성합니다.

Loading…
Cancel
Save