当前位置: 首页 > article >正文

arcgis for js实现popupTemplate弹窗field名称和值转义

效果和说明

上两篇实现了popupTemplate弹窗展示所有field字段

这里主要另起一篇对field值或者名进行转义

原效果, 要素中的属性值是数值代码
在这里插入图片描述

现效果

在这里插入图片描述

代码

<!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] // 设置地图的初始化中心点坐标
        })

        // 字段值转义字典
        const valueMap = {
          林班: {
            1: '测试1',
            2: '测试2'
          },
          小班: {
            100: '一般用材林',
            101: '速生丰产用材林'
          },
          细班: {
            1: '测试细班1',
            2: '测试细班2'
          }
        }

        let layer = new FeatureLayer({
          url: 'http://xxxxxxxxxxxxxxxxxxxxxxxxx/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
                }
                // 对字段值进行转义
                let value = attributes[key]
                if (valueMapXB[key]) {
                  value = valueMap[key]?.[value] ?? '-'
                }
                // html += `<p class="field-row">
                //   <span class="dt">${key}</span>
                //   <span class="db">${attributes[key]}</span>
                // </p>`
                html += `<p class="field-row">
                  <span class="dt">${key}</span>
                  <span class="db">${value}</span>
                </p>`
              }
              html += '</div>'

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

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


http://www.kler.cn/a/390946.html

相关文章:

  • 【MySQL 保姆级教学】事务的自动提交和手动提交(重点)--上(13)
  • 【开源免费】基于SpringBoot+Vue.JS宠物咖啡馆平台(JAVA毕业设计)
  • uniapp的基本使用(easycom规范和条件编译)和uview组件的安装和使用
  • 天地图入门|标注|移动飞行|缩放,商用地图替换
  • 自动化新时代:机器取代工作,我们该如何重塑自我?
  • 企业级工位管理:Spring Boot解决方案
  • 自媒体素材10个4K分辨率Premiere胶片漏光划痕特效视频转场过渡模板
  • 【Python3】【力扣题】414. 第三大的数
  • 代码随想录算法训练营第二十天|39. 组合总和、40.组合总和II、131.分割回文串
  • [MySQL]隐式类型转换
  • 为何数据库推荐将IPv4地址存储为32位整数而非字符串?
  • Spring学习笔记(四)
  • Java基于SpringBoot+Vue框架的宠物寄养系统(V2.0),附源码,文档
  • 微软的新模拟器将为 Windows on Arm 带来更多游戏
  • android dvr黑屏
  • Python从0到100(七十一):Python OpenCV-OpenCV进行红绿灯识别
  • 什么是结构体?什么是联合体?结构体和联合体有什么区别?能否在声明过程当中缺省名字?结构体可以包含函数吗?在 C 和 C++ 中有何不同?
  • 【板栗糖GIS】——如果安装的vscode版本落后了,如何无障碍更新
  • day57 图论章节刷题Part08(拓扑排序、dijkstra(朴素版))
  • C 语言标准库 - <errno.h>