一些事情,又开始弄一下esri android 的东西。以前都没有好好总结,所以总是做一些重复性的工作,现在我写这个日志总结一下遇到的问题,以免以后遇到了又忘了怎么解决。有需要合作的同学可以和我联系,QQ:1779873364。
实现功能: 地图切换;手机定位;点、线、面的绘制;标记、存储;查询、统计
开发环境: android studio3.6 ; esri android runtime sdk 100.8.0
第一、android studio(AS)的版本一定要是这个,我原先用的是2.1的版本,结果老是报错,错误就是无法编译esri android runtime sdk 100.8.0这个包。不仅不能编译这个包,其他100.*.0的包都不可以。
第二、AS中的java 版本一定要是1.8的,我以前用都是1.7,所以导致APP安装到手机上,只要添加mapview的控件,就会闪退。这个版本的AS会自带1.8的java编译器,所以只要更改好就可以了。等更改之后,还需要添加一句话。(build.gradle[module:app])
android{
[...]
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
第三、除了刚才提高的闪退原因外,还需要添加一句话才可以避免闪退的发生。(build.gradle[module:app])
defaultConfig {
[....]
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
第四、由于我用的是runtime100.8.0,和以往的10.2等版本发生了很大的变化,包括数据的加载方式、所用的函数等。现在就几个常用的函数罗列一下。
//添加画布图层
mGraphicsOverlay= new GraphicsOverlay();
mMapView.getGraphicsOverlays().add(mGraphicsOverlay);
//添加绘制的要素
Graphic polylineGraphic = new Graphic(polyline, polylineSymbol);
mGraphicsOverlay.getGraphics().add(polylineGraphic);
//用于获取集合图形的面积、长度
pLingLength=GeometryEngine.length(polyline);
第五、除了在使用ESRI的二次开发包中的遇到的各种问题,关于android开发的也有一些问题。
(1)自从android6.0之后,不仅需要在权限清单中增加权限,还需要在代码中写上需要开启的权限。我使用的是定位、存储、网络访问。这些都需要在代码中申请。
(2)在数据存储的时候,如果想要访问手机中的位置,其根目录的路径为“/storage/emulated/0/”。当获得文件操作的权限后,就可以使用新建文件夹、新建文件等操作了。