arcgis for js实现FeatureLayer图层弹窗展示所有field字段方式二

效果和说明

feature图层中的矢量要素包含很多的属性,在点击要素时popupTemplate弹窗显示所有field字段值

上一篇文章提到对field值进行转义,在研究时发现新的弹窗展示所有字段的另一种方式,更加便捷,且样式可自定义

实现代码

html 复制代码
<!DOCTYPE html>
<html lang="zn">
  <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>
      body {
        margin: 0;
      }
      #mapview {
        position: absolute;
        width: 100%;
        height: 100%;
      }
      * {
        margin: 0;
        padding: 0;
      }

      .popup-template-content {
        border: 1px solid #ccc;
        border-bottom: 0;
      }
      .popup-template-content .field-row {
        margin: 0;
        display: flex;
        border-bottom: 1px solid #ccc;
        border-left: 3px solid #ff6600;
      }
      .popup-template-content .field-row .dt {
        padding: 5px 10px;
        flex: 1;
        border-right: 1px solid #ccc;
      }
      .popup-template-content .field-row .db {
        padding: 5px 10px;
        flex: 2;
        text-align: left;
      }
    </style>

    <link rel="stylesheet" href="https://js.arcgis.com/4.23/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.23/"></script>
  </head>
  <body>
    <div id="mapview"></div>

    <script>
      require(['esri/Map', 'esri/views/MapView', 'esri/layers/FeatureLayer'], function (
        Map,
        MapView,
        FeatureLayer
      ) {
        // 初始化底图
        window.map = new Map({
          basemap: 'dark-gray-vector'
        })

        // 创建2维视图
        let view = new MapView({
          container: 'mapview',
          map: map,
          zoom: 11,
          center: [104.783916597735, 32.55699155692144] // 设置地图的初始化中心点坐标
        })

        let layer = new FeatureLayer({
          url: 'http://xxxxxxxxxxx/MapServer', // 这里替换成自己的图层
          spatialReference: view.spatialReference,
          outFields: ['*'],
          hasM: true,
          hasZ: true,
          popupTemplate: {
            title: '图层弹窗Title',
            content: function (feature) {
              console.log(feature)

              // 获取字段
              var attributes = feature.graphic.attributes
              let html = '<div class="popup-template-content">'
              for (const key in attributes) {
                // 排除不要的属性
                if (['FID', 'OID_'].includes(key)) {
                  continue
                }
                html += `<p class="field-row">
                  <span class="dt">${key}</span>
                  <span class="db">${attributes[key]}</span>
                </p>`
              }
              html += '</div>'

              return html
            }
          }
        })
        console.log(layer)

        map.add(layer)
      })
    </script>
  </body>
</html>

对字段名和字段值进行转义就简单了,但是文章标题有限,为了方便查找我后续就再水一篇, 嘿嘿!!!

相关推荐
沉默-_-1 分钟前
接收请求:HttpServletRequest的几种用法
前端·servlet·firefox
历程里程碑1 分钟前
37 线程安全单例模式深度解析
java·服务器·开发语言·前端·javascript·c++·排序算法
一尾流莺2 分钟前
狼人杀娱乐版型介绍
前端
wuhen_n2 分钟前
v-once和v-memo完全指南:告别不必要的渲染,让应用飞起来
前端·javascript·vue.js
干前端8 分钟前
Vue3 组件库实战(六):从本地到 NPM,Vue 组件库工程化构建与打包全指南(上)
前端·vue.js·npm
fjhcom10 分钟前
PDF与图片互转WEB应用开发教程
前端·pdf·图片·web应用·streamlit
云原生指北11 分钟前
记忆不上云:mem9 + TiDB 打造 OpenClaw 私有记忆中枢
前端
IT_陈寒11 分钟前
Vite vs Webpack终极对决:5个关键指标告诉你谁更快?
前端·人工智能·后端
Moment13 分钟前
2026 年前端 Agent 框架选型:Mastra 与 LangChain 该怎么选
前端·后端·面试
喵叔哟14 分钟前
10. 【Blazor全栈开发实战指南】--JavaScript调用Blazor
开发语言·javascript·windows·udp