已4.23版本为例,看一下官方文档中的示例如下:
1、引用有两种方式,根据自己的项目选择要引入的方式。
2、引入需要的类
import SpatialReference from '@arcgis/core/geometry/SpatialReference';
import ProjectParameters from '@arcgis/core/rest/support/ProjectParameters';
import * as geometryService from '@arcgis/core/rest/geometryService';
import * as geometryEngine from '@arcgis/core/geometry/geometryEngine';
let geometry = null //这里是需要缓冲的几何图形,这里可以是点、线、面。直接替换掉这里null即可
3、如果当前的坐标系不是4326,这里需要一步坐标系的转换,是4326可以跳过这一步骤。(我这里使用的坐标系是4490,并以4490为例。)
const pGeometryServiceURL= "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"
const outSpatialReference = new SpatialReference({wkid: 4326}) //转化后的坐标系4326
const params = new ProjectParameters({
geometries: [geometry],
outSpatialReference: outSpatialReference,
transformForward: true
})
geometryService.project(pGeometryServiceURL, params).then(geometrys => {
//这里的geometrys就是转换后的几何数组,传参有几个geometry这里返回就有几个
this._bufferGeometry(geometrys[0])
})
4、用转换为4326的geometry进行缓冲
_bufferGeometry(geo){
const pthis = this
let bufferRadius = 500 //缓冲距离
let bufferUnit = "meters" //缓冲单位
let g2 = geometryEngine.geodesicBuffer(geo, bufferRadius, bufferUnit)
//这里的g2就是缓冲后缓冲区,是个面!!!但是!!!现在坐标系是4326的,不是我们系统使用的4490,
//所以如果想把结果应用到项目中的话,需要把g2在进行一次坐标转换,把4326转换成4490
//使用和上边步骤一样,只不过是把4326换成4490,,,这里不在写一遍了。所以最好是把上边步骤封装成方法
}
这里的g2就是缓冲后缓冲区,是个面!!!但是!!!现在坐标系是4326的,不是我们系统使用的4490,所以如果想把结果应用到项目中的话,需要把g2在进行一次坐标转换,把4326转换成4490。使用和上边步骤一样,只不过是把4326换成4490,,,这里不在写一遍了。所以最好是把上边步骤3封装成方法