ArcGIS for Android 10.2.9(5):GraphicsLayer移除Graphic,GraphicsLayer常用API-程序员宅基地

技术标签: GraphicsLayer  graphic.getUid();总是返回-1  GraphicsLayer移除Graphic  ArcGIS for Android10.2.9  android for arcgis  

**API提供三个移除Graphic的方法:
1.public void removeAll ()删除所有Graphic。
2.public void removeGraphic (int id)使用唯一ID删除Graphic。
3.public void removeGraphics (int [] ids)使用唯一ID数组删除Graphic。**

如果想移除指定Graphic,就必须获取Graphic的id,但是 graphic.getUid()获取的值总是返回-1,所以就不能实现移除指定Graphic

解决办法:

1.为每个Graphic设置属性:

  Map<String, Object> attr = new HashMap<>();
  attr.put("name", name);
  Graphic graphic = new Graphic(mGeometry, fillSymbol, attr);

2.使用GraphicsLayer类的getGraphicIDs()方法获取所有的 uid,然后再根据这个 uid获取对应的Graphic,最后遍历判断这个Graphic是否是你想要的。

/**
     * 获取 Graphic的uid
     *
     * @param name
     * @return
     */
    private int getUid(String name) {
        int uid = -1;
        int[] graphicIDs = mGraphicsLayer.getGraphicIDs();
        if (graphicIDs != null && graphicIDs.length > 0) {
            for (int graphicID : graphicIDs) {
                Graphic graphic = mGraphicsLayer.getGraphic(graphicID);
                if (graphic == null) {
                    uid = -1;
                    //根据name判断是否是你需要的graphic
                } else if (graphic.getAttributes().get("name").equals(name)) {
                    uid = graphicID;
                }
            }
        }
        return uid;
    }

3.最后就可以移除Graphic:

 int uid = getUid(id);
 if (uid != -1) {
  //根据id移除Graphic
  mGraphicsLayer.removeGraphic(uid);
 }

也可以用下面方法来隐藏和显示Grapjic:

public void setGraphicVisible (int uid,boolean visible):使用唯一的ID设置图形的可见性。
public void setRenderer (Renderer renderer):设置GraphicsLayer的渲染器。

  //高亮显示
  Graphic graphic = new Graphic(geometry, symbol, attributes);
  SimpleRenderer sr = new SimpleRenderer(new SimpleFillSymbol(Color.RED));
  mGraphicsLayer.setRenderer(sr);
  mGraphicsLayer.addGraphic(graphic);
public int addGraphic (Graphic graphic):将图形添加到GraphicsLayer中。
如果添加成功,则表示添加的图形的唯一ID。-1,如果添加失败。

public int [] addGraphics (Graphic [] graphics)
添加一个Graphic数组。

public void bringToFront (int id)
将图形放在前面。

public Graphic getGraphic (int uid)
使用唯一的ID来返回图形实例。

public int [] getGraphicIDs ()
检索表示此图层中所有图形的唯一ID数组。

public int getNumberOfGraphics ()
返回图形的数量。

public void updateGraphic (int id,Map <String,Object> attributes)
使用属性映射更新由id指定的图形的属性。

public void updateGraphic (int id,Symbol symbol)
用符号更新由id指定的图形的符号属性。

public void updateGraphic (int id,Graphic graphic)
使用另一个图形实例的属性更新由id指定的图形。其图形顺序也更新。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36699930/article/details/80002318

智能推荐

DICOMRT-DiBugs:dicomParser解析无头DICOM与cornerstone显示RGB-DICOM错误_dicom_parser-程序员宅基地

文章浏览阅读2.8k次。背景介绍cornerstone几乎是所有做B/S架构必要的学习框架,之前博文刚介绍过,cornerstone本身并不解析DICOM数据,而是依赖于dicomParser.js这个前端库。dicomParser库对DICOM格式的兼容性,目前是远远落后于dcmtk、dcm4che、fo-dicom这类后端库的,其本身并不是因为前/后端语言的差异,更多的是因为之前的解析都是放在后端,所以对前端库的维护和更新比较匮乏。DICOMer星球,每日更新知识点,欢迎加入,一起交流学习!此博文是DiBugs(即DI_dicom_parser

基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件QtScrcpy_基于qt ffmpeg开发跨平台安卓实时投屏软件-程序员宅基地

文章浏览阅读10w+次,点赞103次,收藏297次。基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件课程介绍课程地址:https://edu.csdn.net/course/detail/10750本课程是一个音视频相关的Qt项目的实战教程,涉及Qt开发实际项目的完整流程。基于qt ffmpeg opengl实现了安卓手机实时投屏到电脑端,电脑端键鼠控制安卓手机的功能。可以自定义按键映射从而实现键鼠玩吃鸡手游的效果。基于Qt的跨..._基于qt ffmpeg开发跨平台安卓实时投屏软件

从世界最大的博客网站的基于xml的网站架构看它的缺点-程序员宅基地

文章浏览阅读1.8k次。在不短的时间里,我一直以为blogspot.com是一个不成熟的站点,以至于用户写完文章是无法看到的,直到我知道这是世界上最大的最早地也是最成功的博客站点,同时也是google的唯一战略联盟伙伴时,才意识到这是不可能的:一定是让中国网安给封闭了。中国网安乐于封闭海外媒体站点,特别是海外有中文信息提供的媒体站点,动机是可以理解的,只要各位想想《包身工》中的一段话:“只要不接触到外面的新鲜空气,发霉的

储能行业 | 储能EMS | 一次侧与二次侧 | 削峰填谷 | 防逆流 | 需量控制 | AC-DC | DC-DC | A网与B网 | 并网点 | DI与DO | 计划曲线 | 峰谷套利_最大需量控制-程序员宅基地

文章浏览阅读1k次,点赞8次,收藏20次。储能EMS(Energy Management System)是指储能系统的管理系统,用于监控、控制和优化储能设备的运行。储能EMS通过实时监测和分析电网和储能设备的状态,以及预测和优化能源需求和供应,实现对储能系统的智能化管理。能量管理:监测和管理储能设备的充放电过程,确保能量的高效利用。功率平衡:根据电网负荷需求和储能设备的状态,调整储能系统的输出功率,实现电网负荷平衡。频率调节:根据电网频率变化,调整储能系统的输出功率,维持电网频率稳定。_最大需量控制

记一次自定义拦截器失效的问题排查_自定义拦截器里打断点进不去-程序员宅基地

文章浏览阅读170次。记一次自定义拦截器失效的问题排查_自定义拦截器里打断点进不去

分享98个Html企业模板,总有一款适合您-程序员宅基地

文章浏览阅读526次,点赞18次,收藏9次。学习知识费力气,收集整理更不易。知识付费甚欢喜,为咱码农谋福利。分享98个Html企业模板,总有一款适合您。创意工厂设计工作室网页模板。绿色3D设计工作室网页模板。咖啡色经典家具公司网页模板。室内视觉设计工作室网页模板。安全无线通信设备网页模板。婚庆策划企业动态网页模板。电子科技研究公司网页模板。法律咨询服务公司网页模板。思维导向商务公司网页模板。国际银行金融信息网页模板。蓝色语音通信公司网页模板。房产代理销售查询网页模板。移动手机软件公司网页模板。魔幻瞬间流行婚纱网页模板。一生最爱珠宝首饰网页模板。

随便推点

PHP数组函数 array_reverse (反转数组)-程序员宅基地

文章浏览阅读4.1k次。在PHP中,数组函数 array_reverse() 用来反转数组的元素。函数语法:array_reverse(array$array[,bool$preserve_keys=FALSE]):array函数参数说明:参数 描述 array 必需。规定数组。 preserve_keys 可选。规定是否保留原始数组的键名。 如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。 ..._array_reverse

【转】Ubuntu 16.04 Nvidia驱动安装(run方式)_ubuntu下载nvidia驱动后怎么运行下载的.run文件-程序员宅基地

文章浏览阅读756次。转自:Ubuntu 16.04 Nvidia驱动安装(run方式)_lihe的博客-程序员宅基地1.下载驱动程序Nvidia驱动下载https://www.geforce.cn/drivers/beta-legacyhttp://www.nvidia.cn/Download/index.aspx根据显卡选择适用的驱动版本,下载完之后是一个名称为 NVIDIA-Linux-x86_64-xxx.xx.run 的文件(我的显卡为GTX1060,NVIDIA-Linux-x86_64-418.56_ubuntu下载nvidia驱动后怎么运行下载的.run文件

【Android】Android Framework系列---输入法服务_android 输入法-程序员宅基地

文章浏览阅读712次。车载项目需要定制输入法,也有一些POC演示的项目使用原生比如LatinIME(源码路径为/packages/inputmethods/LatinIME),关于输入法可能会遇到以下一些问题输入法进程启动崩溃输入法画面被其他应用遮挡输入法输入内容显示到错误的编辑框内多屏情况下输入法显示异常输入法未弹出或输入法未隐藏定制多屏多客户端输入法上面举了一些常见例子,实际开发过程中也会有定制输入法服务这类需求。_android 输入法

C语言之坑二--定义不定长数组_c语言定义一个不定长数组-程序员宅基地

文章浏览阅读4.9k次。#include #include void arr(int size){if(size>0){ int a[size]; a[0]=99;} printf("%d\n",a[0]);}int main(){ arr(2);return 0; }定义变量不能再if结构里。否则程序运行行,不会给数组分配空间,而且编译时候也没有错误提示。_c语言定义一个不定长数组

Hadoop 环境配置文件hadoop-env.sh 详解_hadoop-env.sh文件-程序员宅基地

文章浏览阅读2.6w次。有时间稍微看了一下JAVA虚拟机的相关知识,稍微整理了一下生产环境中的hadoop-env配置。不怎么专业,将就看一下吧。以后有时间再把JAVA虚拟机的知识整理一下。环境参数参数设置参数说明备注HADOOP_OPTS-Djava.net.preferIPv4Stack=true优先使用IPV4,禁用IPV6 HADOOP_NAMENODE_OPTSXms140G初始堆内存大小 Xmx140G最大..._hadoop-env.sh文件

linux图形界面登陆失败_/usr/bin/x: symbol lookup error: /usr/lib64/xorg/m-程序员宅基地

文章浏览阅读5.1k次,点赞2次,收藏2次。着力于修改linux的hosts进行翻墙,莫名原因导致图形界面登陆失败。_/usr/bin/x: symbol lookup error: /usr/lib64/xorg/modules/drivers/modesetting