来自: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-LMLPHP

05-26 12:06
查看更多