arcgis学习系列-4设置FeatureLayer的样式

概述

本文你将学习通过属性如何设置符号的颜色和样式。

如果想要提高样式和可视性,可以使用Renderer。首先,需要选择正确的渲染器,SimpleRenderer应用相同的图标到所有的图层,UniqueValueRenderer 对每一个不同的字符串属性值应用不同的图标符号,ClassBreaksRenderer 对一个范围内的值应用同一个图标符号。渲染器负责在图层绘制时为每一个图层应用恰当的图标。
可以设置标签在图层上展示文本属性

在本文中将使用不同的渲染器加强Trailheads的可视性。
效果

步骤

  1. 使用练习1创建的地图应用程序。

使用标签和小人图片增强样式

  1. 在require中添加FeatureLayer模块
    require([
      "esri/Map",
      "esri/views/MapView",
      //*** ADD ***//
      "esri/layers/FeatureLayer"
], function(Map, MapView, FeatureLayer) {}
  1. 在主函数的末尾,创建一个对象,用它表示一个simple渲染器,设置这个对象的symbol属性。
 var trailheadsRenderer = {
        "type": "simple",
        "symbol": {
          "type": "picture-marker",
          "url": "http://static.arcgis.com/images/Symbols/NPS/npsPictograph_0231b.png",
          "width": "18px",
          "height": "18px"
        }
      }
  1. 要创建展示小路名字的标签,可以定义一个对象保存标签的信息,定义使用symbol属性,设置字体颜色是白色,并且有2px的边框,位置是图层的上方居中。并且使用表达式来应用数据库中的字段(feature对象的属性)。
 var trailheadsLabels = {
        symbol: {
          type: "text",
          color: "#FFFFFF",
          haloColor: "#5E8D74",
          haloSize: "2px",
          font: {
            size: "12px",
            family: "noto-sans",
            style: "italic",
            weight: "normal"
          }
        },
        labelPlacement: "above-center",
        labelExpressionInfo: {
          expression: "$feature.TRL_NAME"
        }
      };
  1. 创建trailheads的一个Feature Layer层。
 var trailheads = new FeatureLayer({
        url:
          "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads/FeatureServer/0",
        renderer: trailheadsRenderer,
        labelingInfo: [trailheadsLabels]
      });

      map.add(trailheads);

由海拔决定小路的宽度(海拔越高路越宽)

若要想根据属性值给feature应用不同的图标,你需要使用VisualVariables.

  1. 在主函数底部定义一个SimpleRenderer对象,VisualVariables属性定义线的宽度随海拔增高而增大。
 var trailsRenderer = {
        type: "simple",
        symbol: {
          color: "#BA55D3",
          type: "simple-line",
          style: "solid"
        },
        visualVariables: [
          {
            type: "size", 
            field: "ELEV_GAIN", //依据的feature属性字段
            minDataValue: 0, //属性最小值
            maxDataValue: 2300,//属性最大值
            minSize: "3px", //图标宽度最小值
            maxSize: "7px" //图标宽度最大值
          }
        ]
      };
  1. 创建一个feature图层,设置opacity为0.7
  var trails = new FeatureLayer({
        url:
          "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trails/FeatureServer/0",
        renderer: trailsRenderer,
        opacity: .75
      });

      map.add(trails, 0);

加载一个feature图层,只显示自行车路线

在一个图层中如果你想设计并绘制一部分数据,你可以应用一个不同的符号,设置definitionExpression属性,然后把这个图层放到最顶层。
8. 在主函数中创建一个simple的渲染器。

   var bikeTrailsRenderer = {
        type: "simple",
        symbol: {
          type: "simple-line",
          style: "short-dot",
          color: "#FF91FF",
          width: "1px"
        }
      };
  1. 创建一个feature layer 图层,设置Url并查询条件。
  var bikeTrails = new FeatureLayer({
        url:
          "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trails/FeatureServer/0",
        renderer: bikeTrailsRenderer,
        definitionExpression: "USE_BIKE = 'YES'"
      });

      map.add(bikeTrails, 1);

公园区域使用不一样的颜色

  1. 在主函数中创建一个UniqueValueRenderer 对象,type属性是unique-value,field属性是feature数据集的TYPE字段,uniqueValueInfos 是一个数组,为每一种TYPE的值定义一个图标。在本例中我定义了一个函数,返回图标信息。
 function createFillSymbol(value, color) {
        return {
          "value": value,
          "symbol": {
            "color": color,
            "type": "simple-fill",
            "style": "solid",
            "outline": {
              "style": "none"
            }
          },
          "label": value
        };
      }

      var openSpacesRenderer = {
        type: "unique-value",
        field: "TYPE",
        uniqueValueInfos: [
          createFillSymbol("Natural Areas", "#9E559C"),
          createFillSymbol("Regional Open Space", "#A7C636"),
          createFillSymbol("Local Park", "#149ECE"),
          createFillSymbol("Regional Recreation Park", "#ED5151")
        ]
      };
  1. 创建一个feature图层,设置他的renderer属性
   var openspaces = new FeatureLayer({
        url:
          "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Parks_and_Open_Space/FeatureServer/0",
        renderer: openSpacesRenderer,
        opacity: 0.20
      });

      map.add(openspaces, 0);
版权声明:本文为naturessdfsafagf原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/naturessdfsafagf/article/details/102516680

智能推荐

ArcGIS API for JavaScript4.8 FeatureLayer编辑

简要说明 主要是在官方的demo上修改的 使用的是ArcGIS Server发布的FeatureService 主要是点要素的编辑,面线等其他要素的编辑方法类似,不同之处在于添加要素前绘制Graphic 代码如下: 界面大致效果   经过编辑前后,使用ArcMap打开发布的地图文档对比 说明,编辑FeatureLayer地图服务后,服务的数据源已经进行了改变,FeatureLayer的编...

QLabel样式的设置

字体样式 font-family 为设置字体类型,标准形式需要加双引号,不加也可能会生效,具体看系统是否支持,中英文都支持,但要保证字体编码支持,一般程序编码为"utf-8"时没问题。 font-size 为设置字体大小,单位一般使用 px 像素 font-style 为设置字体斜体样式,italic 为斜体, normal 为不斜体 font-w...

arcgis api 4.17 自定义 编辑 featurelayer 上的某个图斑 触发编辑图形事件 编辑更新之后并关闭

效果 因为用的是editor 的小部件 所以得用他的方法启动:如下 相关代码:这样就可以达到图一编辑中的效果 主要代码: 如何拿到编辑的图形:(找了很久才找到) 因为我把editor保存了,所以里面的viewModel.sketchViewModel内有updateGraphics 即更新(移动或其他操作)所对应的图斑。如下图: 需要注意的是: sketchTool.editor.startUpd...

Android 炫酷的横向和环形进度条的实例

一、概述 最近需要用进度条,秉着不重复造轮子的原则,上github上搜索了一番,看了几个觉得比较好看的ProgressBar,比如:daimajia的等。简单看了下代码,基本都是继承自View,彻彻底底的自定义了一个进度条。盯着那绚丽滚动条,忽然觉得,为什么要通过View去写一个滚动条,系统已经提供了ProgressBar以及属于它的特性,我们没必要重新去构建一个,但是系统的又比较丑,不同版本变现...

pcap包结构&SNI字段的解析

    pcap文件格式是常用的数据报存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包。     文件格式:     Pcap文件头(24字节)+数据包头(wireshark增加的)+数据包(网络中抓取的)+…… 1.pcap文件头结构 各字段说明: Magic:4B:0×...

猜你喜欢

MC9S12XEP100的IIC模块(IICV3)

最近在写DS3231时钟芯片的驱动,这个芯片使用IIC进行通讯,以前没有用过IIC模块,照着教材和示例程序写程序后发现各种问题。没办法,还是官方数据手册靠谱,遂把相应部分又翻译了一遍。果然发现示例程序纯粹就是个玩具,一点用都没有。。。 第15章 集成电路总线(IICV3) 译者注:译者博客(http://blog.csdn.net/lin_strong),转载请保留这条。此为 MC9S12XEP1...

Eureka服务注册与发现

文章目录 二、SpringCLoud中遇到的技术 (一)、Eureka 1、功能: 2、什么是服务治理. 3、什么是服务注册与发现 4、Eureka包含两个组件: Eureka Server和Eureka Client 5、单机Eureka构建步骤 5.1 建model:cloud-eureka-server7001 5.2 写pom 5.3 写yml 5.4 主启动类 5.5 测试 5.6 将消...

Hard Problem【HDU-3551】【一般图最大匹配 带花树】

题目链接   题意:有N个点,M条边,给出每个点的度限制,问能不能用M条边中的几条达成这个目的?   很明显的就是一个建图的问题,很明显的,少于等于度为1的,是可以直接连的,不用限制增广,而大于度为1的,需要限制增广,就可以用这样的限流的方法:  ...

idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: null

idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: null 文章目录 idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: ...

015_swiftui_刘海屏适配

swiftUi创建的视图是默认在刘海屏幕的安全区域以内的。 之前我们设置图片也用到了这个个属性。 现在我们再来使用下吧 下面就是图片了。 ...