ArcGIS Runtime For Android开发之符号化和图层渲染

2024-02-29 05:52

本文主要是介绍ArcGIS Runtime For Android开发之符号化和图层渲染,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、用Symbol对要素进行符号化

首先我们看一下Symbol 接口关系:

1、SimpleFillSymbol

他是用来进行简单的Graphic面要素填充符号化的,它可以设置要素的填充颜色,边线颜色、线宽,其用法如下:

Polygon polygon=new  Polygon();
polygon.startPath(new Point(102.733,25.05));
polygon.lineTo(new Point(102.736,25.00));
polygon.lineTo(new Point(102.736,25.03));
SimpleFillSymbol symbol=new SimpleFillSymbol(Color.Red);
symbol.setAlpha(50);//设置半透明
Graphic graphic=new Graphic(polygon,symbol);
graphicsLayer.add(graphic);

当然,你可以通过使用SimpleLineSymbol来设置面要素的边线风格。


2、SimpleLineSymbol

SimpleLineSymbol被用来进行线要素的简单符号化。其用法和SimpleFillSymbol相似:

Polyline pl=new  Polyline ();
pl.startPath(new Point(102.733,25.05));
pl.lineTo(new Point(102.736,25.00)); 
SimpleLineSymbol linesymbol=new SimpleLineSymbol(Color.Red,25, SimpleLineSymbol.SOLID);//设置线型,宽度和颜色
symbol.setAlpha(50);//设置半透明
Graphic graphic=new Graphic(pl,linesymbol);
graphicsLayer.add(graphic);

3、SimpleMarkSymbol

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

Point point = new Point();//创建点对象 
Point.setX(102.733);//设置x坐标 
Point.setY(25.05);//设置y坐标 
//设置点样式的颜色,大小和点类型 
SimpleMarkerSymbol sms = new SimpleMarkerSymbol(Color.RED,20,STYLE.CIRCLE) ;//这里有选项可以选择,比如“X”,方块点以及“+”
Graphic graphic = new Graphic(point,sms); 
graphicsLayer.addGraphic(graphic); 

4、PictureMarkSymbol

同样用来渲染点要素的Graphic,它通过使用URL或 Drawable 等方式来设置图片符号,它可以设置偏移和旋转角度,其用法如下:

PictureMarkerSymbol pic = new PictureMarkerSymbol(getResources().getDrawable(R.drawable.icon)); 
Point pt = new Point(102.733,25.05);//创建一个点对象 
Graphic g = new Graphic(pt,pic);//设置样式graphicsLayer.addGraphic(g);添加到图层中 

5、TextSymbol

TextSymbol 用于在地图上显示文本标记,针对点状要素的 Graphic ,可以设置文字的大小、颜色、内容和排列方式。标绘的文字排列方式有两种:横向排列和纵向排列,默认横向居中显示。用法如下:

Point point = new Point();//创建点对象 
point .setX(102.733);//设置x坐标 
point .setY(25.05);//设置y坐标 
//设置点样式的颜色,大小和文本内容 
TextSymbol ts = new TextSymbol (12,”点样式”,Color.RED); 
//如果显示的是中文,这里需要设置标记的字体
ts.setFontFamily("DroidSansFallback.ttf");
Graphic g= new Graphic(point,ts); 
graphicsLayer.addGraphic(g);

二、用Render类对图层渲染

           Render类来进行符号化渲染。Renderer 是一个接口类型,该接口主要用于 Graphic 对象的样式渲染,它目前有四个实现类,关系图如下所示: 


 

1、SimpleRenderer

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

SimpleRenderer renderer = new SimpleRenderer(new  SimpleMarkerSymbol(Color.RED,20,STYLE.CIRCLE)); 
graphicsLayer.setRenderer(renderer);//为图层设置渲染

2、ClassBreaksRenderer

        使用 ClassBreaksRenderer 可以将 GraphicsLayer 图层中的某一类型的 Graphic 对象进行分段渲染,用法如下:

ClassBreaksRenderer renderer = new ClassBreaksRenderer();  renderer.setMinValue(0.0);//设置最小值  renderer.setField("POP07_SQMI");//渲染依附的字段  ClassBreak cb1 = new ClassBreak();//定义第一段渲染范围和样式  cb1.setClassMaxValue(25);  cb1.setSymbol(new SimpleFillSymbol(Color.argb(128, 56, 168, 0)));  cb1.setLabel("First class");  ClassBreak cb2 = new ClassBreak();//定义第二段渲染范围和样式  cb2.setClassMaxValue(75);  cb2.setSymbol(new SimpleFillSymbol(Color.argb(128, 139, 209, 0)));  cb2.setLabel("Second class");  ClassBreak cb3 = new ClassBreak();//定义第三段渲染范围和样式  cb5.setClassMaxValue(Double.MAX_VALUE);  cb5.setSymbol(new SimpleFillSymbol(Color.argb(128, 255, 0, 0)));  renderer.addClassBreak(cb1);  renderer.addClassBreak(cb2);   renderer.addClassBreak(cb3);   graphicsLayer.setRenderer(renderer);

        设置他的步骤:只需简单几步:
        1) 创建 ClassBreaksRenderer 对象
        2) 设置渲染的字段和最小值
        3) 创建多个分段渲染对象(ClassBreak),设置最大值和样式
        4) 将分段渲染对象添加到 ClassBreaksRenderer 对象中
        5) 为图层设置 Renderer 对象

3、UniqueValueRenderer

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

UniqueValueRenderer uvr = new UniqueValueRenderer(); 
uvr.setField("TYPE"); 
UniqueValue uv1 = new UniqueValue(); 
uv1.setValue(new String[]{"Residential"}); 
uv1. setSymbol(new SimpleFillSymbol(Color.argb(128, 255, 100, 0))); UniqueValue uv2 = new UniqueValue(); 
uv2.setValue(new String[]{"Industrial"}); 
uv2. setSymbol(new SimpleFillSymbol(Color.argb(128, 255, 200, 0))); UniqueValue uv3 = new UniqueValue(); 
uv3.setValue(new String[]{"Commercial"}); 
uv3. setSymbol(new SimpleFillSymbol(Color.argb(128, 255, 150, 0))); uvr.addUniqueValue(uv1); 
uvr.addUniqueValue(uv2); 
uvr.addUniqueValue(uv3);
graphicsLayer.setRenderer(uvr);//为图层设置渲染

4、DictionaryRenderer

        这是一个由字典定义的渲染器。它公开了控制符号内文本项目可见性的方法。可见性可以通过存储在MessageProcessor的资源束中的消息类型文件来设置。消息类型文件中定义的可见性可以被DictionaryRenderer中公开的setter方法。但是,覆盖的可见性设置对先前添加的符号没有影响。

这篇关于ArcGIS Runtime For Android开发之符号化和图层渲染的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757771

相关文章

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(