ArcGIS Runtime SDK for iOS之符号和渲染

本篇文章翻译自与点击打开链接,有不妥之处还请大家多多指正!

符号定义了图形外观的非地理方面。它包括了图形的颜色、线宽、透明度等等。ArcGIS Runtime SDK for iOS包含了许多符号类,其中的每个类可以让你以独特的方式指定符号。每个符号的类型也是特定于一个几何类型(即点、线、面)。

渲染器定义了适用于图形层的符号集。应用于每个图层的符号取决于图形的属性。渲染器指定哪些属性值对应于哪个符号。

符号类型

可用的符号和所适用的几何符号总结在下表中:

符号几何形状描述符号类

简单标记点用简单形状符号化点AGSSimpleMarkerSymbol

图形标记点用图像来符号化点AGSPictureMakerSymbol

简单线线用预定义类型来符号化线AGSSimpleLineSymbol

组合点、线、面用一组符号来符号化几何图形AGSCompositeSymbol

简单填充面用一系列形式填充面AGSSimpleFillSymbol

文本点、线、面为几何形状展示文本AGSTextSymbol

上述所有提到的符合类都继承自AGSSymbol。

创建符号 在许多应用中,相同的符号将多次应用。例如,利用“寻找任务”可以允许用户搜索县。在这种情况下,每次任务被执行时,将相同的符号应用到任务的结果中是很有意义的。在这种情况下,你应该以实例变量/属性类的形式存储该对象的引用。 下面的代码创建了用AGSSimpleMakerSymbol绘制一个蓝色钻石,轮廓为白色,且有三个像素宽。

//Create the AGSSimpleMarker Symbol and set some propertiesAGSSimpleMarkerSymbol* myMarkerSymbol = [AGSSimpleMarkerSymbol simpleMarkerSymbol];myMarkerSymbol.color = [UIColor blueColor];myMarkerSymbol.style = AGSSimpleMarkerSymbolStyleDiamond;myMarkerSymbol.outline.color = [UIColor whiteColor];myMarkerSymbol.outline.width = 3;

下面的代码用半透明的红色填充和红色轮廓(两个像素宽)创建了AGSSimpleFillSymbol。一个简单填充符号的轮廓是AGSSimpleLineSymbol //Create the AGSSimpleFillSymbol and set it’s colorAGSSimpleFillSymbol* myFillSymbol = [AGSSimpleFillSymbol simpleFillSymbol];myFillSymbol.color = [UIColor colorWithRed:0.7 green:0.1 blue:0.1 alpha:0.5];//Create the AGSSimpleLineSymbol used for the outlineAGSSimpleLineSymbol* myOutlineSymbol = [AGSSimpleLineSymbol simpleLineSymbol];myOutlineSymbol.color = [UIColor redColor];myOutlineSymbol.width = 2;//set the outline property to myOutlineSymbolmyFillSymbol.outline = myOutlineSymbol;

现在符号已经被声明,你可以将它跟一个图形联系或在渲染器中使用。

渲染器

渲染器定义了一组符号集,将被用于图形层中的图形。你可以用渲染器以不同的颜色和尺寸,基于图形的属性值来符号化属性。要使用渲染,你可以创建它,定义符号,然后设置一个图形层的渲染特性。

myGraphicsLayer.renderer = myRenderer;

创建一个简单的渲染

一个简单的渲染器是指为每个图形使用相同的符号。所有你需要做的是用要求的符号创建渲染器,然后为图形层设置渲染特性。

AGSSimpleRenderer* mySimpleRenderer = [AGSSimpleRenderersimpleRendererWithSymbol:myMarkerSymbol];myGraphicsLayer.renderer = mySimpleRenderer; AGSSimpleRenderer的符号属性是只读的。用简单的渲染器使用一个符号,你必须用需要的符号创建渲染器。此外,符号类型必须于属性类型匹配(点要素和标记符号、线要素和线符号、面要素和填充符号)。

创建一个级别间隔渲染器

一个级别间隔渲染器是指基于一些数值属性的值来符号化每个图形。具有相似属性值的图形获得相同的符号。“间隔”定义了符号发生变化时的属性值。

符号和值之间的映射被定义在AGSClassBreak对象的数组里。AGSClassBreaksRenderer 用它的classBreaks属性存储这些映射以作为AGSClassBreak 对象。AGSClassBreak 对象包括用来绘制图形的的符号、最小值和最大值。任何大于或等于最小值,和小于最大值的值将会用类间断符号绘制。

下面的代码创建AGSClassBreaksRenderer并根据大小来符号化城市。总共有3个级别间隔:第一级别是从DBL_MIN到5000,第二基本是从5000到250,000,第三级别是从250,000到DBL_MAX。

//create the renderer with a default simple marker symbol //and an attribute field. AGSClassBreaksRenderer *cityRenderer = [[[AGSClassBreaksRenderer alloc] init] autorelease]; cityRenderer.field = @"POP1990"; cityRenderer.minValue = DBL_MIN;//create three AGSClassBreak objects, one each for //low, medium and high populations and the appropriate //symbol (for clarity, the symbol creation has been omitted) AGSClassBreak* lowClassBreak = [AGSClassBreak classBreakInfoWithLabel:@"Low" description:@"" maxValue:50000 symbol:lowMarkerSymbol];AGSClassBreak* mediumClassBreak =[AGSClassBreak classBreakInfoWithLabel:@"Medium" description:@"" maxValue:250000 symbol:mediumMarkerSymbol];AGSClassBreak* highClassBreak = [AGSClassBreak classBreakInfoWithLabel:@"High" description:@"" maxValue:DBL_MAX symbol:highMarkerSymbol];//add the AGSClassBreak objects to the renderer NSMutableArray* classBreaks = [NSMutableArray array];[classBreaks addObject:lowClassBreak]; [classBreaks addObject:mediumClassBreak];[classBreaks addObject:highClassBreak];cityRenderer.classBreaks = classBreaks;//add the renderer to the graphics layer citiesGraphicsLayer.renderer = cityRenderer; 创建唯一值渲染器

看着它洗涤一缕缕阳光,看着它映衬一片片星辉,

ArcGIS Runtime SDK for iOS之符号和渲染

相关文章:

你感兴趣的文章:

标签云: