2014-06-16 3 views
2

예를 들어 두 개의 다각형으로 구성된 다중 다각형이 있습니다. modifyFeature 컨트롤과 delete 키를 사용하여 정점을 삭제할 수 있습니다. 그러나 modifyFeature 컨트롤은 적어도 3 개의 꼭지점을 포함해야하기 때문에 폴리곤을 완전히 삭제할 수 없습니다. 멀티 폴리곤 기능 (삭제 키 사용)에서 다각형을 완전히 삭제하려면 어떻게합니까? OpenLayers에 적절한 컨트롤이나 플러그인이 있습니까?OpenLayers 2.13.1 : 멀티 미터 기능에서 지오메트리 삭제

컨트롤을 패치하는 중 직접 시도했지만 여러 개의 사소한 버그가 발생했습니다. 그래서 나는 문제를 해결하기 위해 많은 시간을 할애하기 전에 누군가가 이미 그것을했는지 먼저 묻는다고 생각했습니다.

+0

선택 컨트롤에서 삭제 기능을 찾으십니까? –

답변

0
removeComponent: function(point) { 
    var removed = this.components && (this.components.length > 3); 
    if (removed) { 
     //remove last point 
     this.components.pop(); 

     //remove our point 
     OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this, 
                   arguments); 
     //append copy of first point 
     var firstPoint = this.components[0]; 
     OpenLayers.Geometry.Collection.prototype.addComponent.apply(this, 
                  [firstPoint]); 
    //bm extension: possibility to delete geometry from multigeometries 
    } else if (this.components && this.parent && this.parent.parent && this.parent.parent.CLASS_NAME === "OpenLayers.Geometry.MultiPolygon") {   
     //polygon with hole 
     if (this.parent.components.length > 1) {    
      for (var i = 0; i < this.parent.components.length && this.parent.components.length > 1; i++) { 
       if (this.parent.components[i].id === this.id) { 
        OpenLayers.Util.removeItem(this.parent.components, this.parent.components[i]); 
        this.parent.clearBounds(); 
        return true; 
       } 
      } 
     } 
     //seperate polygon 
     for (var i = 0; i < this.parent.parent.components.length && this.parent.parent.components.length > 1; i++) { 
      if (this.parent.parent.components[i].id === this.parent.id) { 
       OpenLayers.Util.removeItem(this.parent.parent.components, this.parent.parent.components[i]); 
       this.parent.parent.clearBounds(); 
       return true; 
      } 
     } 
    } 
    return removed; 
}, 
+0

나는 당신의 질문을 이해하지 못했을 것 같아요. 다중 폴리곤은 아무 관계가 없으며 단순히 3 점 이상을 삭제합니다. –