arcgis学习系列-4设置FeatureLayer的样式
概述
本文你将学习通过属性如何设置符号的颜色和样式。
如果想要提高样式和可视性,可以使用Renderer。首先,需要选择正确的渲染器,SimpleRenderer应用相同的图标到所有的图层,UniqueValueRenderer 对每一个不同的字符串属性值应用不同的图标符号,ClassBreaksRenderer 对一个范围内的值应用同一个图标符号。渲染器负责在图层绘制时为每一个图层应用恰当的图标。
可以设置标签在图层上展示文本属性
在本文中将使用不同的渲染器加强Trailheads的可视性。

步骤
- 使用练习1创建的地图应用程序。
使用标签和小人图片增强样式
- 在require中添加FeatureLayer模块
require([
"esri/Map",
"esri/views/MapView",
//*** ADD ***//
"esri/layers/FeatureLayer"
], function(Map, MapView, FeatureLayer) {}
- 在主函数的末尾,创建一个对象,用它表示一个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"
}
}
- 要创建展示小路名字的标签,可以定义一个对象保存标签的信息,定义使用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"
}
};
- 创建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.
- 在主函数底部定义一个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" //图标宽度最大值
}
]
};
- 创建一个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"
}
};
- 创建一个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);
公园区域使用不一样的颜色
- 在主函数中创建一个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")
]
};
- 创建一个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);
智能推荐
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: ...
