- polygon에 다른 path를 적용하는 방법은
polygone.setPath(updatePath);
호출 시
변경된 path 정보를 파라미터로 넘겨주면 새 경로로 적용됩니다.
박스가 사라지지 않는 말은 이전에 그린 path가 지워지지 않는다는 말씀이신가요?
다각형 이벤트 예제에서 아래 함수를 실행하면 다각형 경로가 변경되는데 한번 확인 부탁드립니다.
추가 문의하실 경우 현상을 확인할 수 있는 소스 코드도 함께 첨부해 주세요.
function updatePolygon() {
let updatePath = [
new kakao.maps.LatLng(33.45133510810506, 126.57159381623066),
new kakao.maps.LatLng(33.44955812811862, 126.5713551811832),
new kakao.maps.LatLng(33.449986291544086, 126.57263296172184),
new kakao.maps.LatLng(33.450682513554554, 126.57321034054742),
new kakao.maps.LatLng(33.451346760004206, 126.57235740081413)
];
polygon.setPath(updatePath);
}
- DrawingManager.put으로 폴리곤을 추가한 경우, 해당 폴리곤은 DrawingManager 내부에서 관리되며
DrawingManger에서 제공하는 기능으로 Polygon을 컨트롤 할 수 있습니다.
하지만 Polygon 객체로 생성한 경우는 DrawingManager에 포함되지 않기 때문에
DrawingManager의 remove 기능으로는 삭제되지 않습니다.
그리고 DrawingManager에 poylgon을 추가한 경우에도 polygon.setMap(null)은 동작을 하는걸로 보입니다.
아래 코드 참고해 주세요.
let container = document.getElementById('map'),
map = new kakao.maps.Map(container, {
center: new kakao.maps.LatLng(33.450701, 126.570667)
});
let options = {
map: map, // drawing manager로 그리기 요소를 그릴 map 객체
drawingMode: [ // drawing manager로 제공할 그리기 요소 모드
kakao.maps.drawing.OverlayType.POLYGON
],
polygonOptions: {
strokeColor: '#39f',
fillColor: '#39f',
fillOpacity: 0.5,
hintStrokeStyle: 'dash',
hintStrokeOpacity: 0.5
}
};
let manager = new kakao.maps.drawing.DrawingManager(options);
let polygonPath = [
new kakao.maps.LatLng(33.450965145649576, 126.57020280169624),
new kakao.maps.LatLng(33.450958085478554, 126.57011679275952),
new kakao.maps.LatLng(33.45098043867851, 126.57006290510864),
new kakao.maps.LatLng(33.45097328515681, 126.56995000794919),
new kakao.maps.LatLng(33.450990859851004, 126.56981816664641),
new kakao.maps.LatLng(33.45101296099739, 126.5696916806749),
new kakao.maps.LatLng(33.45098334215462, 126.56960040542974),
new kakao.maps.LatLng(33.450985176064975, 126.56947939729541),
new kakao.maps.LatLng(33.450917277011726, 126.56939906680272),
new kakao.maps.LatLng(33.45086322853736, 126.56941277823229),
new kakao.maps.LatLng(33.45081577388131, 126.56937805752437),
new kakao.maps.LatLng(33.450779813154405, 126.56940781273165),
new kakao.maps.LatLng(33.45081633405741, 126.56953938654304),
new kakao.maps.LatLng(33.45080569884398, 126.56972228175628),
new kakao.maps.LatLng(33.450752219367345, 126.56990001069012),
new kakao.maps.LatLng(33.45065801908533, 126.57003491859678),
new kakao.maps.LatLng(33.45063139100987, 126.57015604858434),
new kakao.maps.LatLng(33.45064506393239, 126.5701990028593)
];
manager.put(kakao.maps.drawing.OverlayType.POLYGON, polygonPath);
const polygonPath2 = [
new kakao.maps.LatLng(33.45133510810506, 126.57159381623066),
new kakao.maps.LatLng(33.44955812811862, 126.5713551811832),
new kakao.maps.LatLng(33.449986291544086, 126.57263296172184),
new kakao.maps.LatLng(33.450682513554554, 126.57321034054742),
new kakao.maps.LatLng(33.451346760004206, 126.57235740081413)
];
manager.put(kakao.maps.drawing.OverlayType.POLYGON, polygonPath2);
const overlays = manager.getOverlays([kakao.maps.drawing.OverlayType.POLYGON]);
// DrawingManager.remove로 0번째 삭제
// manager.remove(overlays.polygon[0]);
//0번째 polygon 지도에서 삭제
//drawing option으로 draggable, removable, editable등을 사용할 경우 동작이 어색해질 수 있으므로
//manager.remove를 사용해서 지우는것을 추천합니다.
overlays.polygon[0].setMap(null);