2016-07-20 90 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); 

服務器返回一個錯誤,指出幾何必須提供。我的猜測是我需要傳遞FeatureLayer的幾何,而不是FeatureLayer本身。我如何獲得FeatureLayer的幾何圖形並將其適當地傳遞給BufferParameters?

編輯: 此外,我試圖循環,因爲你可以看到在代碼波紋管。將幾何圖形數組傳遞給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的有用的錯誤消息:(。我添加了一個適用於我的例子,儘量匹配最好的,如果你這樣做,並且stlil看到一個400錯誤,可能是有一個幾何問題您的要素圖層,請嘗試使用簡單點發送它,或者先使用幾何服務簡化方法來簡化它,在此函數中,我傳入ArcGIS Point和50作爲我的半徑。 –

0

你使用的是什麼vespion的js api?從版本3.13開始,有一個模塊esri/geometry/geometryEngine。使用此模塊,您可以在客戶端執行幾何操作而無需幾何服務。 Here是使用它的一個很好的例子。


還可以看看模塊esri/graphicsUtils從圖形中獲取幾何圖形。