2013-08-06 6 views
0

kml 파일에서 LineString 기능을로드하고있는 OpenLayers openstreetmaps에 문제가 있습니다. LineString의 단순한 복잡성과 선 스트링의 수 때문에 성능을 제외하고는 모두 잘 작동합니다. linestring geometry/feature를 단순화하기 위해 simplyfy() 함수를 사용하고자했습니다. 여기에 내가 작성한 간단한 코드가 있습니다. 문제는 아래의 코드 줄에이 전혀 원래의 형상 기능 구성 요소를 수정하지 않는 것Openlayers는 즉시 라인 스트링 기능을 간소화합니다.

  feature.geometry.components[i].simplify(0.1); 

. 내가 도대체 ​​뭘 잘못하고있는 겁니까? removeComponents를 사용하고 addComponents()를 사용하여 단순화 된 지오메트리를 추가해야하지만이 작업을 수행하는 방법은 무엇일까?

preFeatureInsert : 기능 (기능)

{ 
    if (feature != "undefined" && feature.geometry != "undefined" && feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Collection"); 
    { 
     if (feature.geometry.components != "undefined" && typeof(feature.geometry.components) != "undefined") 
     { 
      for (var i = 0; i < feature.geometry.components.length; i++) 
      { 
       if (feature.geometry.components[i].CLASS_NAME == "OpenLayers.Geometry.LineString") 
       { 
        feature.geometry.components[i].simplify(0.1); 
       } 
      } 
     }       
    } 
} 
+0

다음 예제를 보셨습니까? http://openlayers.org/dev/examples/simplify-linestring.html –

답변

1

단순화 기능은 구성 요소의 단순화 된 버전을 반환하고 구성 요소 자체를 수정하지 않습니다. 루프 내에서 필요에 따라 구성 요소를 설정할 수 있습니다.

feature.geometry.components[i] = feature.geometry.components[i].simplify(0.1);