我正在使用 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,我得到一个跨越整个世界的缓冲区!要么是这样,要么结果是完全一样的,这取决于事情是如何设置的。
我相信我需要做一个测地线缓冲区,但我完全不知道如何以几何服务真正关注我发送的单位的方式进行。
任何想法将不胜感激。让我知道我是否遗漏了什么。