在程序编写过程中,首先实现构造以下类供系统各模块调用:
(1)DBUtil:负责用户本地信息的存储与读取,提高系统运行效率。
(2)HttpPost:网络通信部分,负责信息的发送与收取。
(3)ParseXml:XML实现服务器端响应请求文件的解析。
(4)GPSManager/GSMManager:用户地理位置定位服务管理。
(5)MainView:实现虚拟图像及信息的生成及显示。
2.2各模块具体功能实现
(1)数据库处理实现
采用轻量级数据库Sqlite3。它具有零配置、自由共享、完整Unicode支援等特点。首次运行时,其能够自动在用户目录创建并生成数据文件。以后每次访问时,将首先读取本地信息,并在网络流畅后与网络数据同步。退出时自动保存用户信息。
(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上。 2/3 首页 上一页 1 2 3 下一页 尾页 |