ArcGIS API for JavaScript 4.X学习——子图层(sublayers)

内容概要:本地发布地图服务往往会将一整个地图文件进行发布,一个地图服务中包含了多个图层,我们可以通过sublayers属性的设置,对子图层进行控制。本文以MapImageLayer类下的sublayers属性设置为例,实现子图层并对子图层顺序进行调整。

小实例实现效果:

 

 

官网对应的内容如下:

MapImageLayer | API Reference | ArcGIS API for JavaScript 4.23 | ArcGIS Developericon-default.png?t=M3K6https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-MapImageLayer.html#properties-summary参考的官方示例链接如下:

MapImageLayer - Toggle sublayer visibility | Sample Code | ArcGIS API for JavaScript 4.23 | ArcGIS Developericon-default.png?t=M3K6https://developers.arcgis.com/javascript/latest/sample-code/layers-mapimagelayer-sublayers/核心部分:

1. 创建MapImageLayer,对sublayers属性进行设置,下面的代码是基本的框架。(注意自行引入对应的模块)

const layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [
    {
      id: 3,//对应自己发布的服务的图层id号
      visible: false//对可见性进行设置,非必要,可根据自己的目标效果选择
    },
    {
      id: 2,
      visible: true
    },
    {
      id: 1,
      visible: true
    },
    {
      id: 0,
      visible: true
    }
  ]
});

 2. 初次使用可能会不明白id的对应关系,我使用示例中的公共服务进行解释。

打开地图服务后,我们可以看见如下界面,sublayers中的id号即为layers下各图层后的id号。

 小实例的完整代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <title>
      sublayers
    </title>

    <link rel="stylesheet" href="http://localhost/4.18/esri/themes/light/main.css" />
    <script src="http://localhost/4.18/dojo/dojo.js"></script>

    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
      #layerchange {
        top: 40px;
        right: 20px;
        position: absolute;
        z-index: 99;
        background-color: white;
        border-radius: 8px;
        padding: 10px;
        opacity: 0.75;
      }

    </style>

    <script>
      require([
        "esri/Map", 
        "esri/views/MapView", 
        "esri/layers/MapImageLayer",
        "esri/widgets/LayerList",
        "esri/widgets/Home"], 
          (
            Map,
            MapView,
            MapImageLayer,
            LayerList,
            Home

      ) => {

        const vectorLayer = new MapImageLayer({
          url: "http://localhost:6080/arcgis/rest/services/hubei/湖北/MapServer",
          title: "vector",
          sublayers: [
              {
                  id: 2,
                  title: "hb",
                  visible: true
              },
              {
                  id: 1,
                  title: "county",
                  visible: true
              },
              {
                  id: 0,
                  visible:true,
                  title: "thist",
                  renderer: {
                    type: "simple", // autocasts as new SimpleRenderer()
                    symbol: {
                    type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
                    size: 5,
                    color: "pink"
                    }
                  }
              }
          ]
        });
        
        const map = new Map({
          basemap: "gray-vector",
          layers: [vectorLayer]
        });

        const view = new MapView({
          container: "viewDiv",
          map: map,
          center: [114.31667,30.51667],
          zoom: 5
        });

        const homeWidget=new Home({
          view: view
        });
        const layerlist = new LayerList({
          view: view
        });
        view.ui.add(homeWidget,"top-left");
        view.ui.add(layerlist,"top-left");
        view.ui.add("layerchange",
        {
          position: "top-right",
          index: 0
        });
        var countrylayer=vectorLayer.sublayers.getItemAt(1);

        const layerchangeBtn=document.getElementById("layerchangeBtn");
        const drawbackBtn=document.getElementById("drawbackBtn");

        layerchangeBtn.addEventListener("click",() =>{
          vectorLayer.sublayers.reorder(countrylayer,0);
        });
        drawbackBtn.addEventListener("click",() =>{
          vectorLayer.sublayers.reorder(countrylayer,1);
        })
      });

    </script>
  </head>

  <body>
    <div id="viewDiv">
        <span id="layerchange" class="esri-widget">
            <button id="layerchangeBtn" class="esri-button esri-button--secondary">改变图层顺序</button> 
            <button id="drawbackBtn" class="esri-button esri-button--secondary">回到默认顺序</button>  
    </div>
    
  </body>
</html>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ArcGIS API for JavaScript 4.x 是由 Esri 公司提供的 JavaScript API,用于在 web 应用程序中使用 ArcGIS 地图和地理空间数据。它提供了一组用于创建丰富地图应用程序的工具,包括地图显示、图层控制、查询和分析等功能。 ### 回答2: ArcGIS API for JavaScript 4.x 是由 Esri 公司开发的一款基于 web 的地理信息系统(WebGIS)开发工具集。它提供丰富的功能和工具,可以用来构建高质量的地图、应用程序和应用程序界面。 ArcGIS API for JavaScript 4.x 引入了许多新特性和改进,包括以下内容: 1. 优化性能:ArcGIS API for JavaScript 4.x 是基于 WebGL 技术实现的,可以更快速地加载和渲染地图。这个版本还引入了 SceneView 和 MapView,可以更加快速和高效地渲染 3D 场景。 2. 全新的视觉外观:ArcGIS API for JavaScript 4.x 引入了一些全新的样式,可以更好地展现数据。开发人员可以选择从一系列令人惊叹的符号和颜色方案中选择。 3. 更好的交互性和数据分析功能:ArcGIS API for JavaScript 4.x 提供了更好的交互性和数据分析工具,可以让用户更加轻松地探索和分析地图数据。例如,这个版本使得开发人员可以使用滤镜和统计功能探索和分析数据。 4. 多平台支持:ArcGIS API for JavaScript 4.x 可以在不同的平台上运行,包括桌面浏览器、移动设备和虚拟现实(VR)设备。 总之,ArcGIS API for JavaScript 4.x 是一款强大的工具集,可以帮助开发人员构建出高质量的地图应用程序。它提供了许多新特性和改进,包括优化性能、全新的视觉外观、更好的交互性和数据分析功能,以及多平台支持。 ### 回答3: ArcGIS API for JavaScript 4.x是一种WebGIS软件开发工具包,旨在提供可靠、高性能和易于使用的API,帮助开发人员构建可移植性强、交互性好的 WebGIS 应用。 ArcGIS API for JavaScript 4.x具有以下特点: 1.现代的Web GIS开发工具 ArcGIS API for JavaScript 4.x是一个现代的Web GIS开发工具,它可以帮助开发者利用最新的Web技术来构建高效、交互性好的WebGIS应用,无论时刻或地点。 2.支持多种数据格式 ArcGIS API for JavaScript 4.x支持多种数据格式,包括点、线、面、网格、图像、视频等,可以帮助开发者轻松地展示和分析地理信息数据。 3.交互性强 ArcGIS API for JavaScript 4.x允许开发者创建具有交互性的应用程序,包括可视化和图形用户界面(GUI)。开发人员可以轻松地添加地图、图层、标签、图例和其他控件,以便用户可以与地图积极地交互。 4.易于开发 ArcGIS API for JavaScript 4.x非常易于开发,开发者可以使用自己的Web开发工具(如Visual Studio或Sublime等),无需安装复杂的GIS软件或插件。开始撰写代码需要一些GIS基础知识和Javascript开发经验。 5.高性能 ArcGIS API for JavaScript 4.x拥有高性能的地图渲染引擎,支持大量复杂数据文件和多层次渲染操作,以及高效的数据压缩和缓存机制,为地图应用提供良好的性能。 总而言之, ArcGIS API for JavaScript 4.x提供了丰富的功能和细节控制能力,使开发人员能够快速构建出具有高度个性化的WebGIS应用程序,满足不同用户需求。无论是企业的GIS解决方案,还是个人开发GIS应用, ArcGIS API for JavaScript 4.x是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值