代码改变世界

利用Arcade表达式显示多行标签

2019-02-21 09:51  yangol  阅读(459)  评论(0编辑  收藏  举报

要素图层依然是全球气象站点分布数据,属性表如下:

展示效果如下,显示的四行数据分别是属性表中的WIND_NAME,TEMP,WIND(运算之后的),R_HUMIDITY

本次尝试一次性写全所有的信息:

1、定义涉及到的变量:

var minScale = 250000000;

var featureUrl = "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/weather_stations_010417/FeatureServer/0";

 2、直接进入地图展示环节:

"esri/WebMap","esri/views/MapView","esri/layers/FeatureLayer"

var view = new MapView({

  container:"viewDiv",

  map:new WebMap({

    portalItem:{id:"372b7caa8fe340b0a6300df93ef18a7e"},  

    layers:[new FeatureLayer({

      url:featureUrl,

      renderer:{

        type:"simple",

        symbol:{

          type:"simple-marker",

          color:[75,75,75,0.7],

          size:4,

          outline:{

            color:[0,0,0,0.7],

            width:0.1

          }

        }

      },

      labelingInfo:[{

        labelExpressionInfo:{

          expression:document.getElementById("label-expression").text;

        },

        labelPlacement:"center-right",

        minScale = minScale,

        symbol:{

          type:"text",

          font:{

            size:9,

            family:"Noto Sans"

          }

        },

        horizontalAlignment:"left",

        color:"#2b2b2b"

      }]

    })]

    }),

  center:[-117.842, 33.799],

  zoom:10

})

 <script type="text/plain" id="label-expression">

  var NAME = $feature.STATION_NAME;

  var TEMP = round($feature.TEMP)+'° F';

  var SPEED = $feature.WIND_SPEED;

  var DEG = $feature.WIND_DIRECT;

  var RH = $feature.R_HUMIDITY+'% RH';

  var WIND = when( SPEED == 0, null,
    (DEG < 22.5 && DEG >= 0) || DEG > 337.5, 'N',
    DEG >= 22.5 && DEG < 67.5, 'NE',
    DEG >= 67.5 && DEG < 112.5, 'E',
    DEG >= 112.5 && DEG < 157.5, 'SE',
    DEG >= 157.5 && DEG < 202.5, 'S',
    DEG >= 202.5 && DEG < 247.5, 'SW',
    DEG >= 247.5 && DEG < 292.5, 'W',
    DEG >= 292.5 && DEG < 337.5, 'NW', null)

  var label = [NAME,TEMP,WIND,RH]

  return Concatenate(labels,TextFormatting.NewLine)

</script>