【发布时间】:2014-10-21 23:56:19
【问题描述】:
我正在使用 ESRI JavaScript API v3.8。 (我知道 3.11 已经发布 - 还不能升级。)
我要做的是从用户选择的任意线(或点)创建用户提供的大小的几何缓冲区。部分相关代码如下:
var params = new esri.tasks.BufferParameters();
params.distances = [values.distance]; //the input distance
params.geometries = [gr.geometry]; //the input geometry
params.unit = esri.tasks.GeometryService.UNIT_FOOT;
params.outSpatialReference = mapView.map.spatialReference; //always 3857
params.bufferSpatialReference = gr.geometry.spatialReference; //always 3857
esri.config.defaults.io.corsEnabledServers.push('mydomain.com');
esri.config.defaults.io.proxyUrl = 'https://serverdomain.com/proxy';
var gsvc = new esri.tasks.GeometryService('https://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer');
gsvc.simplify(params.geometries, function(geometries){
params.geometries = geometries;
gsvc.buffer(params, function(geometries){
//add output geometry to the map and perform spatial query with it
}, function(err){
//handle error
});
}, function(err){
//handle error
});
问题是,如果我使用 500(英尺)的输入距离,然后使用 ESRI 的测量工具测量到 self._queryGeometry 上输入几何图形中心线的距离,创建的多边形的实际宽度是中心线两侧大约 370 英尺。
由于我的测试对象位于伊利诺伊州,因此我已设法使用伊利诺伊州平面空间参考更准确地进行此操作,但逻辑需要在任何地方工作。
当我尝试做测地线缓冲区的各种化身时,输入距离单位似乎被忽略了,使用输入距离值 500,我得到一个跨越整个世界的缓冲区!要么是这样,要么结果是完全一样的,这取决于事情是如何设置的。
我认为我需要做一个测地线缓冲区,但我完全不知道如何以几何服务真正关注我发送的单位的方式进行。
任何想法将不胜感激。如果我遗漏了什么,请告诉我。
【问题讨论】:
标签: javascript geometry buffer esri arcgis-js-api