首页 / 浏览问题 / WebGIS / 问题详情
iClient js中地理缓冲区分析无法指定为点创建缓冲区
1EXP 2020年07月22日

使用产品:SuperMap iClient JavaScript 10i 操作系统:win10 x64

如标题所述,在利用SuperMap.GeometryBufferAnalystParameters,希望以某点为中心创建地理要素缓冲区,配置sourceGeometry时,查看SuperMap官方文档,发现该属性如果是点要素可以有以下几种方式作为参数:

       点类型可以是:SuperMap.Geometry.Point L.Point L.GeoJSON ol.geom.Point ol.format.GeoJSON

但是在我分别利用上述参数编写时,会报Uncaught TypeError: e.sourceGeometry is undefined错误,我的代码如下:

var point=new SuperMap.Geometry.Point(30.6282922501411,103.70469372544355);
    
    geoBufferAnalystParams = new SuperMap.GeometryBufferAnalystParameters({
        sourceGeometry: point,//这里报错
        bufferSetting: new SuperMap.BufferSetting({
            endType: SuperMap.BufferEndType.ROUND,
            leftDistance: {value: 0.025},
            rightDistance: {value: 0.025},
            //radiusUnit:SuperMap.BufferRadiusUnit.KILOMETER,
            semicircleLineSegment: 15
        })
    });

请问是哪里出了问题?应该如何修改呢?

1个回答

你好,soureGeometry需要时原生的对象,leafletapi中没有原生的绘制点的接口,您可以通过绘制圆(半径设置为0即视为点),传入就可以查询,参考:

var mypoint= L.circle([-2261.485, 4554.893{color:'#FF0000',fillColor:'#FF0000',radius:0,fillOpacity:1}).addTo(map);
2,842EXP 2020年07月22日

您好,我这里成功显示出了缓冲区范围,但还是有些问题:

1、如上面的代码,我的缓冲区半径设置的单位是m,值很小(0.025m),但是显示出的缓冲区半径应该是这个的几倍大。

图片

2、缓冲区并非是圆形,而是椭圆形

请问还应该怎么改下呢?

...