arcgis前端(3)----->基础篇–自定义地图优化/隐藏or显示子图层

文章目录

  • arcgis前端(3)----->基础篇--自定义地图优化/隐藏or显示子图层
  • 前言
  • 实现效果展示
  • 一、常见问题
  • 二、具体实现
    • 1.通过导出时设置
      • 注:也可以直接通过代码控制不用在地图上设置,可直接阅读[2.通过代码动态显示/隐藏子图层](#two)
    • 2.通过代码动态显示/隐藏子<span id="two">图层</span>

前言

上一篇介绍了如何使用代码去加载自定义arcgis的地图及如何上传一个自定义的arcgis地图,本篇将介绍自定义地图的优化方案1隐藏or显示子图层。

实现效果展示


一、常见问题

Q:为什么要优化呢?
A:在有的时候我们通常只需要某样东西而不需要所有的东西,这就像大猩猩与香蕉的故事。例如:小明是做水质管理的,那么关注的大多数都是与河流山川有关系的数据而不需要去关注什么收费站呀、什么停车场啊这些多余的数据。而且当数据多的时候往往渲染的时间也会增加,当我们只显示我们需要的数据这就达到了优化的作用(减少了渲染数据的时间)。

Q:什么是子图层?
A:一个图层里的图层,如下图:

二、具体实现

1.通过导出时设置

在我们发布自定义图层时我们可以只勾选需要的基础的子图层来进行基础显示发布,后期通过展示页面进行其它子图层的显示/隐藏,如之前我们的地图我们默认只需要显示省会、地级名以及县界

注:也可以直接通过代码控制不用在地图上设置,可直接阅读2.通过代码动态显示/隐藏子图层


勾选之后进行覆盖发布(因为在上一篇中已经发布过了,所以我们这里选择覆盖发布)




等待发布成功后,打开之前设置的服务地址打开地图就能看到新的变动


发布成功后,我们可以发现现在的比之前的加载速度快了很多,但数据没之前多了,这时我们就需要通过代码去做一个多选的图层显示/隐藏功能

2.通过代码动态显示/隐藏子图层

相关示例代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>html,body,#viewDiv {padding: 0;margin: 0;height: 100%;width: 100%;}#leftPanel {width: 15%;height: 92vh;position: fixed;left: 30px;top: 30px;background-color: #eee;border: 1px solid gray;border-radius: 16px;overflow: auto;padding-bottom: 20px;}#leftPanel>div {padding: 20px;padding-bottom: 0;}body ::-webkit-scrollbar {/*滚动条整体样式*/width: 5px;/*高宽分别对应横竖滚动条的尺寸*/border-radius: 5px;/* height: 5px; */}body ::-webkit-scrollbar-thumb {/*滚动条里面小方块*/background-color: #cecece;border-radius: 5px;height: 5px;/*background-image: -webkit-linear-gradient(45deg, rgba(255, 93, 143, 1) 25%, transparent 25%, transparent 50%, rgba(255, 93, 143, 1) 50%, rgba(255, 93, 143, 1) 75%, transparent 75%, transparent);*/}body ::-webkit-scrollbar-track {/*滚动条里面轨道*/-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);background: #f5f5f5;}</style><link rel="stylesheet" href="https://js.arcgis.com/4.24/esri/themes/light/main.css" /><script src="https://js.arcgis.com/4.24/"></script><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script><script>require(["esri/Map", "esri/views/MapView", "esri/layers/MapImageLayer"], function (Map, MapView, MapImageLayer) {const map = new Map();// points to the states layer in a service storing U.S. census data// 加载自定义地图let layer = new MapImageLayer({url: "http://localhost:6080/arcgis/rest/services/MyMaps/电子地图/MapServer",//地图地址});/*** 获取该地图的所有子图层,并对其进行相关操作* 要设置子图层是否显示只需要修改该子图层的visible来实现是否显示*/layer.when(() => {const needShow = ['省道_polyline', '国道_polyline'];layer.sublayers.map((item, index) => {// 设置默认加载时需要显示的子图层,这里我们通过title来判断 也可以通过id判断if (needShow.includes(item.title)) {item.visible = true;}// 将子图层名称添加到左侧面板$('#leftPanel').append(`<div><input ${item.visible ? 'checked' : ''} id="layer_${index}" name="${item.id}" value="${item.visible}" type="checkbox"><label for="layer_${index}">${item.title}</label></div>`);});});map.add(layer);  // adds the layer to the map// 创建一个map视图 后期视图上的操作都通过这个对象来操作const view = new MapView({container: "viewDiv",//html容器,即将地图添加到哪个容器里map: map,zoom: 4,// center: [15, 65] // longitude, latitude 地图初始位置logo: false  //不显示Esri的logo});// 事件window.onload = () => {// 修改子图层显示or隐藏状态$('#leftPanel>div>input').on('click', e => {const node=$(e.target);const sublayer = layer.findSublayerById(parseInt(node.attr('name')));sublayer.visible=!sublayer.visible;})}});</script>
</head><body><div id="viewDiv"></div><!-- 左侧面板 --><div id="leftPanel"> </div>
</body></html>

下一篇:arcgis常用内置控件

相关链接:https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-MapImageLayer.html#allSublayers

arcgis前端(3)----->基础篇--自定义地图优化/隐藏or显示子图层相关推荐

  1. 前端总结·基础篇·CSS

    前端总结·基础篇·CSS 1 常用重置+重置插件(Normalize.css,IE8+) * {box-sizing:border-box;}  /* IE8+ */body {margin:0;}  ...

  2. 前端总结·基础篇·CSS(二)视觉

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...

  3. ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...

    JS中的数据类型 (一).基本数据类型(值类型) 1.number:数字 -12.12.5.-12.5 0这些数字都是number: js中增加了一个number类型的数据:'NaN' typeof ...

  4. 大数据笔记30—Hadoop基础篇13(Hive优化及数据倾斜)

    Hive优化及数据倾斜 知识点01:回顾 知识点02:目标 知识点03:Hive函数:多行转多列 知识点04:Hive函数:多行转单列 知识点05:Hive函数:多列转多行 知识点06:Hive函数: ...

  5. ➷HTML+CSS前端笔记(基础篇-第一部分)

    ★ 学习目标: 根据.psd文件/图片,用html+css布局出静态网页: !DAY❶ 认识Web及常用标签 基础概念铺垫 网页构造原理 网页元素:文字,图片,链接,音视频等: 网页构造原理:网页元素 ...

  6. 前端 —— JavaScript 基础篇 22 -- 比较全的正则验证(注册页面的demo)

    注册页面中用到的正则校验,在提交表单的时候.方便自己后期复制粘贴 .若是能帮助有需要的伙伴,那再好不过. css文件 .padb{padding: 30px 50px; } .conBox{backg ...

  7. python编程lcd显示_PyQt5快速上手基础篇2-按钮控制LCD屏显示

    前言 上一节我们完成了PyQt5开发环境搭建,本节开始我们正式进入PyQt5的世界,首先我给大家介绍下QT的信号与槽,然后利用这一特点完成点击按钮触发LCD屏显示功能. 一.基础知识 1. PyQt5 ...

  8. 前端笔记(9)元素的隐藏与显示,css用户界面样式,vertical-align垂直对齐,溢出文字省略号显示,css精灵技术,过渡,焦点,滑动门,margin负值

    css样式表/层叠样式表(7) 元素的隐藏与显示 (1)dispaly显示 (2)visibility可见性 (3)overflow溢出 css用户界面样式 鼠标样式cursor 轮廓线outline ...

  9. Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片

    Android 音视频开发 上一篇文章:使用 imageview绘制一张图片 任务一 SurfaceView绘制一张图片 文章目录 Android 音视频开发 前言 一.surfaceview是什么? ...

最新文章

  1. python 列表、字典转json字符串
  2. CSharpGL(5)解析3DS文件并用CSharpGL渲染
  3. 【数据分析】多场景下的算法构建
  4. windows下搭建go开发环境
  5. 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以
  6. vue 项目抛出警告
  7. tensorflow随笔-队列(1)
  8. windows当代理服务器-CCProx的使用
  9. 【图】二分图最大权匹配
  10. Linux基础入门之VM和centos的安装使用
  11. 【Android进阶】Android仿淘宝商品浏览滑(拖)动查看详情界面
  12. oracle创建一个永久性表空间,oracle创建表空间
  13. IDEA2022 提示:更新 TKK 失败,请检查网络连接
  14. “POW'ER 2020 DEFI 创新者大会” | Conflux CTO 伍鸣畅谈公链如何成为 DeFi 的完美世界...
  15. 玩吧接入流程(暂时记记)
  16. 【GNN应用】金融风控领域
  17. 荆楚计算机专业分数线理工,荆楚理工学院分数线
  18. 删除AWS绑定的信用卡账户
  19. 古代汉语王力版复习重点要点
  20. Moho Pro - Mac 上一款专业的二维动画制作软件,强大的功能让你尽情发挥创意

热门文章

  1. 天猫逆向交易Java面试_简单逆向天猫的思考
  2. 通过android传感器控制ROV云台转动
  3. python async 使用,介绍
  4. 数据科学 IPython 笔记本 四、Keras(上)
  5. Git创建秘钥时提示:too many arguments解决
  6. 基于MATLAB的全工况前向碰撞预警模型学习
  7. Solaris的crontab
  8. 删除91助手右键菜单
  9. 2016年上半年信息系统项目管理师真题之上午题小虎趣味解答第26-30题
  10. abaqus仿真快速入门