1. 程式人生 > >arcgis for android 地圖上畫框劃線

arcgis for android 地圖上畫框劃線

來源:http://blog.csdn.net/mwthe/article/details/49780161

主類中:

完成各種view初始化後,新增該程式碼

 MyTouchListener  myListener = new MyTouchListener(context, mapView,graphicsLayer);

mapView.setOnTouchListener(myListener);

 1、當點選地圖時,將點新增到圖層上並且將其渲染;

 2、當在螢幕上滑動時,將滑動生成的點逐步新增到poly變數中;

 3、當滑動完離開螢幕時,判斷是繪製的線還是面,當是面時,將第一個點追加到poly變數中,並將poly變數新增到圖層中去。

監聽類:

public  class MyTouchListener extends MapOnTouchListener {

            //此變數是用來儲存線或者面的軌跡資料的

           MultiPath poly;

           //判斷是執行的哪種繪圖方式,它可以為這三種值:point,polgyline,polgyon

           String type = "";

           //繪畫點時用於儲存點的變數

  Point startPoint = null;

           //地圖
           public MapView mapView;
           //圖層
           public GraphicsLayer graphicsLayer;

           //構造方法

           public MyTouchListener(Context context, MapView view) {

                 super(context, view);

           }

           //設定drawe的型別

           public void setType(String geometryType) {

this.type = geometryType;

           }

           public String getType() {

                 return this

.type;

           }

           //當我們繪製點時執行的處理函式

           public boolean onSingleTap(MotionEvent e) {

                 if (type.length() > 1 && type.equalsIgnoreCase("POINT")) {

                      graphicsLayer.removeAll();//繪製點時首先清除圖層要素

                       //生成點圖形,並設定相應的樣式

  Graphic graphic = new Graphic(mapView.toMapPoint(new Point(e.getX(), e

                                  .getY())),new SimpleMarkerSymbol(Color.RED,25,SimpleMarkerSymbol.STYLE.CIRCLE));

                      //將點要素新增到圖層上

                      graphicsLayer.addGraphic(graphic);

//設定按鈕可用

                      clearButton.setEnabled(true);

                      return true;

                 }

                 return false;

           }

            //當繪製線或者面時呼叫的函式

           public boolean onDragPointerMove(MotionEvent from, MotionEvent to) {

                 if (type.length() > 1

&& (type.equalsIgnoreCase("POLYLINE") || type.equalsIgnoreCase("POLYGON"))) {

                      //得到移動後的點

                      Point mapPt = mapView.toMapPoint(to.getX(), to.getY());

                      //判斷startPoint是否為空,如果為空,給startPoint賦值

                      if (startPoint == null) {

                            graphicsLayer.removeAll();

                            poly = type.equalsIgnoreCase("POLYLINE") ?new Polyline()

                                       : new Polygon();

                            startPoint = mapView.toMapPoint(from.getX(), from.getY());

                            //將第一個點存入poly中

poly.startPath((float) startPoint.getX(),(float) startPoint.getY());

                            Graphic graphic = new Graphic(startPoint,new SimpleLineSymbol(Color.RED,5));

                            graphicsLayer.addGraphic(graphic);

                      }

//將移動的點放入poly中

                      poly.lineTo((float) mapPt.getX(), (float) mapPt.getY());   

                      return true;

                 }

                 return super.onDragPointerMove(from, to);

           }

           //當繪製完線或面,離開螢幕時呼叫的函式

           @Override

public boolean onDragPointerUp(MotionEvent from, MotionEvent to) {

                 if (type.length() > 1

                            && (type.equalsIgnoreCase("POLYLINE") || type

                                       .equalsIgnoreCase("POLYGON"))) {

                      //判斷當繪製的是面時,將起始點填入到poly中形成閉合

                      if (type.equalsIgnoreCase("POLYGON")) {

poly.lineTo((float) startPoint.getX(),

                                       (float) startPoint.getY());

                            graphicsLayer.removeAll();

                            graphicsLayer.addGraphic(new Graphic(poly,new SimpleFillSymbol(Color.RED)));

                      }

                      //最後將poly圖形新增到圖層中去

                      graphicsLayer.addGraphic(new Graphic(poly,new SimpleLineSymbol(Color.BLUE,5)));

                      startPoint = null;

                      clearButton.setEnabled(true);

return true;

                 }

                 return super.onDragPointerUp(from, to);

           }

      }





相關推薦

arcgis for android 地圖畫框劃線

來源:http://blog.csdn.net/mwthe/article/details/49780161 主類中: 完成各種view初始化後,新增該程式碼  MyTouchListener  myListener = new MyTouchListener(contex

ArcGIS for iOS地圖新增測距功能,及顯示相應的路徑圖層

近段時間因為專案需求,所以需要再arcgis上邊通過在地圖上進行點選,之後把各個點選點按順序連線起來,同時將兩點之間的距離給計算出來並顯示。故此編寫本部落格具體分為以下幾個步驟1、新增地圖並顯示到檢視中(次步省略掉)2、在地圖上新增AGSGraphicsLayer和AGSSk

arcgis for android 呼叫公網天地圖註記重影問題

      最近在android專案開發中,使用arcgis for android 地圖api呼叫公網的天地圖。有一個問題,天地圖的註記層,在地圖縮放的時候重新整理滯後,導致註記層有重影,使用者體驗差。    &nb

ArcGIS for Android 100.3的學習與應用(三) 實現地圖新增自定義指北針

圖為高德地圖實現指北針的效果,那麼ArcGIS如何實現呢? 實現方式: 新增地圖的旋轉監聽: map.addMapRotationChangedListener(new MapRotationChangedListener() { @Override

ArcGIS for Android示例解析之地圖旋轉-----MapRotation

  MapRotation 新增地圖控制元件,並且為地圖容器中新增地圖服務上面已經介紹完了,下面我們來個複雜一點的,這個例子主要實現了地圖的旋轉功能,下面來看一下應用的佈局檔案main.xml,內容如下: <com.esri.android.map.MapView

arcgis for android之載入移動地圖

1、資料製作篇 a.向量資料在arcmap中按需求製作,所需資料放在一個.mxd工程檔案中,或者所需資料存放在一個.geodatabase中; b.arcgis pro 1.3中載入.mxd工程檔案或者.geodatabase檔案,載入之後對圖層中的資料進行相應符號化以及

Arcgis For Android之離線地圖實現的幾種方式

ArcGIS for Android離線資料編輯實現原理 實現ArcGIS for Android上的離線資料編輯,具體實現環境及其步驟如下: 一、      環境準備 1.        軟體環境 1)        ArcGIS Server10用於釋出地圖服務 2)        ArcGIS Des

ArcGIS for Android Runtime 100 升級實踐(一)地圖載入,圖形和符號初始化

      去年的Esri大會,隨著最新的ArcGIS 10.5產品的釋出,全新的ArcGIS Runtime 100.0也隨之釋出。ArcGIS Runtime 100.0 可謂是有了個天翻地覆的改

ArcGIS for Android 在Eclipse的安裝配置 (:下載篇)

        本文主要包括以下內容:         一、ArcGIS Runtime SDK for Android 下載(附下載連結);         二、ArcGIS Runtime SDK for Android 安裝(Eclipse環境,非Adroid S

ArcGIS for Android 100.3.0(14):移動地圖包MMPK的使用

MobileMapPackage 移動地圖包是ArcGIS Pro裡新推出的一種離線地圖資料,配合ArcGIS Runtime 100使用。 移動地圖包是一個以“.mmpk”結尾的單獨檔案擴充套件,它可以將你的組織的maps、資源、道路網、或者座標整合到一個

ArcGIS for Android 100.3.0(3):地圖和圖層(MapView和Layer)

ArcGIS Runtime 中的地圖顯示 在Runtime100裡,增加了3D地圖顯示的功能。為了滿足大多數人的使用習慣,Esri依然採用MapView類作為2D地圖的展示容器,新增了SceneView類作為3D地圖的展示容器,然後這兩個類共同繼承於一個叫G

Arcgis for Android開發檔案一(離線地圖解決方案)

ArcGIS Runtime for Android開發解決方案資料 目錄 前言 一、ArcGIS Runtime for Android 開發環境的搭建 二、ArcGIS Runtime for Android 離線地圖包的製作 三、ArcGIS Runtime for

Arcgis for Android 空間數據WKT與JSON描述

nbsp gis str ext 10.9 select exception json字符串 spatial 點線面數據標準格式 一、 點 WKT: POINT(-118.4 -45.2) JSON: { "x": -118.4, "y": -45.2, "

Arcgis for android的離線數據庫小記

pan eat 下載失敗 roi 一模一樣 數據 ID 找到 code 最近在使用arcgis for android,要實現本地數據的編輯,esri的解決方案搞的太復雜,遇到了不少問題,特此記錄 1.Desktop生成的runtime geodatabase無法在本地進

ArcGIS for Android 100.3的學習與應用(二) 如何移除指定的點和線?

在地圖上新增點和線的時候,我們有時候會遇到要移除或者切換指定的點和線的操作。那麼如何移除指定的點和線呢? ArcGIS的api裡點和線都是由GraphicsOverlay類來進行建立新增的。通過Graphic物件將點或者線的圖形物件(SimpleMarkerSymbol,SimpleLine

ArcGIS for Android 100.3的學習與應用(一) 如何繪製點和線?

平時工作中,我們接觸到的地圖類開發平臺有很多,最常用的有高德,百度,騰訊地圖。而且它們都有自己的開發者平臺和文件供我們使用。基本能滿足我們的業務需求。 由於公司裡的專案會涉及一些地圖資料統計和展示方面的需求,同時也會發布一些地圖服務,所以選擇了使用在地圖方面比較牛逼的ArcGIS。 把平時遇

ArcGIS for Android載入WMS(1)——WMS基本介紹

今天開始寫ArcGIS for Android載入WMS系列的一些記錄,主要包括WMS的基本介紹,ArcGIS for Android載入WMS,用MapGuide和GeoServer釋出WMS並在ArcGIS for Android中載入以及其中存在的一些問題等。因為前兩天

ArcGIS for Android 的學習與應用(二) 如何移除指定的點和線?

在地圖上新增點和線的時候,我們有時候會遇到要移除或者切換指定的點和線的操作。那麼如何移除指定的點和線呢? ArcGIS的api裡點和線都是由GraphicsOverlay類來進行建立新增的。通過Graphic物件將點或者線的圖形物件(SimpleMarkerSy

mono for android Json 傳檔案

void button_Click(object sender, EventArgs e) { string Url = "上傳地址,伺服器端負責接收"; byte[] fbytes; int Id

ArcGIS for Android示例解析之高亮要素-----HighlightFeatures

  HighlightFeatures 要素高亮化功能,相信有其他gis開發經營的開發人員都有過相應的實現經驗,對於高亮要素,簡單說起來就是我們查詢的或識別出來的要素進行渲染,讓其突出顯示而已,這個例子中涉及後面要介紹的識別的內容,我們只簡單介紹相關的知識,主要介紹要素物件