Arcgis Online

人走茶凉 提交于 2020-08-07 07:29:10

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: `https://services7.arcgis.com/dcDCOweCSxARDCGR/arcgis/rest/services/qhq/FeatureServer/3`,
    renderer: ysLineRenderer, 
    title: "雨水管道"
});

案例展示结果如下:
渲染后
可以看出linelayer1这个线的要素图层已经被渲染成使用绿色1px的实线了。

本篇内容深度较浅,主要是简单介绍一下Renderer对象以及Symbol对象的用法以及范围,希望更加深入使用的同学可以去Arcgis for Javascript API的官方文档查看更多案例。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!