2016-07-20 6 views
0

사용자 입력 및 지오메트리 서비스를 사용하여 버퍼링하려는 기능 레이어가 있습니다.ESRI JS API - 버퍼 FeatureLayer

FeatureLayer :

var texasPipeline = new FeatureLayer(pipeURL, { 
     mode: FeatureLayer.MODE_ONDEMAND, 
     outFields: ["*"], 
     definitionExpression:texasPipeQuery 
    }); 

BufferParameters :

 var params = new BufferParameters(); 
     params.distances = [distance]; 
     params.unit = units; 
     params.outSpatialReference = map.spatialReference; 
     params.geometries = texasPipeline; 
     map.graphics.clear(); 
     geomSvc.buffer(params, showBuffer); 

이 서버는 Geometry가 제공해야한다는 오류를 반환합니다. 내 생각 엔 FeatureLayer 자체와 반대로 FeatureLayer의 지오메트리를 전달해야한다는 것입니다. 어떻게 필자는 FeatureLayer의 기하학에 도달하고 그것을 적절하게 BufferParameters에 전달합니까 ??

편집 : 또한 코드에서 볼 수 있듯이 루프를 통과하려고했습니다. Geometry h 열을 BufferParameters에 전달해도 여전히 성공적으로 리턴하지 못합니다.

 var texasPipelineGeom = []; 
     var graphics = texasPipeline.graphics; 
     for (var G in graphics) { 
      var g = graphics[G]["geometry"]; 
      console.log(g); 
      texasPipelineGeom.push(g); 
     } 

답변

0

수정 사항으로 인해받는 오류는 무엇인가요? 버퍼 매개 변수는 지형지 물 레이어 대신 지형지 물 배열을 사용합니다.

당신은 (단지 의사 코드로 받아 검증되지 않은) 같은 것을 사용할 수 있습니다 다각형을 사용하여, 때로는 기하학적 서비스가 단순화되고 있지 다각형에 대해 불평 할 것이다

params.geometries = texasPipeline.graphics.map(function (graphic) { 
    return graphic.geometry; 
}); 

합니다. 다각형을 사용하는 완전한 예제는 여기에서 찾으실 수 있습니다 : https://developers.arcgis.com/javascript/3/jssamples/util_buffergraphic.html, 당신은 정확하게 피처 레이어에서 여러분의 도형을 가져와 params.geometries에 추가하기 만하면됩니다.

var buffer = function buffer (point, radius) { 
    var promise = new Deferred(); 
    var gsvc = new GeometryService(CONFIG.GEOMETRY_SERVICE_URL); 
    var params = new BufferParameters(); 
    params.geometries = [point]; 
    params.distances = [radius]; 
    params.unit = GeometryService.UNIT_KILOMETER; 
    params.outSpatialReference = new SpatialReference(54010); 

    gsvc.buffer(params, promise.resolve, console.error); 

    return promise; 
}; 
+0

해당 오류는 400 오류입니다. 작업을 완료 할 수 없습니다. – LCaraway

+0

Esri의 유용한 오류 메시지가 필요합니다. (나를 위해 작동하는 예제를 추가했습니다. 가능한 한 최선을 다해 시도하십시오. 400 오류가 발생하고 stlil이 발생하면, 도형에 문제가있을 수 있습니다. 귀하의 피지컬 레이어를 대신 간단한 포인트로 보내거나 지오메트리 서비스로 먼저 단순화하여 메소드를 간소화하십시오.이 함수에서는 ArcGIS Point와 내 반지름을 50으로 전달합니다. –

0

사용중인 js api의 버전은 무엇입니까? 버전 3.13부터 모듈 esri/geometry/geometryEngine이 있습니다. 이 모듈을 사용하면 지오메트리 서비스없이 클라이언트 측에서 지오메트리 연산을 수행 할 수 있습니다. Here이 좋은 예입니다.


그래픽에서 도형을 얻으려면 모듈 esri/graphicsUtils을 살펴보십시오.