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

相关文章

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne