ArcGIS Runtime for Android开发教程V2.0(7)基础篇---空间要素可视化2

原址:http://blog.csdn.net/ArcGIS_Mobile/article/details/8199822


 符号渲染

1.1 Symbol

Symbol主要是对Graphic对象进行符合样式设置的接口,所有符合样式类都实现了Symbol接口,Symbol接口关系图如下:

 

1.2       PictureMarkerSymbol

        PictureMarkerSymbol是对于点或多点要素的Graphic对象进行样式设置的类,PictureMarkerSymbol主要通过图片的url或Drawable等方式来设置图片符合,对于PictureMarkerSymbol我们还可以设置符合图片的旋转角度和位置偏移,具体用法如下:

[java]  view plain copy
  1. //创建图片样式符合  
  2. PictureMarkerSymbol pic = new PictureMarkerSymbol(getResources().getDrawable(R.drawable.icon));  
  3. Point pt = new Point(113,32);//创建一个点对象  
  4. Graphic gp = new Graphic(pt,pic);设置符合样式  
  5. graphicsLayer.addGraphic(gp);添加到图层中  


 

1.3       SimpleFillSymbol

        SimpleFillSymbol是对于面状要素的Graphic对象进行样式设置的类,通过它我们设置面状要素的填充颜色和透明度,另外我们也可以为面状要素添加边界的样式设置,SimpleFillSymbol用法非常简单,如下:

[java]  view plain copy
  1. Polygon poly = new Polygon();//创建多边形对象  
  2. poly.startPath(new Point(0,0));//添加初始点  
  3. poly.lineto(new Point(10,0));  
  4. poly.lineto(new Point(10,10));  
  5. poly.lineto(new Point(0,0));//多边形是闭合的因此最后我们还要添加初始点的位置  
  6. SimpleFillSymbol sfs = new SimpleFillSymbol(Color.RED);//面样式对象  
  7. sfs.setAlpha(50);//设置透明度  
  8. Graphic gp = new Graphic(poly,sfs);  
  9. graphicsLayer.addGraphic(gp);添加到图层中  


 

1.4      SimpleLineSymbol

        SimpleLineSymbol是针对于线状要素的Graphic对象进行样式设置的类,通过它我们可以设置线状要素的样式,如我们可以设置线型、线颜色、线宽和线的透明度等,具体用法如下:

[java]  view plain copy
  1. Polyline poly = new Polyline ();//创建多边形对象  
  2. poly.startPath(new Point(0,0));//添加初始点  
  3. poly.lineto(new Point(10,0));  
  4. poly.lineto(new Point(10,10));  
  5. SimpleLineSymbol sls = new SimpleLineSymbol(Color.RED,25, SimpleLineSymbol.SOLID);//线样式对象  
  6. sfs.setAlpha(50);//设置透明度  
  7. Graphic gp = new Graphic(poly, sls);  
  8. graphicsLayer.addGraphic(gp);添加到图层中  


 

1.5        SimpleMarkerSymbol

        SimpleMarkerSymbol也是针对于点状要素的Graphic对象进行样式设置的类,前面已经介绍过一个相关的点状要素样式类PictureMarkerSymbol,SimpleMarkerSymbol与PictureMarkerSymbol类很相似,只不过一个渲染成矢量点,另一个通过图片来替换该点。使用SimpleMarkerSymbol我们可以设置点样式,如点的大小,点颜色和点的类型,用法如下:

[java]  view plain copy
  1. Point point = new Point();//创建点对象  
  2. Point.setX(114);//设置x坐标  
  3. Point.setY(32);//设置y坐标  
  4. //设置点样式的颜色,大小和点类型  
  5. SimpleMarkerSymbol sms = new SimpleMarkerSymbol(Color.RED,25,STYLE.CIRCLE)  
  6. Graphic gp = new Graphic(point,sms);  
  7. graphicsLayer.addGraphic(gp);//添加到图层中显示  


 

1.6      TextSymbol

        TextSymbol也是针对于点状要素的Graphic对象进行样式设置的类,它将点的位置替换成文字进行标绘显示,通过TextSymbol可以设置文字的大小、颜色、内容和排列方式。排列方式是只标绘的文字是以横向排列的还是纵向排列显示的,默认是横向剧中显示。用法如下:

[java]  view plain copy
  1. Point point = new Point();//创建点对象  
  2. Point.setX(114);//设置x坐标  
  3. Point.setY(32);//设置y坐标  
  4. //设置点样式的颜色,大小和文本内容  
  5. TextSymbol ts = new TextSymbol (12,”点样式”,Color.RED);  
  6. Graphic gp = new Graphic(point,ts);  
  7. graphicsLayer.addGraphic(gp);//添加到图层中显示  
1.7 Renderer

        Renderer是一个接口类型,该接口主要用于Graphic对象的样式渲染,它目前有四个实现类,在下面章节中将详细介绍这四个类的功能和用法,关系图如下所示:

        

 

 

1.8       SimpleRenderer

 

        SimpleRenderer是最简单的一个渲染类,通过这个渲染类我们可以把图层中某一类型的要素同时进行渲染,如我们想将图层中的所有点同时渲染成相同的样式,用法如下:

[java]  view plain copy
  1. SimpleRenderer renderer = new SimpleRenderer(new SimpleMarkerSymbol(Color.RED,25,STYLE.CIRCLE));  
  2. graphicsLayer.setRenderer(renderer);//为图层设置渲染  


 

1.9    ClassBreaksRenderer

         ClassBreaksRenderer是Renderer接口的实现类,使用ClassBreaksRenderer我们可以将GraphicsLayer图层中的某一类型的Graphic对象进行分段渲染,用法如下:

[java]  view plain copy
  1.                 ClassBreaksRenderer renderer = new ClassBreaksRenderer();  
  2. renderer.setMinValue(0.0);//设置最小值  
  3. renderer.setField("POP07_SQMI");//渲染依附的字段  
  4. ClassBreak cb1 = new ClassBreak();//定义第一段渲染范围和样式  
  5. cb1.setClassMaxValue(25);  
  6. cb1.setSymbol(new SimpleFillSymbol(Color.argb(128561680)));  
  7. cb1.setLabel("First class");  
  8.   
  9. ClassBreak cb2 = new ClassBreak();//定义第二段渲染范围和样式  
  10. cb2.setClassMaxValue(75);  
  11. cb2.setSymbol(new SimpleFillSymbol(Color.argb(1281392090)));  
  12. cb2.setLabel("Second class");  
  13.   
  14. ClassBreak cb3 = new ClassBreak();//定义第三段渲染范围和样式  
  15. cb5.setClassMaxValue(Double.MAX_VALUE);  
  16. cb5.setSymbol(new SimpleFillSymbol(Color.argb(12825500)));  
  17.   
  18. renderer.addClassBreak(cb1);  
  19. renderer.addClassBreak(cb2);  
  20. renderer.addClassBreak(cb3);  
  21.   
  22.                 graphicsLayer.setRenderer(renderer);//为图层设置渲染  

通过上面的代码我们可以发现分段渲染非常简单,只需以下几个步骤:

1)      创建ClassBreaksRenderer对象

2)      设置渲染的字段和最小值

3)      创建多个分段渲染对象(ClassBreak),设置最大值和样式

4)      将分段渲染对象添加到ClassBreaksRenderer对象中

5)      为图层设置Renderer对象

2.0    UniqueValueRenderer

 

        UniqueValueRenderer是唯一值渲染类,该渲染方式是对某一字段进行唯一值渲染,如我们有一层面状数据,其中一个字段是对该图层的数据分类,这时我们就可以对该分类字段进行唯一值渲染:类型为住宅楼的为黄色,工厂的为紫色,商业区的为红的等等,我们也可以对多个字段进行联合唯一值渲染,最多联合三个字段进行渲染,用法如下:

[java]  view plain copy
  1. UniqueValueRenderer uvr = new UniqueValueRenderer();  
  2. uvr.setField("TYPE");  
  3. UniqueValue uv1 = new UniqueValue();  
  4. uv.setValue(new String[]{"Residential"});  
  5. uv. setSymbol(new SimpleFillSymbol(Color.argb(1282551000)));  
  6.   
  7. UniqueValue uv2 = new UniqueValue();  
  8. uv.setValue(new String[]{"Industrial"});  
  9. uv. setSymbol(new SimpleFillSymbol(Color.argb(1282552000)));  
  10.   
  11. UniqueValue uv3 = new UniqueValue();  
  12. uv.setValue(new String[]{"Commercial"});  
  13. uv. setSymbol(new SimpleFillSymbol(Color.argb(1282551500)));  
  14.   
  15. uvr.addUniqueValue(uv1);  
  16. uvr.addUniqueValue(uv2);  
  17. uvr.addUniqueValue(uv3);  
  18. graphicsLayer.setRenderer(uvr);//为图层设置渲染  


 

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值