3.4、实现Layer
我们使用Java来实现3.3小节创建好的Layer所指向的url。当然,可以采用任何其它的服务器端语言来实现,比如php、asp.net等等。
简单起见,我们不在阐述如何利用ArcGIS准备数据、发布服务,而是使用ArcGIS在线体验中心(http://tm.arcgisonline.cn)已经发布好的北京市容易积水地点的地图服务(服务地址:http://tm.arcgisonline.cn:8038/arcgis/rest/services/beijingRain/721beijingrain/MapServer/0)。
CP服务器端代码起到的作用类似于设计模式Adapter中的适配器。ArcGIS Server REST接口提供的数据格式与Layar接口标准的数据格式不一致。CP服务器端代码向ArcGIS Server发送请求,并解析返回的数据,然后将这些数据组装成Layar格式的数据,返回给Layar服务器。详见源代码(下载地址:http://download.csdn.net/detail/arcgis_mobile/4639049)。
CP服务器端代码完成之后,部署到一个外网可访问的服务器上,url与3.3小节中创建的Layer的API endpoint URL保持一致。我们部署的地址是:http://tm.arcgisonline.cn:8038/App101/ArcGIS2Layar/getpois。直接在浏览器里面打开这个地址,后面加上参数,就可以获取到数据。比如http://tm.arcgisonline.cn:8038/App101/ArcGIS2Layar/getpois?lon=116.397&lat=39.859&radius=1500,就可以获得经度116.397纬度39.8方圆1500米范围内的积水点数据。如下图所示:
3.5、测试Layer
完成上一小节的部署后,就可以测试我们在3.3小节中创建的Layer了。登录Layar,打开My Layers页面,如下图所示:
点击Test按钮,对图层进行测试,如下图:
需要注意的是,不同版本的API,数据接口有所差异,测试时选择最新的API版本(当前为7.0)。
测试页面使用Google地图,可以在地图上拖动小人图标确定地点,也可以在地图下面输入经纬度来确定位置。地图右边,通过Range Slider设置查询范围(100-5000米),还可以设置精度(我们在CP服务端实现未考虑精度问题)。Country code和Language可根据需要进行设置。
设置好必要的信息后,点击Load POIs,就会查询出POI点了。查询结果会在地图上显示,如上图所示。Console中会打印出一些信息帮助我们判断调用过程中出现的问题,同时右边会显示POI列表,如下图所示。
如果数据查询成功,那么恭喜,Layer已经测试通过了。如果出现问题,需要根据Console的提示信息,对服务器端代码或者部署环境、部署过程进行必要的调整和改进。
3.6、显示Layer
万事俱备!只要有一台Android手机或者iPhone安装了Layar,就可以浏览创建好的Layer了。下面以iPhone为例来说明。
首先打开Layar应用,由于测试Layer没有发布,需要登录才能访问。从首页进入Settings窗口,如下图左所示。点击Account登录(在Layar官网注册的账户)。Settings窗口中进入Options页面,这里开发人员可设置一个特定经纬度,使用这个固定位置,方便在室内没有GPS信号时依然能测试。
进入Layers,点击Test会列出所有处于测试状态的Layer,如上图右所示。
点击要测试的ArcGISTest Layer,应用会加载这个图层并进入AR模式,以现实增强的方式显示这个Layer的数据。下面是测试截图,第三张是在东直门桥附近进行实地测试的截图。
3.7、发布Layer
如果想把创建的Layer发布,供其他人使用,先要申请审批(Request approval),申请审批的Layer需要填写更加详细的信息。通过审批后,Layer就可以被所有Layar用户访问啦。具体请参考Layar官方说明。
4、总结
本文介绍了一个ArcGIS与现实增强相结合的简单示例,服务器端实现提供源代码下载(http://download.csdn.net/detail/arcgis_mobile/4639049)。您可以按照本文的说明进行尝试。如果没有外网服务器,您可以直接使用我们已经发布好的Layer API endpoint URL:http://tm.arcgisonline.cn:8038/App101/ArcGIS2Layar/getpois,您只需要在Layar网站创建账户、创建Layer,在Layer中引用上面的这个地址就可以了。
现实增强技术给我们带来了一种新的用户体验,一种新的交互方式。相信现实增强与GIS结合会成为新的研究热点,并且在行业应用发挥作用。
在现实增强应用Layar中显示ArcGIS数据(Ⅰ) http://blog.csdn.net/arcgis_mobile/article/details/8063089