arcgis 中如何用js控制图层服务的层级顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arcgis 中如何用js控制图层服务的层级顺序相关的知识,希望对你有一定的参考价值。

您好,用js展示的正常效果是这样的,淡绿色的层表示污染物情况,

可偶尔刷新一次,可能会不出现这个层,

可能因为数据传送的慢,第三个图层生成的快,被前两个图层覆盖了,所以我想用js控制下污染物这个层的顺序,就好像Z-Index那样,让他总在最上面。要怎么实现呢,谢谢。

    在显示选项卡上,将图层在内容列表中向上或者向下拖动。

    将要放置图层的位置处会显示一条黑线。

    释放鼠标键将图层放置到新的位置。

    通常,各注记图层将按照它们在内容列表中的显示顺序绘制到地图中,这可能会导致注记被隐藏在其他图层之下。但是,您也可以选择将注记图层始终绘制到其他图层上方。要执行此操作,请打开该注记图层的图层属性对话框,单击显示选项卡,然后取消选中以此图层在内容列表中相对于其他图层的顺序绘制此图层。如果取消选中此选项,则即使注记图层位于内容列表的底部,也会始终将其绘制在其他图层之上。如果地图中存在多个注记图层,则这些注记图层的绘制顺序将取决于它们在内容列表中的相对位置。

参考技术A 使用符号级别绘制控制要素在地图中的绘制顺序。通过这项技术,可使用符号来指定要素的显示顺序。

符号级别在图层右键的属性里面有设置,需要在属性表中添加字段,把无色区域设为
1,其他地区为。
2,那么就可以优先显示无色区域。
参考技术B map.add()中传入的参数除了层级外还有一个number类型,设置他可以控制层级顺序

ArcGIS 切片与矢量图图层顺序问题

在项目中有个需求:根据图层索引添加图层

看到这个需求一下子想到 map.addLayer(layer,index?) 接口

但是问题出现了,我切片图加载顺序在矢量图之后就不行!

        map = new Map("map");
        //加载矢量服务图层
        var dynamic = new ArcGISDynamicMapServiceLayer("");
        //加载切片服务图层
        var tiled = new ArcGISTiledMapServiceLayer(""); 
        //先添加动态地图服务
        map.addLayer(dynamic);
        //再添加切片地图服务
        map.addLayer(tiled);

但是反过来,先加载切片底图,后加载矢量图就没有问题

map = new Map("map");
        //加载矢量服务图层
        var dynamic = new ArcGISDynamicMapServiceLayer("");
        //加载切片服务图层
        var tiled = new ArcGISTiledMapServiceLayer(""); 
        //先添加切片地图服务
        map.addLayer(tiled);
        //后添加动态地图服务
        map.addLayer(dynamic);

这究竟什么原因呢?偶然间查到如下一段话

技术图片

 

我的理解是Map会根据第一个添加的图层设立参考,但是缓存图层不能动态转换参考。所以有缓存图层的必须将缓存图层作为底图,第一个加载到Map里。

 

以上是关于arcgis 中如何用js控制图层服务的层级顺序的主要内容,如果未能解决你的问题,请参考以下文章

在ARCGIS中如何用矢量配准栅格影像

ARCGIS中如何用生成的坡度图提取多边形的平均坡度?

ArcGIS 切片与矢量图图层顺序问题

arcgis api 4.x for js之图层管理篇

如何调用天地图js API 添加arcgis发布的图层服务

如何用arcgis做电子地图