ArcGIS for Android 体验(一) 添加地图

前言

    关于ArcGIS for Android的学习,可通过SDK中的简单例子进行学习,也可以直接上手摆弄。在这里,我将ArcGIS for Android功能体验结合简单例子进行阐述。前提是读者本机上有其环境。在http://blog.csdn.net/david_ocean/article/details/12567317中,有详细的说明配置过程,并且对于API文档的调用也有一定的说明。本文很多地方需要结合API文档一同查看,希望读者将文档调出,一同体验。

体验

    第一次接触ArcGIS for Android,首先第一个想到的是对地图进行加载和呈现。
这是最最基本的需要。然而在这里,本人以简单例子中的addlayer为例进行体验。

新建工程

    在eclipse中,新建project,选择ArcGIS for Android中的Samples for Android。

    然后按默认确定,在选择工程的时候,选择addLayer。

    然后看到工程中的代码为:


    在这里可以看到地图中加载的是ArcGISDynamicMapServiceLayer。即加载动态图层。效果为:



    由此可以看出,此为两个图层进行叠加的。因为map在添加图层的时候,是添加两个:

    两次addLayer()。最后添加的地图会叠加到前面所添加的地图。这就像ArcMap中的图层添加原则。后添加的位于原有地图的上层成为完全显示的,而已经添加的地图则更多的成为基础地图来作为参考。如下图ArcMap中的图层管理原理。最新添加的test.tif置于最上方,傲立与其他地图之上。


    为了能够控制图层,addLayer设定了一个长按切换地图的操作:设定图层layer的隐藏显示属性visible()来操作地图:


    代码中setOnLongPressListener(),是对map进行长按事件的监听,判断第二个添加的图层dynamicLayer(在layers图层组中为layers[1];而layers[0]代表第一个添加的图层)是否是显示的,再设定隐藏操作还是显示操作。

    长按之后效果为:

    即,将dynamicLayer图层隐藏了。

图层的认识

    在此,我们停一停。打开api文档,选择com.esri.android.map中的layer来查看一下整个图层layer的概念。

    熟悉ArcGIS的客官应该容易理解,DynamicLayer(动态图层)其实就是ArcGISServer中提供的影像图层。ArcGISDynamicMapServiceLayer属于DynamicLayer的子类。

    那么,如果我们想要加载切片地图等其他地图应该如何办?那么与加载动态图层同理,设定好正确的url地址然后添加到mapview中。

加载在线切片图层

    效果为:

加载在线矢量图层

    在线切片和动态图层的加载几乎一样,那么矢量图层的加载是否一样呢?在这里,要弄清楚在ArcGIS Online上的在线地图很多都是需要身份认证的,也就比较麻烦。而在这里,我先使用在自己ArcGIS Server 上发布的矢量地图进行加载,让各位看官知道最简单的加载方式。

    代码:

    十分清晰,与之前区别不大;地址选择本地发布地图的地址,手机端与电脑在同一网段就可连接。然后选择对应MODE就行。

    在API中,对于MODE有解释:

MODE.SNAPSHOT按快照方式返回服务的所有数据。

MODE.ONDEMAND按需返回数据。

MODE.SELECTION按所选的范围返回数据。

一般选择默认的SNAPSHOT即可,或者根据需要选择自己想要的。

    API中的官方解释为:

    然后程序的效果为:

    如果是在online上找到一个有信息验证的,那么就比较麻烦。想查看详细的可创建简单例子中的SecuredFeatureLayer来进行查看。若不想再细看,那么希望下文有点提示作用。

    在很多网络上的矢量地图不愿意进行共享,设定权限。如下图:


    当看官获取到进入权限后。那么在ArcGISfor Android中应该将权限的用户名和密码设定为一个UserCredentials,然后导入到地图加载中。

    代码为:


    也就是将账号密码放在UserCredentials中,然后在其构造器中导入:

    至此,矢量地图加载完成,效果如下:


    对于矢量地图中的要素进行查询和操作的话,请查看SecuredFeatureLayer这个例子,有详细代码可以学习,本章主题是添加地图,就不一一详解。

加载离线切片图层

    在线部分基本说完,现在就是说明离线的。在ArcGIS for Android10.1.1版本中,可以加载离线的切片地图,这也是需求最大的。但是,ArcGIS forAndroid是不支持离线的矢量地图的加载的,若想要加载离线矢量地图的话,必须要求有官方的授权。也就是说,你买了官方授权之后,就能够加载离线矢量了,想怎么弄就怎么弄。但是,如果没有买授权的话,那就加载离线切片看看算了。

    首先,打包切片地图成.tpk格式。如果不知道如何打包的话,请查阅博客:http://blog.csdn.net/arcgis_mobile/article/details/8048549,友情提示,前两种方法都很简单,都适合。但个人更愿意第一种方法,因为一劳永逸,懒人首选。

    那么,现在应该加载离线的了,其实十分简单。我弄了一个北京东直门的图层,在ArcMap中的效果为:

    然后,将tpk放到终端设备中,记录下地址,我是在sdcard中新建一个文件夹basemap,将东直门.tpk放到文件夹中:

    然后,在addLayer中,进行设定:

    看官需要注意的是,file:///是必须的,然后mnt/sdcard/就是进入的入口地址。那么效果如何?请看下图:


总结

    以上所有是对地图中加载各个图层进行的解释,希望列位看官能够得到帮助。在使用ArcGIS forAndroid的时候,可以与ArcMap的框架进行比较。整个MapVIew可以视为ArcMap中的数据框,是对所有图层进行的管理和显示渲染。而图层的添加也符合ArcMap的原则,后来的置于上方。
本章部分重点是针对刚接触ArcGIS for Android的用户。如果有想要深入了解的看官,可关注本人的动态,等待后续内容。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值