欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用Arcade表达式添加标签

程序员文章站 2022-07-05 15:59:57
Arcade表达式是轻量级的脚本语言,我们可以通过全局变量$feature获取要素属性。比如说,要为城市添加标签,利用CITY_NAME列,我们可以编写语句:$feature.CITY_NAME。Arcade语句可以利用表达式来执行数学运算,逻辑运算。 首先来看下,这次需要展现的要素图层是: 我们用 ......

arcade表达式是轻量级的脚本语言,我们可以通过全局变量$feature获取要素属性。比如说,要为城市添加标签,利用city_name列,我们可以编写语句:$feature.city_name。arcade语句可以利用表达式来执行数学运算,逻辑运算。

首先来看下,这次需要展现的要素图层是:

用Arcade表达式添加标签

我们用到的属性表的两列信息:风向和风速

用Arcade表达式添加标签

 最终展示效果是:

用Arcade表达式添加标签

包含两个部分:用不同的样式展示要素点,添加标记。

1、创建地图底图并且显示:

"esri/map","esri/views/sceneview"

var map = new map({

  basemap:"topo"

});

var view = new sceneview({

  map:map,

  container:"viewdiv",

  camera:{  //在三维图层中需要设置视角

    position:{

      x:-10930027,

      y:5458284,

      z:126663,

      spatialreference:{wkid:102100}

    },

    heading:63,

    tilt:63

  },

  constraints:{  //constraints要和camera一起设置

    altitude:{min:100000}

  }

});

2、获取要素图层,并且显示

"esri/layers/featurelayer"

var layer = new featurelayer({

  url:"https://services.arcgis.com/v6zhfr6zdgnzuvg0/arcgis/rest/services/weather_stations_010417/featureserver/0",

  elevationinfo:{  //标记贴在地上显示

    mode:"relative-to-ground",

    offset:1000

  },

  renderer:{

    type:"simple",

    symbol:{

      type:"point-3d",

      symbollayers:[{  //用于3d显示的设置

        type:"object",

        material:{color:"red"},  //标记的颜色

        resource:{primitive:"tetrahedron"},  //标记的样式

        width:10000,

        depth:20000,

        height:1000

      }]

    }

  },

  visualvariables:[{

    type:"rotation",

    valueexpression:"$feature.wind_direct-180",

    axis:"heading"

  }],

  opacity:1,

  labelinginfo:[ ]

});

map.add(layer);

3、添加标签

var windarcade = document.getelementbyid("wind-direction").text;

var windclasses = [{min:0,max:67.5,color:"#4c82c4"},{min:...}];

var labelclass = windclasses.map(function(windclass){

  return {

    symbol:{

      type:"label-3d",

      symbollayers:[{  //3d显示效果

        type:"text",

        material:{color:"white"},

        halo:{color:windclass.color,size:1},

        size:12

      }]

    },

    labelplacement:"above-center",

    labelexpressioninfo:{

      expression:windarcade

    }

  }

})

 

<script type="text/plain" id="wind-direction">
      var deg = $feature.wind_direct;
      var speed = $feature.wind_speed;
      var dir = when( speed == 0, "",
        (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", "" );
      return speed + " mph " + dir;
</script>