因为对JavaScript API不熟悉,,所以这里只是介绍一下思路,并没有具体的实现代码
一、需求
前面遇到多个同样的需求,很简单也很明确,就是前端配合用户权限,如何将服务分区域进行渲染,例如成都市青羊区的人,登录GIS平台的时候,只能看到青羊区范围的地图。
二、思路
2.1 exportmap接口
不论是动态服务还是切片服务,均可以使用ExportMap接口,ExportMap请求示例: https://192.168.1.200:6443/arcgis/rest/services/test/test/MapServer/export?bbox=8463879.518896595,3555943.5963002327,1.079893715212126E7,4865874.006111964
ExportMap中的常用的参数如下:
①BBox:数据框范围,分别是<xmin>、<ymin>、<xmax>、<ymax>
②Image Size:图片大小,宽度和高度
③Image Spatial Reference:坐标系
④Image Format:图片格式,PNG,JPG等
⑤layers:请求图片的图层,控制需要export的图层,有4个关键词
show(显示)、hide(隐藏)、include(包含)、exclude(不包含)
⑥Layer Definitions:过滤器,相当于where,获取当前符合要求的图层
⑦Format:返回结果,HTML、IMAGE、KMZ
2.2 Query接口
地图服务或者要素服务均支持Query接口,地图服务做了切片也可以,前提是发布服务的时候勾选了支持查询,如下:
见一个示例:test为一个切片服务
https://192.168.1.200:6443/arcgis/rest/services/test/test/MapServer/0/query
Query常用参数如下:
①geometry:空间过滤器
②where:属性过滤器
③Spatial Relationship:空间关系,包含相交、包含等
④f:返回结果,支持html、json、geojson、kmz等
2.3 前端过滤
总体思路是先加载,过滤之后再渲染,不同服务的加载接口不一致,以要素服务为例:指定definitionExpression属性即可
2.4 视图
ArcGIS Enterprise 10.7中新增的功能,托管要素图层视图,从名称中也能发现限制要求:只针对托管要素图层。
通过对托管要素图层创建托管要素图层视图,有了视图之后,管理员可以定义定义托管要素图层视图中可用的要素或字段以及将视图共享给其成员需要该数据视图访问权限的群组。例如可以控制特定群组的人员编辑要素图层,其他人只能查看图层,也可以设置特定人查看特定区域的数据。
如下图:可以更改图层的默认样式、过滤器,弹窗和标签等。
后续如果想到其他方式,再补充
参考:
①https://developers.arcgis.com/rest/services-reference/export-map.htm
②https://developers.arcgis.com/rest/services-reference/query-map-service-layer-.htm
③https://enterprise.arcgis.com/zh-cn/portal/latest/use/create-hosted-views.htm
欢迎关注arcgis js api前端大神许大姐 https://xuqwblog.blog.csdn.net/ 有js api教程