ArcGIS Android SDK非常强大,使用它可以让我们做出具有制图、地理编码、导航、地理处理等能力的apps,并且可以结合ArcGISOnline或者自己的ArcGIS server的空间分析能力。学习SDK最好的方法就是去读官方的文档以及尝试去使用官方的例子。
使用ArcGIS RuntimeSDK for Android,你可以制作这样的apps:
①为你的apps添加高质量的地图以及GIS能力
②使用portal API从你的组织中(ArcGIS Online或Portal for ArcGIS)添加和查询内容
③从ArcGIS Server中添加图层
④离线使用地图和数据
⑤添加本地存储的切片缓存或感兴趣区地图
⑥在所有支持的空间参考下展示地图
⑦使用丰富的继承自ArcGIS能力的任务分析你的地图并向你的用户提供结果信息
⑧提供让使用者离线外出作业时编辑数据的工具,包括允许他们重新在线时同步离线编辑的数据
⑨与你设备上的GPS一同工作
⑩构建离线和在线的导航应用
⑪在地图上查询要素并展示弹出框(可定制)
⑫在地图上添加graphics,允许使用者绘制图形并在点击图形时显示弹出框
⑬在本地执行高级图形和空间分析操作
⑭执行高级的地理处理任务并展示结果
⑮使用空间查询或者属性查询查找,发现要素
⑯离线使用地理编码和反地理编码
可用的资源
①通过.jar文件提供的具有丰富功能的Android API
②一个AAR(AndroidArchive)文件用来作为Gradle build脚本中的依赖
③API参考文档
④一套示例代码
⑤一个可以与别的开发者讨论的论坛
⑥介绍新进展和相关新闻的博客
安装与配置
使用ArcGIS RuntimeSDK for Android有以下两种方式:
①Gradle②下载SDK
Gradle
它将安装所需的依赖以及SDK二进制文件
1.使用以下代码添加maven仓库的URL和ArcGIS Runtime SDK for Android依赖
repositories{
jcenter()
// Addthe following ArcGIS repository
maven {
url 'https://esri.bintray.com/arcgis'
}
}
2.在app模块的buid.gradle文件中的dependencies区块中,添加一个指令去将ArcGIS Runtime SDK for Android包含入你的app中
Appmodule build.gradle file
dependencies{
// AddArcGIS Runtime SDK for Android dependency
compile'com.esri.arcgis.android:arcgis-android:10.2.8'
}
3.仍然在app模块的build.gradle文件中的android区块,使用以下代码添加packaging options指令。排除了构建app生成的APK中的重复文件,避免出现构建错误。
Appmodule build.gradle file, within android block
packagingOptions{
exclude'META-INF/LGPL2.1'
exclude'META-INF/LICENSE'
exclude'META-INF/NOTICE'
}
4.根据你的app中使用到哪些ArcGIS功能,你需要在配置文件中添加许可。
下载SDK
下载的SDK中包含了所有通过Gradle安装的加上分析功能的native库,本地化资源以及高级符号化文件。通过登录ArcGIS for Developers进行下载。
下载的SDK中的内容有:
Doc: arcgis-android和arcgis android app toolkit的接口文档
Legal:许可文档
Libs:库文件
Lib-project: AAR格式的本地安卓库工程
Res:本地化UI弹出框的本地化文件
Resources:高级符号化符号源文件
Samples:本地示例代码(基于Android Gradle框架)
ArcGIS Android应用工具包
应用工具包提供协助制图和定位流程的简化类。
可以通过添加ArcGISRuntime SDK for Android AAR包来使用应用工具包
MapViewHelper
MapViewHelper类可以帮助我们简化显示标注,添加几何图形以及创建弹出窗口的编程流程。通过向构造函数传递一个MapView参数创建MapViewHelper
MapViewHelpermvHelper = new MapViewHelper(mMapView);
显示标注
mvHelper.setShowGraphicCallout(false);//不显示标注
mvHelper.setOnGraphicClickListener(newOnGraphicClickListener(){
publicvoid onGraphicClick(graphic){
// dosomething
}
});//通过注册监听事件的方式
弹出窗口
mvHelper.createPopup(screenX,screenY, new PopupCreateListener(){
publicvoid onResult(popupContainer){
// dosomething
}
}); //点击时自动查询所有图层并为选中要素创建和返回弹出窗口
查找地址
GeocodeHelpergeocodeHelper = new GeocodeHelper();
// findan address for a given location
Future<LocatorReverseGeocodeResult>= geocodeHelper.findAddress(screenX, screenY, locator, mMapView, callback)