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方法。但是,覆盖的可见性设置对先前添加的符号没有影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的电阻、电容的种类和应用场合?

电阻的 a.按阻值特性:固定电阻、可调电阻、特种电阻(敏感电阻),不能调节的,我们称之为固定电阻,而可以调节的,我们称之为可调电阻.常见的例如收音机音量调节的,主要应用于电压分配的,我们称之为电位器. b.按制造材料:碳膜电阻、金属膜电阻、线绕电阻,捷…

Go切片特点笔记

特点 1.只有append操作2.支持子切片3.内存共享问题 1.只有append操作 不支持随机增删 2.支持子切片 数组和切片都可以通过[start:end] 的形式 来获取子切片: 1.arr[start:end],获得[start,end)之间的元素。 2.arr[:end],获得[0,end)之间的元素。 3.arr[start:],获得[start,l…

二叉树叶节点个数,根节点个数,树的深度,查找数据为x的节点

文章目录 一、计算二叉树叶节点个数二、叶节点的个数 引言:补充树的概念 节点的度:一个节点含有的子树的个数称为节点的度 叶节点或终端节点:度为0的节点称为叶节点 节点的层次:从根开始为第一层,以此类推 树的度&…

Leetcode150二刷总结

滑动窗口(ok) 题号:3、209、76 定义好窗口的左边界left和右边界right一般是只需要遍历right,满足条件后调整left 链表 题号:206、92、146、25、21 反转链表主要是设置好pre(初始为null)和c…

【Godot 4.2】Tree控件与TreeItem完全解析

概述 本篇是控件完全解析系列之一,主要总结一下Tree控件与TreeItem的使用。 Tree控件是一个非常强大的控件,尤其是在编写一些相关的程序或编辑器插件时,非常适合展示树形组织的节点型数据。 本篇将从简单的添加根节点,根节点子…

uniapp和vue项目配置多语言,实现前端切换语言

在uniapp中配置多语言功能,实现前端切换语言,可以按照以下步骤进行: 1. 创建语言包 首先,创建一个名为 lang 的目录,并在该目录下为每种支持的语言创建对应的JSON或JS文件。例如: lang/en.js&#xff08…

Threejs之场景标注标签信息CSS2DRenderer

参考资料 CSS2DRenderer(HTML标签)…单击按钮关闭HTML标签 知识点 注:基于Three.jsv0.155.0 CSS2DRenderer(HTML标签) HTML标签遮挡Canvas画布事件Canvas尺寸变化(HTML标签)标签位置不同设置方式标签位置(标注工厂设备)标签指示线或箭头指向标注点鼠标选中模型…

Microsoft PyRIT能自动化完成AI红队的任务

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

两数相加的问题

题目是:给两个非空的链表,表示两个非负整数。它们每位数都是按照逆序的方式存储,并且每一个节点只能存储一位数字。现在两个数相加,并且以相同的形式返回一个表示和的链表。 首先回顾一下,什么是链表?链表…

《异常检测——从经典算法到深度学习》26 Time-LLM:基于大语言模型的时间序列预测

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

使用递归方法和类数组两种方法计算斐波那契数列

菲波纳契数列又称"菲波纳契神奇数列",是由13世纪的意大利数学家菲波纳契提出的,当时是和兔子的繁殖问题有关的,它是一个很重要的数学模型。这个问题是:有小兔一对,若第二个月它们成年,第三个月生下小兔一对&…

3333666777

☞ 通用计算机启动过程 1️⃣一个基础固件:BIOS 一个基础固件:BIOS→基本IO系统,它提供以下功能: 上电后自检功能 Power-On Self-Test,即POST:上电后,识别硬件配置并对其进行自检&#xff0c…

阿里云仓库

仓库服务 (aliyun.com) maven中央仓库: Central Repository: (maven.org)

Windows10 安装Neo4j流程

1、下载并安装ava运行环境 官网链接(需要注册Oracle账号):https://www.oracle.com/java/technologies/downloads/ 根据自己Neo4j版本确认需要的JDK版本 百度网盘链接: 链接:链接:https://pan.baidu.com/s/…

静态网页和动态网页的异同

静态网页和动态网页是两种不同类型的网页。它们之间的主要异同点如下: 1. 静态网页: - 静态网页是指在服务器上预先准备好的网页,内容固定不变。 - 静态网页通常由HTML、CSS和JavaScript等静态文件组成。 - 用户访问静态网页时&#xff0c…

Sodinokibi勒索病毒最新变种,解密工具更新到2.0版本

Sodinokibi勒索病毒 Sodinokibi勒索病毒又称REvil,自从2019年6月1日,GandCrab勒索病毒运营团伙宣布停止运营之后,Sodinokibi勒索病毒马上接管了GandCrab的大部分传播渠道,同时它也被称为是GandCrab勒索病毒的“接班人”&#xff…

VMware 虚拟机安装windows 10操作系统

先提前准备好镜像文件 1.创建新的虚拟机 2.选择自定义,然后下一步 v Windows 建议选择2G以上,下一步 选择网络地址转换(NAT),下一步 这里可按自己的需求来分区,也可以安装好后再分区 选择立即重启&#xff…

【剑指offer】C++ 翻转字符串里面的单词

目录 题目: 思路: 代码出现 结果 题目: 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符…

L1-032 Left-pad(PTA)

文章目录 L1-032 Left-pad题目描述代码 L1-032 Left-pad 题目描述 根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个…