本來我是用10.2.6的arcgis sdk開發了一個APP,之前在android 5.0的三星手機上使用也沒什麼問題,後來在android 6.0的小米手機上測試,發現地圖界面加載失敗,用try catch語句捕獲異常(android.view.InflateException: Binary XML file line #6: Binary XMLfile line #6: Error inflating class com.esri.android.map.mapView),懷疑是不是這個SDK不支持android6.0。
研究了一下在線獲取arcgis sdk的方式來開發地圖,經驗證,可以正常在android6.0上使用。網上關於這方面的介紹很多,本人僅僅對這些介紹進行了精簡。
本人使用android studio開發環境,
demo可以從http://download.csdn.net/detail/pp9105/9658097下載。
在線獲取arcgis sdk的方式很簡單,不需要手動下載任何東西,直接用最傻瓜的方式新建一個android studio工程,然後具體修改3個地方,就可以在android 6.0上面跑arcgis地圖了。
1、 修改Project的build.gradle,增加以下代碼
allprojects{
repositories{
jcenter()
maven{
url'http://esri.bintray.com/arcgis'
}
}
}
subprojects{
afterEvaluate{project->
if(project.hasProperty("dependencies")){
dependencies{
compile'com.esri.arcgis.android:arcgis-android:10.2.8'
}
}
}
}
2、 修改Module的build.gradle,在android的大括號裏面增加以下代碼
packagingOptions{
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
3、 修改AndroidManifest.xml,增加權限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
然後就是在activity和layout中添加地圖的相關代碼了。增加了之後可能一開始會顯示紅色,編譯一下就OK了,應該是自動下載了arcgis的SDK。
1、 activity_main.xml文件添加代碼
<com.esri.android.map.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
2、MainActivity.java中添加代碼
MapView mMapView=(MapView)findViewById(R.id.mapview);
ArcGISTiledMapServiceLayer tileLayer = new ArcGISTiledMapServiceLayer(
"http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
mMapView.addLayer(tileLayer);