缓冲区

最近要做一个搜索周边的功能,为了让用户看到范围,我想到了缓冲区,首先我们先了解一下几何图形

几何图形

几何图形中中常用的就是 ,我们这里说两种【“esri/geometry/Point”】和【“esri/Graphic”】

    var pt=new Point({
                        longitude:longitude,
                        latitude:latitude,
                        z:z, 
                        spatialReference:spatialReference//几何的空间参考
                    });
                
    var pointGraphic = new Graphic({
                    geometry: {
                        type: 'point',
                        longitude: longitude,
                        latitude: latitude,
                    },
                    symbol: {
                        type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
                        color: [255, 0, 0],
                        outline: {
                            color: [255, 255, 255],
                            width: 1
                        },
                        size: 7
                    }
                })

当然我们建立缓冲区不能局限于点,如果我们要搜索一条路的周边或者一个建筑范围的周边,那几何图形将不局限于点,可能是多边形也可能是线,这时候我们使用【“esri/Graphic”】就显得方便的多。

                // 线
                var lineGraphic = new Graphic({
                    geometry: {
                        type: "polyline", // autocasts as new Polyline()
                        paths: [[longitude, latitude], [longitude + 1, latitude + 1]]
                    },
                    symbol: {
                        type: "simple-line", // autocasts as SimpleLineSymbol()
                        color: [226, 119, 40],
                        width: 4
                    }
                })
                //  几何图形
                var polygonGraphic = new Graphic({
                    geometry: {
                        type: "polygon", // autocasts as new Polygon()
                        rings: [
                            [-64.78, 32.3],
                            [-66.07, 28.45],
                            [-68.21, 25.78],
                            [-64.78, 32.3]
                        ]
                    },
                    symbol: {
                        type: "simple-fill", // autocasts as new SimpleFillSymbol()
                        color: "red",
                        outline: {
                            // autocasts as new SimpleLineSymbol()
                            color: [255, 255, 255],
                            width: 1
                        }
                    }
                })

我们一般在地球上寻找到某一个目标想看其周围范围内东西时一般会圈起来一个范围,在Arcgis地球上,我们为了看到具体的范围就会建立缓冲区。

API 【“esri/geometry/geometryEngine”】

在这个API中有两个是有关建立缓冲区的属性 buffer()geodesicBuffer()
他们两个的区别在与wkid:4326值不同,buffer()适用于wkid:4326,如果需要使用wkid:4326以外的地理坐标系来缓冲几何,则需要使用geodesicBuffer()

参数

  • geometry:缓冲区输入几何
  • distance:指定的缓冲距离
  • unit:距离的度量单位。
  • unionResults: 默认值:false 确定是否应将输出几何合并为单个多边形

使用

                var bufferGeometry = geometryEngine.geodesicBuffer(
                    point,
                    100000,
                    "meters",
                    false
                );
                var fillSymbol = {
                    type: "simple-fill", // autocasts as new SimpleFillSymbol()
                    color: "blue",
                    outline: {
                        // autocasts as new SimpleLineSymbol()
                        color: [255, 255, 255],
                        width: 1
                    }
                };
                bufferLayer.add(
                    new Graphic({
                        geometry: bufferGeometry,
                        symbol: fillSymbol
                    })
                );
                bufferLayer.add(polygonGraphic)

坑一

3D地图使用point接口要带Z轴

坑二

地球点击事件不能阻止冒泡,否则缓冲区无法建立

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐