前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于FeatureLayer,WFSLayer,GraphicsLayer

关于FeatureLayer,WFSLayer,GraphicsLayer

原创
作者头像
MiaoGIS
修改2019-03-14 09:18:36
1.5K0
修改2019-03-14 09:18:36
举报
文章被收录于专栏:Python in AI-IOTPython in AI-IOT

关于WebGIS JS API,只喜欢两种:上手容易,简单灵活的Leaflet,以及系统全面功能强大丰富的Arcgis JS API

本文简单介绍一下开发过程中对Arcgis JS API中FeatureLayerWFSLayer以及GraphicsLayer的小发现。

FeatureLayer,要素图层继承自GraphicsLayer,用于显示从Map服务或Feature服务中的一个图层,它可以是一个图层也可以是一张表。如果isEditable为true,则FeatureLayer上的要素可以被编辑。

FeatureLayer的继承关系
FeatureLayer的继承关系

这里介绍FeatureLayer的几点知识

只有调用过map.addLayer时FeatureLayer graphics属性才不为空数组。

通过new FeatureLayer刚创建要素图层,未加载到地图上时属性graphics为空
通过new FeatureLayer刚创建要素图层,未加载到地图上时属性graphics为空
继承自graphicsLayer的Layer都是在初次map.addLayer(layer)时才会有graphics
继承自graphicsLayer的Layer都是在初次map.addLayer(layer)时才会有graphics
graphicsLayer通过map.addLayer(layer)第一次添加到地图
graphicsLayer通过map.addLayer(layer)第一次添加到地图
说明graphics初次添加到地图时,才会有graphics
说明graphics初次添加到地图时,才会有graphics
当调用map.removeLayer(layer)从地图移除graphicsLayer时,graphics依然存在
当调用map.removeLayer(layer)从地图移除graphicsLayer时,graphics依然存在

当地图缩放级别不同时,对应线类型面类型的FeatureLayer,graphics中geometry对应的几何数据详略细节不同。

当缩放级别较小时graphic对应的geometry数据已经简化
当缩放级别较小时graphic对应的geometry数据已经简化
缩放级别较小时,graphic对应几何路径的节点较稀疏,节点数量大部分是2个
缩放级别较小时,graphic对应几何路径的节点较稀疏,节点数量大部分是2个
当缩放级别较大时graphic对应的geometry数据比较详细
当缩放级别较大时graphic对应的geometry数据比较详细
缩放级别较大时,graphic对应几何路径的节点较稠密
缩放级别较大时,graphic对应几何路径的节点较稠密

当前地图视窗在于FeatureLayer某一局部时,graphics会以当前视图某倍率放大的包围盒为几何范围过滤。

放大平移到FeatureLayer局部,该局部节点稠密,同时视口外的graphics被忽略
放大平移到FeatureLayer局部,该局部节点稠密,同时视口外的graphics被忽略
可以看到只剩10个graphic,并且节点数量比较大
可以看到只剩10个graphic,并且节点数量比较大

现在再看WFSLayer

和FeatureLayer一样,只有调用过map.addLayer时WFSLayer graphics属性才不为空数组。

但是地图缩放级别变化时,或者平移放大到局部时,可以看到WFSLayer graphics属性没有变化。推断WFSLayer

一开始添加到地图时即是原始的几何数据,没有进行几何简化。

地图缩放级别较小看到的WFSLayer
地图缩放级别较小看到的WFSLayer
地图缩放级别较小时看到的WFSLayer的graphics
地图缩放级别较小时看到的WFSLayer的graphics
地图缩放级别较大且平移放大到局部看到的WFSLayer的graphics
地图缩放级别较大且平移放大到局部看到的WFSLayer的graphics
可以看到WFS Layer 的graphics没有任何变化
可以看到WFS Layer 的graphics没有任何变化

new GraphicsLayer创建的graphicsLayer,通过graphicsLayer.add(graphic)方法在此graphicsLayer显式添加graphic,而且graphic其实也是保存在graphicsLayer.graphics属性中,因为通过new Graphic(geometry)创建graphic实例,geometry本身就是构造函数参数,所以我们推断graphicsLayer在地图缩放以及平移放大到局部时,graphics属性无论数量还是节点数量不变。如下图:

还记得我们通过拷贝WFSLayer或FeatureLayer上和鼠标绘制的几何图形空间相交的graphic到一个新的GraphicsLayer实现空间查询的功能,根据上面介绍,这个功能在查询目标层是FeatureLayer层时会存在下图问题。

在缩放级别小的时候执行空间查询
在缩放级别小的时候执行空间查询
当放大地图时,查询结果GraphicsLayer没有跟随查询目标层FeatureLayer一起增稠几何节点而在地图上看到两个图层不重合
当放大地图时,查询结果GraphicsLayer没有跟随查询目标层FeatureLayer一起增稠几何节点而在地图上看到两个图层不重合

下文我们将介绍如何处理这种情况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档