Arcgis For Android

一、環(huán)境配置

  1. 在線模式
    在線配置非常簡(jiǎn)單,在Android Studio 新建一個(gè)項(xiàng)目,在build.gradle里添加如下代碼
allprojects{
           repositories{
           jcenter()
           maven{
                   url'https://esri.bintray.com/arcgis'
           }
       }
   }

    subprojects{
            afterEvaluate{project->
                 if(project.hasProperty("dependencies")){
                            dependencies{
                                    compile'com.esri.arcgis.android:arcgis-android:10.2.7'
                            }
                    }
            }
    }
  1. 離線模式
packagingOptions{
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
}

Arcgis for Android的環(huán)境配置就完成了。

二、基本用法

  1. 在布局文件中添加
<com.esri.android.map.MapView
       android:id="@+id/map"
       android:layout_width="fill_parent"
       android:layout_height="match_parent" />
  1. 初始化地圖
        mMapView = (MapView) findViewById(R.id.map);
        //加載底圖
        mMapView.addLayer(new ArcGISTiledMapServiceLayer(
             "http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineStreetCold/MapServer"));
  1. 地圖去除水印
        String clientID = "273DobVpQjOHcrZe";
        ArcGISRuntime.setClientId(clientID);
  1. 地圖操作常用API
        //縮放
  mMapView.zoomIn(...) //--放大
  mMapView.zoomOut(...)//--縮小
  mMapView.zoomToResolution(...); 
  mMapView.zoomToScale(...);
       //控制顯示范圍 
       Envelope env = new Envelope(...);//范圍
  mMapView.setExtent(env)//設(shè)置地圖顯示范圍
  mMapView.setScale(295828763);//當(dāng)前顯示的比例尺
  mMapView.setResolution(9783.93962049996);//設(shè)置當(dāng)前顯示的分辨率
        
  mMapView.setMapBackground(...);//設(shè)置地圖背景
  mMapView.setAllowRotationByPinch(...); //是否允許使用Pinch方式旋轉(zhuǎn)地圖
  mMapView.setRotationAngle(...); //初始化時(shí)將地圖旋轉(zhuǎn)多少度,參數(shù)為正時(shí)按逆時(shí)針?lè)较蛐D(zhuǎn)。

  mMapView.toMapPoint(x,y);//屏幕坐標(biāo)轉(zhuǎn)換成空間坐標(biāo)
  mMapView.toScreenPoint(pt);//轉(zhuǎn)換成屏幕坐標(biāo)對(duì)象
  1. 地圖的監(jiān)聽(tīng)
  • 地圖單擊監(jiān)聽(tīng):OnSingleTapListener(Code中的應(yīng)用,單擊在地圖上顯示的graphic點(diǎn)時(shí),需要將graphic在地圖上的坐標(biāo)轉(zhuǎn)化成屏幕坐標(biāo),然后使用ArcGis for Android中Callout展示相應(yīng)的數(shù)據(jù))
  • 平移監(jiān)聽(tīng):OnPanListener //--這里指的是地圖平移的監(jiān)聽(tīng),Code中的使用Nothing.
  • 長(zhǎng)按監(jiān)聽(tīng):OnLongPressListener //--地圖上某一點(diǎn)的長(zhǎng)按監(jiān)聽(tīng),Code中的使用,定義當(dāng)前事件點(diǎn).
  • 縮放監(jiān)聽(tīng):OnZoomListener //--對(duì)地圖的縮放操作,Code中的使用Nothing.
  • 狀態(tài)監(jiān)聽(tīng):OnStatusChangedListener //--狀態(tài)監(jiān)聽(tīng),主要是當(dāng)前Mapview的狀態(tài)變化相對(duì)應(yīng)的CallBack.
  • pinch 監(jiān)聽(tīng):OnPinchListener //--這里是對(duì)地圖進(jìn)行多指縮放(地圖的放大和縮小)
  1. 圖層

    1. ArcGISTiledMapServiceLayer
          切片圖層,顧名思義,片狀的展示數(shù)據(jù),設(shè)計(jì)多線程的操作,故而處理速度快.
       2. ArcGISDynamicMapServiceLayer
          性能低于(1),主要依賴(lài)數(shù)據(jù)的復(fù)雜度.
       3. ArcGISImageServiceLayer
          基本等同(2)
       4. ArcGISFeatureLayer
       5. ArcGISLocalTiledLayer
          當(dāng)前項(xiàng)目中正在使用的圖層.加載本利離線數(shù)據(jù)庫(kù)數(shù)據(jù).
       6. GraphicsLayer
          當(dāng)前項(xiàng)目中各種圖標(biāo)Icon的展示圖層,該圖層允許添加Graphic.
  2. 繪制

  • 繪制點(diǎn)
//Drawable即Android中對(duì)應(yīng)的PNG.
         PictureMarkerSymbol mSymbol = new PictureMarkerSymbol(drawable);
//--point 繪制點(diǎn)的坐標(biāo),symbol圖片,attributes需要添加的屬性信息.
         graphicsLayer.addGraphic(new Graphic(point, mSymbol,atttributes)); 
  • 繪制線
    Polyline mPloyline = new Polyline();//--繪制線段的對(duì)象
    SimpleLineSymbol outline = 
                    new SimpleLineSymbol(Color.RED, 3, STYLE.SOLID);//--為線段設(shè)置屬相,如線段的顏色,樣式

    mPloyline.setEmpty();//--清空之前的所有數(shù)據(jù) 僅僅在Down的時(shí)候清空即可.
    mPloyline.startPath(pressPoint); //--設(shè)置繪制的起始位置. 僅僅在Down的時(shí)候清空即可
    mPolyline.lineTo(movePoint); //--設(shè)置當(dāng)前位置移動(dòng)的下一個(gè)位置點(diǎn).Move的時(shí)候調(diào)用此處

    Graphic graphic = new Graphic(myCustomPolyline, outline);//--創(chuàng)建Graphic 僅僅一次
    mPolygonId = mCustomGraphicLayer.addGraphic(graphic); //--將Graphic添加到圖層 僅僅一次
    mCustomGraphicLayer.updateGraphic(mPolygonId, myCPolyline); //--更新當(dāng)前數(shù)據(jù)到圖層.

    Notes:如果你希望繪制的折現(xiàn)最后是閉合狀態(tài),這里可通過(guò)設(shè)置mPloyline.lineTo(pressPoint);
  • 繪制面(等同之上的操作,唯一不同點(diǎn)在于繪制對(duì)象)
    Polygon mPolygon = new Polygon(); 
    SimpleFillSymbol mPolygonSymbol = new SimpleFillSymbol(color);
    ...
    Graphic graphic = new Graphic(mPolygon,mPolygonSymbol);
    mPolygonId = mCustomGraphicLayer.addGraphic(graphic);  
    mCustomGraphicLayer.updateGraphic(mPolygonId, myCPolyline);

這里是對(duì)面的繪制操作,面顧名思義就是閉合狀態(tài),所以整個(gè)繪制過(guò)程中面都處于閉合狀態(tài);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,034評(píng)論 25 709
  • 本系列文章將記錄自己從零學(xué)習(xí)ArcGIS Runtime SDK for Android 100.0.0。 該篇主...
    奇乞祈興閱讀 7,776評(píng)論 0 7
  • 1、選擇什么類(lèi)型的圖層 2、地圖圖層 3、操作層圖層 4、臨時(shí)的圖形 在ArcGis中,圖層是用來(lái)在地圖中顯示地理...
    奇乞祈興閱讀 7,631評(píng)論 3 5
  • 本章節(jié)主要講解地圖源 地圖可以展現(xiàn)我們的事物,我們的想法,和遇到的一些狀況。地圖還可以幫助我們做很多事情,比如幫助...
    奇乞祈興閱讀 1,195評(píng)論 0 3
  • 一陣西風(fēng) 葉落花去秋思起 一場(chǎng)恩情 每點(diǎn)每滴記心底 一種無(wú)奈 物是人非苦煞人 一生想念 ...
    一葉漁舟閱讀 250評(píng)論 0 2

友情鏈接更多精彩內(nèi)容