基于增强现实技术的移动LBS系统的设计与实现_移动应用-论文
2014-09-26 10:30 来源: 互联网 作者:佚名 浏览次数 1905
(2)用户定位模块
此模块是LBS系统应用的核心所在。用于LBS采集用户当前位置空间信息的基础参数及相应处理方法。分为GPS定位与GSM基站定位两部分,二者作为交叉辅助的功能模块,在运行过程中优先调取GPS进行精确定位,无法开启GPS时利用GSM基站作为后援启用。GPS模块实现的主要实现代码如下:
publicGPSManager(){
locationManager=(LocationManager)Context.getSystemService(Context.LOCATION_SERVICE);
//通知操作系统,需要使用定位服务
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,LocationListener);
//设置定位数据的提供者可以是GPS卫星或者GSM基站
LocationListenermLocationListener=newLocationListener(){
publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){}
};//监听器在地理位置、提供者等发生变化时做出相应的响应动作
}
(3)网络信息处理模块
客户端采用ArrayList格式向服务器端发出数据请求,反馈得到XML数据流。系统采用DOM解析数据流。DOM将XML文档作为树形结构,而树叶被定义为节点,实现如下:①得到DOM解析器的工厂实例DocumentBuilderFactory.newInstance();②通过DocumentBuilderFactory实例的静态方法得到DOM解析器;③把待解析的XML文档转为输入流,以便DOM解析器解析;④解析输入流得到一个org.w3c.dom.Document对象,以后的处理对Document对象进行;⑤得到XML文档的根节点,获取内容。
(4)AR显示模块
调用终端系统函数,采用CameraPreview作为背景,计算信息与用户所处地理位置距离和角度。
3LBS服务器平台的实现
3.1分布组件开发和框架的使用
平台开发采用Struts2框架进行架构,完成业务逻辑设计。为实现LBS应用数据处理平台与数据库交换数据,实现了一套访问DAO(DataAccessObjects)。采用Servlet调用响应函数生成轻量级的数据交换格式JSON(JavaScriptObjectNotation)数据包,实现信息在GoogleMap上的动态显示。
如图3显示,Web前端页面用于实现数据呈现,所有HTTP请求都被传送到Web应用服务器的中心控制器ActionServlet,分发到不同的Action中进行处理。在处理过程中,调用不同的数据模型完成信息处理,再由中心控制器实现不同导向。LBSAPI应用服务器同样采用J2EE构架,提供手机客户端访问LBSAPI服务器的统一函数接口,根据不同请求,返回相应数据信息,完成手机客户端与服务器的数据交换。
图3Struts2框架构成
为实现对象模型和关系模型的分离,在Web应用服务器实现中,使用了类似Hibernate的数据库访接口,实现数据分离,提高服务器功能的高内聚。如UserDao实现用户的信息处理,当用户登录LBS-Web服务器时,会初始化UserDao对象实现对象模型和数据模型转换。TagDao用于处理用户发布的媒体信息的对象模型和数据模型的转换。
3.2GoogleAPI的调用和信息动态显示
GoogleMap调用方法,采用Javascript实现,完成了数据在地图上基于地理位置的显示。为保证服务器的数据传输到Map上,先需要在Servlet上产生JSON数据包,发送到前端页面,再使用脚本进行解析,最后调用相应的API发布数据。
脚本解析JSON数据方法如下,在前端页面解析JSON数据包获得相应的数据,xmlHttp=newXMLHttpRequest()生成对象,通过xmlHttp.responseText获得从服务器返回的数据,随后由脚本进行解析,最后使用GoogleMapAPI的map对象,调用方法生成Maker显示在Googlemap上。
JSON数据包的解析和GoogleMap显示的部分代码如下:
if(xmlHttp.readyState==4){
vartags=eval('('+xmlHttp.responseText+')');
varmap=newGMap2(document.getElementById("map_canvas"));//初始化地图
functioncreateMarker(latlng,number){}//生成一个Maker
//根据JSON的包含的对象个数生成Makers,显示在地图上
for(vari=0;i
varlatlng=newGLatLng(tags[i].lat,tags[i].lng);
map.addOverlay(createMarker(latlng,i+1));
}
}
图4客户端实现效果图5Web端实现效果
4结语
本文设计并实现的如图4、5所示基于增强现实的移动LBS系统,能满足客户使用位置服务并使用现实观感增强信息获取质量的需求,整个系统采用Java语言实现,具有良好的可移植性、可扩展性和平台无关性,利用J2EE技术搭建的服务器数据库平台,具有良好的系统API,并且全面支持XML/HTML语言进行数据请求,便于其他移动终端平台的调用和扩展。部署在Android平台上的移动客户端软件是对增强现实技术和终端传感装置的合理运用。此外,系统设计界面友好,具有良好的用户体验,不仅具有一定的实用价值,而且将对LBS平台的业务开发和科学管理起到积极作用。
参考文献
1 王子桢,孙亚夫. 移动定位业务的开发[J]. 微计算机应用, 2006(1):23-25.
2 Buehler K. OGC and LBS over view[OL]. http://www.openls.org/dvdl/tsl/, 2002.
3 周雅,闫达远. 增强现实系统显示技术探讨[J].计算机工程与应用, 2003.
4 ObjectFX. Location- based service providers[OL]. http://www.objectfx.com/solution/web.asp, 2002.
5 Daniel W. Handheld Augmented Reality[D]. Graz University of Technology, 2007.
6 孙敏, 陈秀万, 张飞舟. 增强现实地理信息系统[J]. 北京大学学报, 2004.