2016-09-05 2 views
4

사용자가지도에서 둘 이상의 도형을 만들지 못하도록하고 싶습니다. 예를 들어 사용자가 다각형을 만들면 도구 모음의 모든 모양 아이콘을 비활성화해야합니다. 사용자가 이전에 만든 도형을 삭제하면 툴바의 아이콘이 활성화됩니다.사용자가 도형을 만들고 도형을 삭제할 때 활성화 할 때 전단지 그리기 도구 모음 사용 안 함

어떻게하면됩니까? 나는 끌기에 도구 모음을 제거하는 것을 시도했다 : 생성 한 사건 및 끌기에 새로운 툴바를 추가해 : 삭제 한 사건 그러나 그것은 과실로 이끌어 냈다 (붙어 있던 screenshot를보십시오).

Error screenshot

답변

3

리플릿 제거하고 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:createddraw: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을 만들었으므로 어떻게 작동하는지 볼 수 있습니다.

+0

나는이 접근법을 일찍 시도했다. 하지만 첨부 된 스크린 샷에 오류가 표시되었습니다. (질문을 업데이트했습니다.) – codejunkie

+0

jsFiddle을 만들고 오류를 재현 할 수 있습니까? 내 솔루션은 최신 버전의 전단지 및 전단지를 사용합니다. 어쩌면 이전 버전을 사용하고있는 것일 수 있습니다. 이 경우에는 몇 가지를 변경해야하지만 비슷합니다. –

+0

코드에서 복제하는 방법은 다음과 같습니다. 도형을 만듭니다. 그런 다음 편집을 클릭하십시오. -> 오류가 발생합니다. 그런 다음 취소 -> 다른 오류가 나타납니다. (크롬 디버거 사용) – codejunkie

관련 문제