Arcgis Online - Renderer篇
1.Renderer
Renderer是一种地图要素渲染器,有多种类型的渲染器用于可视化数据,每种方法都有不同的用途,可以结合地理特征和统计信息来探索数据并展示成特殊的样式。
Renderer是所有渲染器的基类,它包含了要素图层所希望展示的绘图信息。
Renderer可以再以下图层中进行使用:
- FeatureLayer
- SceneLayer
- MapImageLayer
- CSVLayer
- StreamLayer
SimpleRenderer
本案例中使用的Render类型,SimpleRenderer使用一个Symbol对象在一个Layer层中渲染所有的要素。
SimpleRenderer可以在以下图层中使用:
- FeatureLayer
- SceneLayer
- MapImageLayer
- CSVLayer
- StreamLayer
SimpleRenderer中可以使用视觉变量(visualVariables),visualVariables是SimpleRenderer的一个属性,类型是一个visualVariable的数组,因此它可以包含多个不同的视觉变量。
visualVariable包含了 “color” 、 “size” 、 “opacity” 、“rotation” 四种类型,与variable对象的对应关系如下表:
类型 | 对象 | 对象说明 |
---|---|---|
color | ColorVariable | 颜色 |
size | SizeVisualVariable | 尺寸 |
opacity | OpacityVisualVariable | 透明度 |
rotation | RotationVisualVariable | 旋转 |
2.Symbol
Symbol是所有符号的基类。符号将点、线、面和网格的几何图形表示为View中的矢量图形。只能在GraphicsLayer或View.graphics中的单个图形上直接设置符号,或者是将其分配给一个Renderer,然后把Renderer作为FeatureLayer或是SceneLayer的渲染器。
选择不同的Symbol用于描述图层样式,取决于以下几个条件:
- 需要渲染的视图类型:MapView(2D)或是SceneView(3D)
- 要素的集合类型:Point、Polyline、Polygon、……
- 需要展示样式和内容
根据视图类型的不同,可以使用的Symbol也不同
视图类型 | 符号类型 |
---|---|
MapView(2D) | FillSymbol,LineSymbol,MarkerSymbol,TextSymbol |
SceneView(3D) | Symbol3D |
当使用的视图类型为MapView时,选择符号参照下表
几何类型 | 符号类型 |
---|---|
Point | SimpleMarkerSymbol,PictureMarkerSymbol,TextSymbol |
Polyline | SimpleLineSymbol,TextSymbol |
Polygon | SimpleFillSymbol, PictureFillSymbol, SimpleMarkerSymbol, TextSymbol |
当使用的视图类型为SceneView时,选择符号参照下表
几何类型 | 符号类型 |
---|---|
Point | PointSymbol3D, LabelSymbol3D |
Polyline | LineSymbol3D, LabelSymbol3D |
Polygon | PolygonSymbol3D, LabelSymbol3D |
Mesh | MeshSymbol3D, LabelSymbol3D |
详细内容建议参考官网文档
上述中虽然没有明确指出,但是3D SceneView 可以支持使用2D符号,而2D MapView 不支持3D符号,在使用3D SceneView时建议还是使用3D符号。
3.案例
当我没有使用Renderer渲染器,进行渲染图层时的样式如下:
然后设置样式,代码如下:
const ysLineRenderer = {
type: "simple",
symbol: {
type: "simple-line",
color: "green",
width: "1px",
style: "solid"
}
};
可以看出我创建了一个SimpleRenderer渲染器,并且使用了一个SimpleLineSymbol作为渲染的样式,渲染的样式应该是一条绿色的,像素为1px的实线。
然后将该渲染器给linelayer1进行渲染,需要给FeatureLayer的renderer属性进行赋值,代码如下:
var linelayer1 = new FeatureLayer({
url: `此处填写Service URL/对应图层的索引`,
renderer: ysLineRenderer,
title: "雨水管道"
});
案例展示结果如下:
可以看出linelayer1这个线的要素图层已经被渲染成使用绿色1px的实线了。
本篇内容深度较浅,主要是简单介绍一下Renderer对象以及Symbol对象的用法以及范围,希望更加深入使用的同学可以去Arcgis for Javascript API的官方文档查看更多案例。