为了账号安全,请及时绑定邮箱和手机立即绑定

将外部变量传递给弹出窗口中的字段:(arcgis-js-api)

将外部变量传递给弹出窗口中的字段:(arcgis-js-api)

德玛西亚99 2022-10-27 15:16:54
这是我的代码,我在其中通过一个休息调用在 arcgis-js-api (4.xx) 中设置和调用一个弹出窗口...问题我有一个外部变量我想在“放置”字段中填充这个外部变量不是来自同一个休息调用,我有这个值,不知道为什么它不会在现场接受它?var place = 'something cool x';........   var popuptemp = {          title: "Shake Intensity",          content: [{            type: "fields",            fieldInfos: [{                fieldName: "grid_value",                label: "Grid Value"              },              {                fieldName: "id",                label: "id"              },              {                fieldName: "place",                label: "place"              },              {                fieldName: "ObjectID",                label: "ObjectID"              },              {                fieldName: "url",                label: "Url"              }            ]          }]        }        fl = new FeatureLayer({          source: gras,          objectIdField: "ObjectID",          geometryType: "polygon",          fields: [{            name: "ObjectID",            alias: "ObjectID",            type: "oid"          }, {            name: "id",            alias: "id",            type: "string"          }, {            name: place <--------------------- tried just calling the var here with no avail, no errors, just nothing displays            alias: "place",            type: "string"          }, {            name: "url",            alias: "url",            type: "string"          }, {            name: "grid_value",            alias: "grid_value",            type: "double"          }],          renderer: renderer,          popupEnabled: true,          popupTemplate: popuptemp        });        map.add(fl);
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超6个赞

您将无法添加字段等外部数据。但是您可以使用函数来定义内容。看看我为你做的这个例子,其中有author全局价值。


<html>


<head>

  <meta charset="utf-8">

  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">

  <title>ArcGIS API for JavaScript Hello World App</title>

  <style>

    html,

    body,

    #viewDiv {

      padding: 0;

      margin: 0;

      height: 100%;

      width: 100%;

    }

    .disclaimer {

      font-size: 14px;

      font-style: italic;

      color: white;

      background-color: black;

    }

  </style>


  <link rel="stylesheet" href="https://js.arcgis.com/4.15/esri/css/main.css">

  <script src="https://js.arcgis.com/4.15/"></script>


  <script>

    require([

      'esri/Map',

      'esri/views/MapView',

      'esri/layers/FeatureLayer'

    ], function (Map, MapView, FeatureLayer) {


      let author = 'by @cabesuon';


      const map = new Map({

        basemap: 'streets-navigation-vector'

      });


      const view = new MapView({

        container: 'viewDiv',

        map: map,

        zoom: 12,

        center: {

          latitude: 32.7353,

          longitude: -117.1490

        }

      });


      function toGraphic(lon, lat, ObjectID, title, addrs, url) {

        return {

          geometry: {

            type: 'point',

            longitude: lon,

            latitude: lat

          },

          attributes: {

            ObjectID,

            title,

            addrs,

            url

          }

        }

      }

      

      const graphics = [

        toGraphic(

          -117.1560632,

          32.727482,

          1,

          'Automotive Museum',

          '2080 Pan American Plaza, San Diego, CA 92101, United States',

          'http://sdautomuseum.org/'

        ),

        toGraphic(

          -117.1763293,

          32.7136902,

          2,

          'USS Midway Museum',

          '910 N Harbor Dr, San Diego, CA 92101, United States',

          'http://www.midway.org/'

        ),

        toGraphic(

          -117.2284536,

          32.7641112,

          3,

          'SeaWorld',

          '500 Sea World Dr, San Diego, CA 92109, United States',

          'https://seaworld.com/san-diego'

        ),

        toGraphic(

          -117.1557741,

          32.7360032,

          4,

          'Zoo',

          '2920 Zoo Dr, San Diego, CA 92101, United States',

          'https://zoo.sandiegozoo.org/'

        )

      ];


      function popupContent (feature) {

        const div = document.createElement('div');

        div.innerHTML =

        `Address: ${feature.graphic.attributes.addrs}<br>` +

        `<a href='${feature.graphic.attributes.url}'>${feature.graphic.attributes.url}</a><br><br>` +

        `<span class="disclaimer">${author}</span>`;

        return div;

      }


      const layer = new FeatureLayer({

        source: graphics,

        fields: [

          {

            name: 'ObjectID',

            alias: 'ObjectID',

            type: 'oid'

          }, {

            name: 'title',

            alias: 'title',

            type: 'string'

          }, {

            name: 'addrs',

            alias: 'addrs',

            type: 'string'

          }, {

            name: 'url',

            alias: 'url',

            type: 'string'

          }

        ],

        objectIDField: ['ObjectID'],

        geometryType: 'point',

        renderer: {

          type: 'simple',

          symbol: {

            type: 'text',

            color: 'red',

            text: '\ue61d',

            font: {

              size: 30,

              family: 'CalciteWebCoreIcons'

            }

          }

        },

        popupTemplate: {

          title: '{title}',

          content: popupContent,

          outFields: ['*']

        }

      });

      

      map.add(layer);


    });

  </script>

</head>


<body>

  <div id="viewDiv"></div>

</body>


</html>


查看完整回答
反对 回复 2022-10-27
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号