针对几种传统定位技术应用的局限性,本文借助于百度地图API以及定位SDK,结合多种定位技术,采用混合定位的方式获取移动终端的地理位置,并基于此设计了一个无线购物LBS系统。移动客户端通过该应用除了实现无线购物功能外,还实现了移动用户的地理位置定位、路线导航及选择个性化服务。系统服务器为客户端提供无线购物服务,并实现管理员后台管理和维护操作功能。
1LBS系统架构与方案设计
LBS应用系统通常由移动终端、内容提供商、通信网络和定位组件[3]4个部分组成,如图1所示。移动终端是连接网络能够进行语音和数据通信的手持电子设备;内容提供商是为移动终端提供数据服务的载体,如数据库服务器、Web服务器和应用服务器等;通信网络是移动终端与内容提供商之间进行数据交互的通道;定位组件是为了实现移动终端的定位导航功能,如GPS定位卫星、移动网络基站和无线网络等。
系统服务器利用MyEclipse集成开发环境,将服务部署在ApacheTomcat应用服务器上,后台数据使用MySQL以及Navicat数据库管理工具以便后台数据的存储和维护,通过JDBC的方式进行数据访问。客户端基于Android平台通过XML语言进行用户的UI设计,用Java语言设计Activity、Service等组件以及HTTP通信接口,以实现客户端与服务器端的信息交互。
2系统实现及关键技术
2.1服务器端设计模型
无线购物系统服务器端搭载在ApacheTomcat服务器上,采用MVC设计模型,如图3所示。通过JavaBean封装数据作为数据模型,JSP和HTML等技术完成服务器端Web页面的设计,利用Java语言设计Servlet作为控制器,控制着整个服务器端的响应并且完成客户端用户请求处理。
2.2系统定位原理及过程
利用百度地图API开发过程中用到的几个主要关键类如下。
(1)MapView:一个显示地图的视图,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图;
(2)GeoPoint:表示一个地理坐标点,存放经度和纬度,以微度的整数形式存储;
(4)LocationData:用户位置信息,存放信息包含了定位精度、经纬度坐标、GPS定位卫星数目和定位时速度等;
(5)LocationClient:定位SDK核心类,实现定位参数设置、注册监听函数及发起定位功能;
(6)BDLocation:封装了定位SDK的定位结果,通过该类用户可以获取位置的坐标和精度半径等信息。
mLocClient=newLocationClient(this);//定位初始化
locData=newLocationData();
mLocClient.registerLocationListener(myListener);
LocationClientOptionoption=newLocationClientOption();
option.setOpenGps(true);//打开GPS
option.setCoorType("bd09ll");//设置坐标类型
mLocClient.setLocOption(option);
mLocClient.start();
myLocationOverlay=newlocationOverlay(mMapView);
//定位图层初始化
myLocationOverlay.setData(locData);//设置定位数据
mMapView.getOverlays().add(myLocationOverlay);
//加定位图层
myLocationOverlay.enableCompass();
mMapView.refresh();//修改定位数据后刷新图层生效
2.3JDBC数据库访问技术
服务器端的后台利用MySQL关系型数据库,存储着用户信息、商品信息、后台管理员信息等数据,服务器端利用JDBC(JavaDatabaseConnectivity)方式连接关系型数据库,通过SQL结构化查询语言来实现数据库数据的增删改查操作。JDBC编程步骤大致分为以下几步:(1)加载数据库驱动;(2)通过DriverManager获取数据库连接;(3)通过Connection对象创建Statement对象;(4)使用Statement执行SQL语句;(5)获取操作结果集;(6)回收数据库资源,包括关闭ResultSet、Statement和Connection对象等资源。
这样,通过JDBC访问方式实现对主流数据库的操作。并且利用JDBC操作数据库可以实现跨数据库、跨平台,具有非常优秀的可移植性能。
2.4服务器与客户端HTTP通信
publicstaticStringgetRequest(Stringurl)throwsException{
HttpGetget=newHttpGet(url);//GET请求方式
returnresult;
}
returnnull;
publicstaticStringpostRequest(Stringurl,Map
HttpPostpost=newHttpPost(url);//POST请求方式
List
for(Stringkey:rawParams.keySet()){//封装请求参数
params.add(newBasicNameValuePair(key,rawParams.get(key)));
……
3实验结果与分析
无线购物LBS系统服务器端在MyEclipse8.5集成环境中开发,部署于Tomcat7.0应用服务器,数据库采用MySQL5.5;客户端由Eclipse集成开发平台和AndroidADT组成,利用Android智能手机对所开发的系统进行测试。
用户通过无线购物应用获取到感兴趣的商家地址以及商品详细信息,如图5(a)所示。移动用户向定位服务器发起定位请求,获取到移动终端的当前位置,如图5(b)所示,百度定位SDK将获取得到的定位信息通过定位图层显示在终端上,并显示出了用户的当前经纬度信息。系统还为用户和商家之间提供了合理的驾车导航路线,用户可以选择送货上门服务或者到店取货服务,如图5(c)所示。
本文基于Android智能手机平台,利用百度地图API及定位SDK结合多种定位技术设计并实现了一个无线购物LBS应用。移动用户借助于本系统可实现地理位置混合定位、地图导航,并向服务器获取基于位置的无线购物服务。
参考文献
[1]雷地球,罗海勇,刘晓明.一种基于Wi-Fi的室内定位系统设计与实现[C].第5届全国普适计算学术会议,2010(10):77-79.
[2]干国强.导航与定位——现代战争的北斗星[M].北京:国防工业出版社,2000.
[3][西]RichardFerraro,[土]MuratAktihanoglu,LBS应用开发[M].李丽,译.北京:人民邮电出版社,2012.
[4]周傲英,杨彬,金澈清,等.基于位置的服务:架构与进展[J].计算机学报,2011,34(7):1156-1157.
[5]顾聪,陈益强,刘军发,等.基于Android平台的室内LBS系统设计与实现[J].计算机工程与设计,2012,33(1):396-400.
[6]RETSCHERG,HECHTT.InvestigationoflocationcapabilitiesoffourdifferentsmartphonesforLBSnavigationapplications[C].2012InternationalConferenceonIndoorPositioningandIndoorNavigation,2012:1-6.
[7]KUMARS,QADEERMA,GUPTAA.LocationbasedservicesusingAndroid[C].IEEEInternationalConferenceonInternetMultimediaServicesArchitectureandApplications(IMSAA),2009:1-5.
[8]KUSHWAHAA,HUSHWAHAV.LocationbasedservicesusingAndroidmobileoperatingsystem[J].InternationalJournalofAdvancesinEngineering&Technology,2011(3):14-20.