一、ArcGis For Android:从Map App开始

本系列文章将记录自己从零学习ArcGIS Runtime SDK for Android 100.0.0。

该篇主要内容:

1、使用Web 地图

2、访问你组织的基础图层

3、身份

4、搜索地点

5、建议地点

6、地理编码

7、反地理编码

8、路线

使用ArcGIS Runtime Android App,可以将您组织(公司)的地图数据传送到您的工作人员手中。Map App可以接收来自ArcGIS Online组织的自定义Web地图。Map App不仅可以使用ArcGIS Online强大的服务,也可以使用您自己的服务进行搜索地点和规划路线(规划路线即两点之间的路线)。Map App它还可以将您组织(公司)配置的底图(离线地图,或者你公司的在线地图)进行底图切换。

此示例应用程序是开源的,您可以从GitHub(https://github.com/Esri/maps-app-android)上抓取下来,您可以按照示例代码去编写您自己的应用程序,或者只是学习如何将类似的功能集成到自己的应用程序中!

一、使用Web地图

您可以在ArcGIS Online或ArcGIS Pro上面创建自己的Web地图,然后再通过ArcGIS Online组织共享地图数据给你的Map App,这是ArcGIS内置的“Web GIS模型”的中心思想。写一个使用Web地图的应用程序,然后在ArcGIS Online中完成制图和地图配置,而不是在代码中完成这些。这就意味着我们的地图随时都可以更改,而不是只有在App更新或者代码更改后才能更新。我们将详细地讲解使用Web地图开发的好处,我们可以开始了解如何在ArcGIS Online和ArcGIS Pro中创建Web地图了。

在代码中加载web地图是非常容易的,我们的App从门户网站(可能需要用户登录,请参阅下面的身份部分)加载网络地图,只需要使用以下代码:

二、访问你组织(公司)的基础图层

作为ArcGIS Online组织或门户网站的管理员,您可以配置用户通过组之间的切换来切换底图(http://doc.arcgis.com/zh-cn/arcgis-online/share-maps/share-items.htm)。App可以使用Portal API(https://developers.arcgis.com/android/latest/guide/access-the-arcgis-platform.htm)来进行配置,我们的App会通过异步调用来执行此操作,在底图库中查找到包含web地图的那个组,使用返回的组的ID,就可以从门户检索到底图的集合。

三、身份

App利用ArcGIS身份模型通过命名的用户登录模式提供对资源的访问。在路由的工作流程中,App会提示您输入您组织的ArcGIS Online凭据,用于获取稍后由门户网站和路由服务使用的令牌。ArcGIS Runtime SDK提供了一个简单易用的API来处理ArcGIS登录。

使用challenge handler访问令牌安全服务的过程如下图所示。

1、向服务器上的资源发出请求。

2、门户网站响应未经授权的访问错误。

3、与身份管理器相关联的challenge handler会提供身份凭证。

4、显示一个UI,并提示用户输入用户名和密码。

5、如果用户被成功认证,则向服务器的请求中就会包含一个凭证。

6、身份管理器会存储这个门户网站的凭证,并且所有请求都会包含凭证。

DefaultAuthenticationChallengeHandler类负责上面的1-6步,如果你的App需要使用这种模式,你可以按照这些指南注册您的应用程序。

每当安全服务发出身份验证时,DefaultAuthenticationChallengeHandler和DefaultOAuthIntentReceiver一起工作处理身份验证事务。除了上面的四行代码,Android manifest.xml文件必须定义一个DefaultOAuthIntentReceiver,用于在用户输入其凭据后接收意图。

在Xml中scheme属性,如果配置这个属性,这个属性的值是注册成功后重定向的url。

四、搜索地点

地理编码可以将地址或地名转换为特定地理位置,反之亦然,您可以使用地理位置来查找地理信息,比如使用邮政地址或者是地理名称。在Map App中,我们使用LocatorTask来执行Esri世界地理编码服务提供的地理编码和反向地理编码功能。LocatorTask有各种异步方法,在搜索位置或地理编码位置时,我们使用这些异步方法来得到一些地址的建议。

在Maps App中,LocatorTasks使用ArcGIS服务提供了在线定位器初始化功能。

您还可以配置自己的自定义地理编码服务适配自己的组织(公司),在使用LocatorTask进行地理编码或搜索位置之前,LocatorTask必须为LOADED,即可加载模式。LocatorTask是使用ListenableFutures(实现自Future接口)来进行异步操作的,ListenableFutures里面的任务执行完毕后,会执行监听功能。Map App还可以推荐附近的地理位置。

五、建议地点

在地图应用搜索框中输入地点的前几个字母(例如“Voodoo Donut”)会在设备位置附近显示一些建议。

六、地理编码

一旦用户已经选择了上面搜索列表中的建议,建议的地址会使用LocatorTask的geocodeAsync方法进行地理编码。根据这个地址,我们还可以设置特定的地理编码参数以调整结果,比如:在MapApp中,我们可以设置首选位置,并通过设置区域的边界来进一步细化,用来搜索匹配的地址。

七、反地理编码

Map App可以使用内置的地图放大镜帮助用户对地图上的位置进行微调,以进行反向地理编码。放大镜在地图视图上长按后显示,一旦长按被释放,地图上的点就会进行反地理编码。

我们需要扩展DefaultMapViewOnTouchListener里面的onUp事件并实现我们自己的逻辑。

反向地理编码的方法:

八、路线

在Maps-app中获取导航路线在Runtime SDK中与在ArcGIS Online上一样简单。您可以为您的组织(公司)自定义导航服务,你可以添加更好地反映组织工作流程的新路线,或删除不适合您组织工作流程的路线。

在Map App中从点到点的导航有两种启用方式:第一种,在生成路线之前必须对原点和目的地进行地理编码,在Map App中,生成路线会要求您向Portal或ArcGIS Online组织提供凭据。就像前面我们在身份章节提到的,我们会使用DefaultAuthenticationChallengeHandler来管理身份验证过程。

您可以使用RouteTask对象上的createDefaultParametersAsync()方法实例化一个新的RouteParameters对象。使用此方法生成路线,我们可以配置一些适当的默认设置,比如添加停靠点和请求路线方向,还可以允许指定方向的测量单位。

生成的路线如下所示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容