ArcGIS Runtime SDK for iOS开发地图图层-图形图层

注:本文翻译自:https://developers.arcgis.com/ios/objective-c/guide/creating-a-graphics-layer.htm

创建图形图层

图形图层可以使你在地图上动态的展示图形。图形图层可以用来存储用户绘制的多边形、线条,或者展示例如查询或是地理编码结果的属性信息。下图中,图形图层用于突出展示每平方里超过200人的人口密度状态:

当你想在地图中添加一个图形图层,可以利用AGSGraphicsLayer 类来创建图层。该类的实例包含了一系列图形和可选性的渲染器(AGSRender)。同时,也包含了添加、删除和重绘图形的方法。

符号定义了图形表面的非地理方面属性,主要包括图形的颜色、边框宽度、透明度等等。ArcGIS Runtime SDK for iOS中包含了许多符号类,每个类都可以使你以独特的方式指定符号。每个符号类型同时也是特定于某一类几何类型(点、线、面)。

渲染器定义了应用于图形的符号集。应用在每个图形的符号取决于图形的属性。渲染器指定了什么样的属性值对应哪一种符号。

添加图形图层

下面是添加图层的方法:

AGSGraphicsLayer* myGraphicsLayer = [AGSGraphicsLayer graphicsLayer];[self.mapview addMapLayer:myGraphicsLayer withName:@"Graphics Layer"]; 需要注意的是,在addMapLayer方法中你给图形图层赋予的名字在地图视图中必须是唯一的。

添加图形属性

图形是AGSGraphic类的一个实例,图形和几何体(geometry)相关联,几何体定义了在地图中图形的位置和形状。图形同时又跟符号相关联,符号定义了图形如何被展示。另外,图形图层可以跟渲染器相关联,渲染器定义了图层中的所有图形如何被展示。你还可以将一些属性跟图形相关联,这些属性是键-值对,它可以表征图形所代表的实体的信息。

在多数情况下,你在地图上所展示的图形将会被返回并作为执行任务的结果,例如请求地图服务、地理编码一个地址、或者是进行地理处理分析操作。在这些例子中,图形将包含了描述它们位置和形状的几何体。所以你要做的就是定义这些图形该如何被展示,是通过为每个图形赋一个符号?或是给图形图层赋一个渲染器。

下面的代码创建了一个图层,并给它赋予一个符号和几何体,并将它添加到已存在的图形图层中去:

//create a marker symbol to be used by our GraphicAGSSimpleMarkerSymbol *myMarkerSymbol =[AGSSimpleMarkerSymbol simpleMarkerSymbol];myMarkerSymbol.color = [UIColor blueColor];//Create an AGSPoint (which inherits from AGSGeometry) that//defines where the Graphic will be drawnAGSPoint* myMarkerPoint =[AGSPoint pointWithX:-93.2984y:44.9409spatialReference:self.mapView.spatialReference];//Create the Graphic, using the symbol and//geometry created earlierAGSGraphic* myGraphic =[AGSGraphic graphicWithGeometry:myMarkerPointsymbol:myMarkerSymbolattributes:nil];//Add the graphic to the Graphics layer[myGraphicsLayer addGraphic:myGraphic];

作为任务结果返回的图形是一个几何图形,但是没有符号,所以你在将在将这些图形添加到地图中去前,,需要给其赋予一个符号或是一个渲染器。代码如下:

//create a simple fill symbolAGSSimpleFillSymbol *fillSymbol =[AGSSimpleFillSymbol simpleFillSymbol];fillSymbol.color =[[UIColor purpleColor] colorWithAlphaComponent:0.25];fillSymbol.outline.color = [UIColor darkGrayColor];//featureSet.features is the result of a Query task.//It is an array of AGSGraphic objects containing//geometries, but not symbols.for (AGSGraphic *graphic in featureSet.features) {//set the graphics’s symbol to fillSymbolgraphic.symbol = fillSymbol;//add the graphic to the layer[myGraphicsLayer addGraphic:graphic];} 使用符号

常用的符号和其使用的几何体总结如下表:

SymbolGeometryDescriptionSymbol class

Simple MarkerPointSymbolizes points with simple shapesAGSSimplemarkerSymbol

Picture MarkerPointSymbolizes points with imagesAGSPictureMarkerSymbol

Simple LinePolylineSymbolizes lines with pre-defined stylesAGSSimpleLineSymbol

CompositePoint,Polyline,orPolygonSymbolizes geometry with an array of symbolsAGSCompositeSymbol

Simple FillPolygonFills Polygons with a variety of patternsAGSSimpleFillSymbol

TextPoint,Polyline,orPolygonDisplays text labels for geometriesAGSTextSymbol

所有的这些符号类都继承自AGSSymbol

下面的这些代码创建了AGSSimpleMarkerSymbol,其以蓝宝石的形式、三个像素宽的轮廓绘制。

//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,其以半透明的红色填充,红色的轮廓线进行绘制。//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; 使用渲染器谦受益,满招损。

ArcGIS Runtime SDK for iOS开发地图图层-图形图层

相关文章:

你感兴趣的文章:

标签云: