리플릿 제거하고 remove()
및 addTo()
방법과 도구 모음을 추가하는 우리를 할 수 있습니다.
두 개의 도구 모음을 만드는 것이 좋습니다. 하나는 기본 L.Control.Draw
이고 다른 하나는 '그릴'구성 요소없이 그런 다음
self.drawControlFull = new L.Control.Draw();
self.drawControlEdit = new L.Control.Draw({
edit: {
featureGroup: editableLayers,
edit: false
},
draw: false
});
map.addControl(drawControlFull);
그냥 draw:created
및 draw:deleted
이벤트를 수신하고 추가/필요에 따라 제거 :
map.on('draw:created', function(e) {
var type = e.layerType,
layer = e.layer;
self.drawControlFull.remove();
self.drawControlEdit.addTo(map);
editableLayers.addLayer(layer);
});
map.on('draw:deleted', function (e) {
self.drawControlEdit.remove();
self.drawControlFull.addTo(map);
});
이 솔루션은 모든 유스 케이스를 다루지는 않지만 단지 예일뿐입니다. 나는 이것을 위해 jsFiddle을 만들었으므로 어떻게 작동하는지 볼 수 있습니다.
나는이 접근법을 일찍 시도했다. 하지만 첨부 된 스크린 샷에 오류가 표시되었습니다. (질문을 업데이트했습니다.) – codejunkie
jsFiddle을 만들고 오류를 재현 할 수 있습니까? 내 솔루션은 최신 버전의 전단지 및 전단지를 사용합니다. 어쩌면 이전 버전을 사용하고있는 것일 수 있습니다. 이 경우에는 몇 가지를 변경해야하지만 비슷합니다. –
코드에서 복제하는 방법은 다음과 같습니다. 도형을 만듭니다. 그런 다음 편집을 클릭하십시오. -> 오류가 발생합니다. 그런 다음 취소 -> 다른 오류가 나타납니다. (크롬 디버거 사용) – codejunkie