ArcGIS for Android入門程式之DrawTool2.0

來源:互聯網
上載者:User

標籤:

來自: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,使用方法如下:

 

 

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


在Android模擬器執行如下:

 

ArcGIS for Android入門程式之DrawTool2.0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.