针对不同用户显示同一服务中不同区域的信息

如何实现针对不同用户显示同一服务中不同区域的信息?
已邀请:

谢军

赞同来自:

【解决办法】:
可以对不同登陆用户,使用不同的mask图层对服务进行遮盖。解决方案如下:

1.生成mask图片

1).在ArcMap中加载要当面mask图层的面要素类;

2).在ArcMap中使用polygon to raster工具,将面要素类转换为栅格数据,Cellsize参数的值设置的小一点,否者生成的栅格数据单元格太大,非常粗糙;

3).在ArcMap中加载转换好的栅格数据,进行符号化,例如可以进行分级渲染,分为一个级别,整个栅格图层设置为同一种颜色;

4). 在渲染好的图层上右键,选择数据 -》 导出数据,在export raster data窗口中,勾选Use Render和Force RGB, 导出的图片格式设置为png, 如图:https://www.screencast.com/t/6s2M1qVW17o

5). 在ArcMap中加载png数据,右键图层,选择属性,在Extent选项卡中获取extent信息(程序中会用到此信息);

6).可以将png图片拷贝至web服务器或者应用程序目录中,以获得图片的url;


2.在JavaScript API中使用 MapImageLayer 对象调用mask图片

代码示例如下:
   

    require([
esri/map,
esri/layers/MapImage,
esri/layers/MapImageLayer
], function (Map, MapImage, MapImageLayer) {

var map = new Map(mapDiv, {
sliderOrientation: horizontal
});

var mi = new MapImage({
''extent'': {
''xmin'': 70.36501693725586,
''ymin'': 11.6401254937456,
''xmax'': 138.16777420043945,
''ymax'': 79.4428827569292,
''spatialReference'': {''wkid'': 4214}
},
''href'': http://192.168.100.117/mask.png
});

var mil = new MapImageLayer();

mil.addImage(mi);

map.addLayer(mil);

});

要回复问题请先登录注册