geometryEngine中geodesicBuffer()方法分析

来源:互联网 发布:广州金针软件电话 编辑:程序博客网 时间:2024/05/22 11:32

geodesicBuffer(geometry, distance, unit, unionResults),该方法用于给输入的geometry创建一定距离的缓冲区。

该方法返回的缓冲区的面几何,可以是在空中显示,也可以在地面上显示。

比如:在sceneview视图中,如果你输入的几何是point类型的。

1.point是二维的没有Z值,通过这样的几何创建的缓冲区面中的rings属性中的折点数组中也是二维的。

var pt=new Point(
{
longitude:102.74739845358548,
latitude:25.093973851145098,
spatialReference:{wkid:4326}
});

var bufferGeo1=geometryEngine.geodesicBuffer(pt,10,"meters",false);

注意:该图形创建的缓冲区中的折点的维数是由输入几何的维数决定的。

2.point是三维的,有Z值,通过这样的几何创建的缓冲区面中的rings中的点的数组是三维的。但是面中的折点的海拔默认是0,如果你不改变折点的海拔值,那么缓冲区面是显示不出来的,因为海拔为0在地面以下不会显示,通过遍历缓冲区面中的折点数组中的z值与point中的z值保持一致(大于地面的海拔就可以),当你设置折点的海拔,很大的时候,缓冲面的是悬在空中的。

var pt=new Point(
{
longitude:102.74739845358548,
latitude:25.093973851145098,
z:1916.826530947298,
spatialReference:{wkid:4326}
});

var geo2=geometryEngine.geodesicBuffer(pt,10,"meters",false);

注意:如果你输入的几何是二维的坐标,即没有海拔,则直接将缓冲面添加的地图上即可,如果你输入的几何是三维的坐标,即有海拔,那么你要设置缓冲区面中折点的海拔值,如果不设置,默认为0,缓冲面不会显示

效果图:

输入为二维几何:


输入为三维几何,设置了缓冲区面折点的海拔值:


原创粉丝点击