ArcGIS Maps SDK for JS:监听按钮点击事件控制图层的visible属性

文章目录

  • [1 需求描述](#1 需求描述)
  • [2 解决方案](#2 解决方案)

1 需求描述

现在有这么一个需求:在地图中添加一些图层,添加图层列表按钮。打开图层列表后用户会打开某些图层使其可见,要求关闭图层列表时,隐藏某些图层(若visible=true)

2 解决方案

可以使用 ArcGIS API for JavaScript 的 dojo/on 模块来监听按钮的点击事件,控制图层的visible属性。

关键代码:

js 复制代码
// 添加按钮
var toggleLayerBtn = document.getElementById("toggleLayerBtn");
view.ui.add(toggleLayerBtn, "top-right");

// 监听按钮点击事件,若图层可见,则关闭
on(toggleLayerBtn, "click", function() {
  if (myFeatureLayer .visible) {
    myFeatureLayer .visible = false;
  } 
});

完整代码:

html 复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ArcGIS API for JavaScript: Custom Button to Toggle Layer Visibility</title>
    <link rel="stylesheet" href="https://js.arcgis.com/4.16/esri/css/main.css">
    <script src="https://js.arcgis.com/4.16/"></script>
  </head>
  <body>
    <div id="map"></div>
    <button id="toggleLayerBtn">Toggle Layer</button>

    <script>
      require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/FeatureLayer",
        "dojo/on",	//用于监听按钮点击事件
        "dojo/domReady!"
      ], function(Map, MapView, FeatureLayer, on) {
        // Create the map and set the view
        var map = new Map({
          basemap: "topo-vector"
        });
        var view = new MapView({
          container: "map",
          map: map,
          center: [0, 0],
          zoom: 4
        });

        // 添加图层
        var myFeatureLayer = new FeatureLayer({
          url: "https://example.com/path/to/feature/layer",
          title: "My Feature Layer",
          visible: false
        });
        map.add(myFeatureLayer );

        // 添加按钮
        var toggleLayerBtn = document.getElementById("toggleLayerBtn");
        view.ui.add(toggleLayerBtn, "top-right");

        // 监听按钮点击事件,若图层可见,则关闭
        on(toggleLayerBtn, "click", function() {
          if (myFeatureLayer .visible) {
            myFeatureLayer .visible = false;
          } 
        });
      });
    </script>
  </body>
</html>

上面的示例代码首先创建了一个地图和地图视图,然后创建了一个FeatureLayer并将其添加到地图中。接下来,使用 dojo/on 模块监听按钮的点击事件,在点击时检查FeatureLayer是否可见,若可见,则 myFeatureLayer .visible = false。

注意替换 "https://example.com/path/to/feature/layer" 为你的FeatureLayer的 URL。

相关推荐
励志不掉头发的内向程序员几秒前
STL库——string(类函数学习)
开发语言·c++
刺客-Andy12 分钟前
React 第七十节 Router中matchRoutes的使用详解及注意事项
前端·javascript·react.js
一百天成为python专家28 分钟前
Python循环语句 从入门到精通
开发语言·人工智能·python·opencv·支持向量机·计算机视觉
Sunhen_Qiletian32 分钟前
朝花夕拾(五)--------Python 中函数、库及接口的详解
开发语言·python
hqwest41 分钟前
C#WPF实战出真汁07--【系统设置】--菜品类型设置
开发语言·c#·wpf·grid设计·stackpanel布局
前路不黑暗@1 小时前
C语言:操作符详解(二)
c语言·开发语言·经验分享·笔记·学习·学习方法·visual studio
深盾科技2 小时前
Kotlin Data Classes 快速上手
android·开发语言·kotlin
zzywxc7872 小时前
详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
开发语言·javascript·人工智能·深度学习·金融·prompt·流程图
大明882 小时前
用 mouseover/mouseout 事件代理模拟 mouseenter/mouseleave
前端·javascript
林太白2 小时前
Nuxt.js搭建一个官网如何简单
前端·javascript·后端