来自:http://blog.csdn.net/arcgis_mobile/article/details/8084763

GISpace博客《ArcGIS for Android入门程序之DrawTool》http://blog.csdn.net/gispace/article/details/6723459 在ArcGIS Android SDK 0.9版本实现绘制各种几个图形。ArcGIS Android SDK目前版本为2.0,较之前版本变化较大,故将之前版本移植到2.0版本下。源代码下载地址http://download.csdn.net/detail/arcgis_mobile/4659389

该程序主要说明如何处理与MapView交互的各种事件,以订阅发布模式封装几何图形绘制工具类DrawTool,使用方法如下:

  1. <span style="font-family:Courier New;font-size:18px;">package cn.com.esrichina.drawtool;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.Menu;
  5. import android.view.MenuInflater;
  6. import android.view.MenuItem;
  7. import com.esri.android.map.GraphicsLayer;
  8. import com.esri.android.map.MapView;
  9. import com.esri.android.map.ags.ArcGISTiledMapServiceLayer;
  10. public class DrawToolActivity extends Activity implements DrawEventListener {
  11. private MapView mapView;
  12. private GraphicsLayer drawLayer;
  13. private DrawTool drawTool;
  14. public void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.main);
  17. this.mapView = (MapView) this.findViewById(R.id.map);
  18. // 添加底图
  19. this.mapView
  20. .addLayer(new ArcGISTiledMapServiceLayer(
  21. "http://www.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer"));
  22. // 在drawLayer上绘制几何图形
  23. this.drawLayer = new GraphicsLayer();
  24. this.mapView.addLayer(this.drawLayer);
  25. this.drawTool = new DrawTool(this.mapView);
  26. // 此类实现DawEventListener接口
  27. this.drawTool.addEventListener(this);
  28. }
  29. public boolean onCreateOptionsMenu(Menu menu) {
  30. MenuInflater inflater = this.getMenuInflater();
  31. inflater.inflate(R.menu.menu, menu);
  32. return true;
  33. }
  34. @Override
  35. public boolean onOptionsItemSelected(MenuItem item) {
  36. switch (item.getItemId()) {
  37. case R.id.point:
  38. drawTool.activate(DrawTool.POINT);
  39. break;
  40. case R.id.envelope:
  41. drawTool.activate(DrawTool.ENVELOPE);
  42. break;
  43. case R.id.polygon:
  44. drawTool.activate(DrawTool.POLYGON);
  45. break;
  46. case R.id.polyline:
  47. drawTool.activate(DrawTool.POLYLINE);
  48. break;
  49. case R.id.freehandpolygon:
  50. drawTool.activate(DrawTool.FREEHAND_POLYGON);
  51. break;
  52. case R.id.freehandpolyline:
  53. drawTool.activate(DrawTool.FREEHAND_POLYLINE);
  54. break;
  55. case R.id.circle:
  56. drawTool.activate(DrawTool.CIRCLE);
  57. break;
  58. case R.id.clear:
  59. this.drawLayer.removeAll();
  60. this.drawTool.deactivate();
  61. break;
  62. }
  63. return true;
  64. }
  65. // 实现DrawEventListener中定义的方法
  66. public void handleDrawEvent(DrawEvent event) {
  67. // 将画好的图形(已经实例化了Graphic),添加到drawLayer中并刷新显示
  68. this.drawLayer.addGraphic(event.getDrawGraphic());
  69. }
  70. @Override
  71. protected void onDestroy() {
  72. super.onDestroy();
  73. }
  74. }</span>

在Android模拟器执行效果图如下:

ArcGIS for Android入门程序之DrawTool2.0的更多相关文章

  1. 【Arcgis for android】程序运行出错原因分析及解决(超详细)

    查看项目下是否有libs文件夹,正常情况下其中应该有 如果没有,在项目上右键 ->arcgis tools->convert to arcgis android project 排除了上述 ...

  2. 【Arcgis for android】相关教程收集自网络

    请加入qq群:143501213 一起交流和学习 推荐博客: 张云飞VIR http://www.cnblogs.com/vir56k/tag/arcgis%20for%20android/ arcg ...

  3. 使用 Eclipse PhoneGap 构建 Android 应用程序入门

    Eclipse 是一种支持多种技术的开源集成开发环境 (IDE),但本文重点介绍 Java 支持,这也是 Android 应用程序的“母语”.Android 是 Google 发布的开源移动操作系统. ...

  4. ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题

    1.前言 问题:在部分Android机型中使用ArcGIS for Android 10.1.1 API 中文标注导致程序异常崩溃. 说明:手里有两台机器一台是Nexus4,原生系统,版本4.4.4, ...

  5. 关于怎么快速学好Android应用程序开发及其其他编程语言(大牛和高手勿喷,此篇文章也适合刚入门小师弟和小师妹)

    无论你是从.NET转过来的也好 还是从PHP转过来的等等等,能看到这篇文章的人一般都是想快速转行到Android应用程序开发,希望我的这篇文章能勉励到各位的同时,也能勉励我自己. 1.编程语言基本都会 ...

  6. Android入门学习:Android 系统框架及应用程序执行过程

    Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...

  7. ArcGIS for Android地图控件的5大常见操作

    GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS ...

  8. 【转】Xamarin.Android 入门之:Xamarin+vs2015 环境搭建

    Xamarin.Android 入门之:Xamarin+vs2015 环境搭建   一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客 ...

  9. 【转】详解使用tcpdump、wireshark对Android应用程序进行抓包并分析

    原文网址:http://blog.csdn.net/gebitan505/article/details/19044857 本文主要介绍如何使用tcpdump和wireshark对Android应用程 ...

随机推荐

  1. 数据库text字段存值用回车分隔

    //查询 $sql = "SELECT attr_values FROM ecs_attribute WHERE attr_id=197"; $param_sel_sms = ar ...

  2. iOS---UICollectionView自定义流布局实现瀑布流效果

    自定义布局,实现瀑布流效果 自定义流水布局,继承UICollectionViewLayout 实现一下方法 // 每次布局之前的准备 - (void)prepareLayout; // 返回所有的尺寸 ...

  3. 重装macOS环境配置笔记

    由于早些年买mac的时候写代码的经验还不够,导致多年使用后mac上装满了乱七八糟的软件,比如python就有系统自带的,xcode里的,pyenv的,以及brew安装的各种版本,nginx,Apach ...

  4. cf536c——思路题

    题目 题目:Lunar New Year and Number Division 题目大意:给定一个数字序列,可以任意分组(可调整顺序),但每组至少两个,求每组内数字和的平方的最小值 思路 首先,易证 ...

  5. 如何优雅地从CSDN转载文章

    复制粘贴应该是最显而易见的方法,但是不仅会有丢失内容,而且格式也会丢失.要想达到更好的效果,可以从html源码入手. 1.在chrome浏览器中打开要转载的文章,右键选择检查 2.在chrome的右方 ...

  6. caffe LOG LOG_IF

    caffe使用了glog,在caffe的solver中输出都是用的LOG和LOG_IF LOG_IF是条件输出: LOG_IF(INFO, num_cookies > ) << &q ...

  7. 笔试算法题(56):快速排序实现之非递归实现,最小k值选择(non-recursive version, Minimal Kth Selection of Quick Sort)

    议题:快速排序实现之五(非递归实现,短序列优先处理,减少递归栈大小) 分析: 算法原理:此算法实现适用于系统栈空间不足够快速排序递归调用的需求,从而使用非递归实现快速排序算法:使用显示下推栈存储快速排 ...

  8. PHP项目中配置Apache环境

    安装Apache服务器(PHP环境) 首先应该去官网上下载响应的压缩包文件,此时应该注意自己电脑所安装的VC依赖包版本,应该下载对应依赖包的压缩包,且应该根据自己系统的版本选择64或32位压缩包,目前 ...

  9. delphi GDI+ [1]

    摘抄自:万一的博客 安装头文件:http://www.cnblogs.com/del/archive/2008/06/06/1215319.html 目录 基本使用方法(绘制直线) 绘制一组直线 绘制 ...

  10. 等待某(N)个线程执行完再执行某个线程的几种方法(Thread.join(),CountDownLatch,CyclicBarrier,Semaphore)

    1.main线程中先调用threadA.join() ,再调用threadB.join()实现A->B->main线程的执行顺序 调用threadA.join()时,main线程会挂起,等 ...