Arcgis for Android 10.2.9(1)

之前做的地圖項目都是基于百度地圖或者高德地圖嗅定,這次項目里用到的是Arcgis潦蝇,自然要學(xué)習(xí)起來了暇检。
推薦看官方的文檔入門:官方文檔账锹,下載需要注冊钥顽,不過我已經(jīng)下載好了下載鏈接设预。以上都是基于10.2.9版本的惋鹅。github上也有官方示例代碼鏈接,需要10.2.9版本的話可以在Branch中選擇Tags為10.2.9的悔据,直接點擊Download ZIP下載怎燥。

1.引入

首先在Project的gradle配置中引入maven倉庫地址:

repositories {
        google()
        jcenter()
        maven {
            url 'https://esri.bintray.com/arcgis'
        }
    }

然后在Module的gradle配置中添加依賴:

dependencies {
     ......
    compile 'com.esri.arcgis.android:arcgis-android:10.2.9'
}

可能會遇到Duplicate files copied in APK META-INF/LICENSE等重復(fù)文件問題
在APP的gradle文件里添加:

packagingOptions {
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

在Manifest文件中加入:

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <uses-permission android:name="android.permission.INTERNET"/>

2.顯示地圖

在XML文件中加入MapView控件:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.map.arcgistest.MainActivity">

        <com.esri.android.map.MapView
            android:id="@+id/mapView"
            mapoptions.MapType="SATELLITE"
            mapoptions.ZoomLevel="16"
            mapoptions.center="30.2872234998, 120.0115407685"
            android:layout_width="match_parent"
            android:layout_height="400dp" />

    </android.support.constraint.ConstraintLayout>
</layout>

我因為用了DataBinding所以最外層是<layout>
這樣地圖就顯示出來了,注意MapView控件中還有3個mapoptins屬性

//地圖類型:衛(wèi)星圖蜜暑,還有其他如STREETS 街道圖、OCEAN海洋圖等
//可以在MapOptions.MapType中看到
mapoptions.MapType="SATELLITE"
//縮放比例
mapoptions.ZoomLevel="16"
//地圖中心緯經(jīng)度策肝,注意“,”后還有1個空格
mapoptions.center="30.2872234998, 120.0115407685"

如果你不加mapoptions.MapType屬性肛捍,那么地圖顯示的是一片黑色,即使你用代碼設(shè)置也沒用

MapOptions mapOptions = new MapOptions(MapOptions.MapType.SATELLITE);
mapOptions.setCenter(30.2872234998,120.0115407685);
mapOptions.setZoom(10);
mActivityMainBinding.mapView.setMapOptions(mapOptions);

因為MapView只是一個容器之众,具體的內(nèi)容需要你加拙毫,這里就涉及到圖層Layer的概念,你需要添加一個圖層:

private static final String DEFAULT_BASEMAP_SERVICE_URL = "http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer";
mapView.addLayer(new ArcGISDynamicMapServiceLayer( DEFAULT_BASEMAP_SERVICE_URL));

我這里加了一個官方的圖層棺禾,XML里mapoptions.MapType屬性可能在MapView構(gòu)造函數(shù)中加了圖層

3.Layer圖層

圖層有點像ps里的圖層缀蹄,一層一層添加在MapView中顯示。一個MapView至少需要1個圖層
圖層分為4種:


圖層分類.png

例如
? ArcGISTiledMapServiceLayer 用于顯示緩存服務(wù),瓦片地圖缺前。
? ArcGISDynamicMapServiceLayer 用于顯示動態(tài)服務(wù)蛀醉。
? ArcGISFeatureLayer 用于顯示和操作要素圖層。
? GraphicsLayer 用來在地圖上顯示一些額外的衅码,或者臨時的元素拯刁。

4.點線面的編輯

點線面的編輯主要在GraphicsLayer圖層上操作,首先給MapView添加1個GraphicsLayer圖層:

mGraphicsLayer = new GraphicsLayer();
mapView.addLayer(mGraphicsLayer);

然后要給MapView設(shè)置一個點擊事件的監(jiān)聽:

mActivityMainBinding.mapView.setOnSingleTapListener(new OnSingleTapListener() {
            @Override
            public void onSingleTap(float x, float y) {
                //x,y就是屏幕上點擊的坐標
            }
        });

4.1 Point點

添加點:

//把屏幕坐標轉(zhuǎn)化為地圖上的坐標點
Point point = mapView.toMapPoint(x, y);
//點的樣式
SimpleMarkerSymbol sms = new SimpleMarkerSymbol(Color.RED, 16, SimpleMarkerSymbol.STYLE.CIRCLE);
//把點和樣式組合成一個Graphic逝段,顯示圖形的載體
Graphic graphic = new Graphic(point, sms);
//添加到圖層上顯示
mGraphicsLayer.addGraphic(graphic)
//mGraphicsLayer.addGraphic(graphic)返回的是一個int id值垛玻,表示操作的ID,刪除Graphic需要用到 
//int id = mGraphicsLayer.addGraphic(graphic)
//刪除相應(yīng)的addGraphic操作
//mGraphicsLayer.removeGraphic(int id)

4.2 Polyline線

線就是多個點連成的線奶躯,有個起點
添加線:

//是否設(shè)置了起點
private boolean mIsSetStart;
Point point = mActivityMainBinding.mapView.toMapPoint(x, y);
Polyline polyline = new Polyline();
  if (!mIsSetStart) {
      polyline.startPath(point);
      mIsSetStart = true;
  } else {
      polyline.lineTo(point);
  }
SimpleLineSymbol sms = new SimpleLineSymbol(Color.BLUE, 16, SimpleLineSymbol.STYLE.SOLID);
Graphic graphic = new Graphic(polyline, sms);
mGraphicsLayer.addGraphic(graphic);

4.3 Polygon面

面和線類似帚桩,也有起點。

//是否設(shè)置了起點
private boolean mIsSetStart;
Polygon polygon = new Polygon();
Point point = mActivityMainBinding.mapView.toMapPoint(x, y);
if (!mIsSetStart) {
      polygon.startPath(point);
      mIsSetStart = true;
} else {
      polygon.lineTo(point);
}
SimpleFillSymbol sms = new SimpleFillSymbol(Color.BLUE, SimpleFillSymbol.STYLE.SOLID);
Graphic graphic = new Graphic(polygon, sms);
mGraphicsIds.add(mGraphicsLayer.addGraphic(graphic));

4.4 Graphic

大家可能都發(fā)現(xiàn)了嘹黔,點線面3者流程上都一樣账嚎,不同的是構(gòu)成Graphic參數(shù)的不同。
Graphic有3個屬性:

  1. Geometry:圖形的地理位置信息
    點—Point参淹、線—Polyline醉锄、面——Polygon
  2. Symbol:圖形的樣式
    點— SimpleMarkerSymbol、線—SimpleLineSymbol浙值、面—— SimpleFillSymbol
  3. attributes(可選):圖形儲存的信息恳不,以Map鍵值對的方式儲存

這篇文章記錄的就這么多,很基本的內(nèi)容开呐。接下來會記錄一些具體的操作烟勋,比如Task類種的各種查詢?nèi)蝿?wù)等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筐付,一起剝皮案震驚了整個濱河市卵惦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓦戚,老刑警劉巖沮尿,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異较解,居然都是意外死亡畜疾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門印衔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啡捶,“玉大人,你說我怎么就攤上這事奸焙∠故睿” “怎么了彤敛?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長了赌。 經(jīng)常有香客問我墨榄,道長,這世上最難降的妖魔是什么揍拆? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任渠概,我火速辦了婚禮,結(jié)果婚禮上嫂拴,老公的妹妹穿的比我還像新娘播揪。我一直安慰自己,他們只是感情好筒狠,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布猪狈。 她就那樣靜靜地躺著,像睡著了一般辩恼。 火紅的嫁衣襯著肌膚如雪雇庙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天灶伊,我揣著相機與錄音疆前,去河邊找鬼。 笑死聘萨,一個胖子當著我的面吹牛竹椒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播米辐,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼胸完,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翘贮?” 一聲冷哼從身側(cè)響起赊窥,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狸页,沒想到半個月后锨能,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡芍耘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年腹侣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齿穗。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖饺律,靈堂內(nèi)的尸體忽然破棺而出窃页,到底是詐尸還是另有隱情跺株,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布脖卖,位于F島的核電站乒省,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏畦木。R本人自食惡果不足惜袖扛,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望十籍。 院中可真熱鬧蛆封,春花似錦、人聲如沸勾栗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽围俘。三九已至砸讳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間界牡,已是汗流浹背簿寂。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宿亡,地道東北人常遂。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像她混,于是被迫代替她去往敵國和親烈钞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 今天講的課《夢圓飛天》被孩子們回答的幾個小觀點震驚了一下坤按,感覺他們現(xiàn)在讀文章開始從各個角度深入思考了毯欣。 ...
    聆聽a閱讀 124評論 0 3
  • 前幾天被大寶嚇了一跳,同村的一個小朋友比他大點帶他去河邊玩臭脓,爬到石頭背上去了酗钞,因為長期沒人光顧,石頭背上有苔蘚来累,那...
    紅豬豬閱讀 289評論 0 1
  • 1 前天去修手機 盡管工作人員和我保證數(shù)據(jù)全部都備份了 但我今天才悲痛的發(fā)現(xiàn)備忘錄沒了 我的陶小梅系列沒了 信息化...
    wi1l閱讀 281評論 2 1
  • 函數(shù)定義兩種方式: 在這種方式下砚作,function (x) { ... }是一個匿名函數(shù),它沒有函數(shù)名嘹锁。但是葫录,這個...
    pokerstarxy閱讀 241評論 0 0