android 6.0上的arcgis sdk 10.2.8在线方式

来源:互联网 发布:vb和c语言区别,详细点 编辑:程序博客网 时间:2024/06/10 05:29

本来我是用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);

0 0
原创粉丝点击