基于位置服務(wù)LBS(Location Based Service)是移動終端利用通信運營商的移動通信網(wǎng)絡(luò)或者其他定位方式(GPS、Wi-Fi等)來獲取移動終端用戶的地理位置信息,應(yīng)用開發(fā)商基于此用戶位置信息,為用戶提供更多的增值服務(wù),如無線訂餐、打車、社區(qū)交友等。其中典型的應(yīng)用有國外的Foursquare、Gowalla、Whrrl等,國內(nèi)則有大眾點評、微信、易信等。
LBS應(yīng)用的核心是通過定位技術(shù)來獲取移動終端的地理位置信息,通常將定位技術(shù)主要分為基于網(wǎng)絡(luò)的定位技術(shù)和基于移動終端定位技術(shù)兩大類。常見的基于網(wǎng)絡(luò)的定位技術(shù)包括蜂窩網(wǎng)絡(luò)中的到達(dá)時間TOA、到達(dá)角度AOA、到達(dá)時間差TDOA和Wi-Fi無線系統(tǒng)中基于信號強度RSSI定位,RSSI包括信號強度指紋定位和信號強度建模定位兩種方法。Microsoft設(shè)計的RADAR系統(tǒng)是一個典型的基于信號強度指紋分析的定位系統(tǒng),而參考文獻(xiàn)則采用一種基于權(quán)值選擇的定位策略,由于Wi-Fi定位范圍有限,常用于室內(nèi)定位;诮K端的定位技術(shù)通常有衛(wèi)星導(dǎo)航定位GPS和網(wǎng)絡(luò)輔助的GPS定位等,它們是獲取室外地理位置的有效方式。GPS系統(tǒng)根據(jù)星歷參數(shù)EPH和歷書參數(shù)ALM測算到衛(wèi)星與用戶之間的相對位置,借助于導(dǎo)航算法最小二乘法或者卡爾曼濾波法計算得到用戶的地理位置。但GPS衛(wèi)星信號不容易穿透各種復(fù)雜的建筑物,僅僅適用于室外定位并且初次定位時間長。
針對幾種傳統(tǒng)定位技術(shù)應(yīng)用的局限性,本文借助于百度地圖API以及定位SDK,結(jié)合多種定位技術(shù),采用混合定位的方式獲取移動終端的地理位置,并基于此設(shè)計了一個無線購物L(fēng)BS系統(tǒng)。移動客戶端通過該應(yīng)用除了實現(xiàn)無線購物功能外,還實現(xiàn)了移動用戶的地理位置定位、路線導(dǎo)航及選擇個性化服務(wù)。系統(tǒng)服務(wù)器為客戶端提供無線購物服務(wù),并實現(xiàn)管理員后臺管理和維護(hù)操作功能。
1.LBS系統(tǒng)架構(gòu)與方案設(shè)計
LBS應(yīng)用系統(tǒng)通常由移動終端、內(nèi)容提供商、通信網(wǎng)絡(luò)和定位組件4個部分組成,如圖1所示。移動終端是連接網(wǎng)絡(luò)能夠進(jìn)行語音和數(shù)據(jù)通信的手持電子設(shè)備;內(nèi)容提供商是為移動終端提供數(shù)據(jù)服務(wù)的載體,如數(shù)據(jù)庫服務(wù)器、Web服務(wù)器和應(yīng)用服務(wù)器等;通信網(wǎng)絡(luò)是移動終端與內(nèi)容提供商之間進(jìn)行數(shù)據(jù)交互的通道;定位組件是為了實現(xiàn)移動終端的定位導(dǎo)航功能,如GPS定位衛(wèi)星、移動網(wǎng)絡(luò)基站和無線網(wǎng)絡(luò)等。
圖1 系統(tǒng)架構(gòu)
利用混合定位依據(jù)實現(xiàn)Android智能手機無線定位后,為移動用戶提供無線購物功能。無線購物系統(tǒng)基于C/S體系架構(gòu),其中服務(wù)器端主要實現(xiàn)用戶信息和商品信息維護(hù)、處理客戶端發(fā)來的HTTP請求以及實現(xiàn)管理員后臺操作;手機客戶端實現(xiàn)用戶注冊登錄、商品瀏覽、購買、評價以及用戶地理位置定位和線路導(dǎo)航功能,如圖2所示。另外,客戶端還將實現(xiàn)地圖加載、地圖瀏覽和地圖查詢功能。
圖2 設(shè)計方案圖
系統(tǒng)服務(wù)器利用MyEclipse集成開發(fā)環(huán)境,將服務(wù)部署在Apache Tomcat應(yīng)用服務(wù)器上,后臺數(shù)據(jù)使用MySQL以及Navicat數(shù)據(jù)庫管理工具以便后臺數(shù)據(jù)的存儲和維護(hù),通過JDBC的方式進(jìn)行數(shù)據(jù)訪問?蛻舳嘶贏ndroid平臺通過XML語言進(jìn)行用戶的UI設(shè)計,用Java語言設(shè)計Activity、Service等組件以及HTTP通信接口,以實現(xiàn)客戶端與服務(wù)器端的信息交互。
2.系統(tǒng)實現(xiàn)及關(guān)鍵技術(shù)
2.1 服務(wù)器端設(shè)計模型
無線購物系統(tǒng)服務(wù)器端搭載在Apache Tomcat服務(wù)器上,采用MVC設(shè)計模型,如圖3所示。通過Java Bean封裝數(shù)據(jù)作為數(shù)據(jù)模型,JSP和HTML等技術(shù)完成服務(wù)器端Web頁面的設(shè)計,利用Java語言設(shè)計Servlet作為控制器,控制著整個服務(wù)器端的響應(yīng)并且完成客戶端用戶請求處理。
圖3 系統(tǒng)MVC設(shè)計模型
MVC設(shè)計模型將系統(tǒng)服務(wù)分成Model、View和Controller 3個基本部分,將系統(tǒng)業(yè)務(wù)邏輯與數(shù)據(jù)顯示分離,從而提高應(yīng)用系統(tǒng)的可擴展性和維護(hù)性。例如管理員登錄系統(tǒng)后向Servlet發(fā)送請求,Servlet將請求參數(shù)封裝至Java Bean中實現(xiàn)相關(guān)數(shù)據(jù)更新,根據(jù)請求類型查詢后臺數(shù)據(jù)庫,填充查詢結(jié)果到相應(yīng)的視圖頁面并顯示在瀏覽器中,以實現(xiàn)管理員對無線購物系統(tǒng)的管理和維護(hù)。
2.2 系統(tǒng)定位原理及過程
利用百度地圖API實現(xiàn)移動終端的混合定位,首先需把百度地圖的開發(fā)包locSDK.jar文件以及與定位相關(guān)的liblocSDK.so文件導(dǎo)入工程中。移動終端的混合定位過程為LBS應(yīng)用程序通過定位SDK發(fā)起定位請求,定位SDK收到請求后根據(jù)定位因素,即終端的網(wǎng)絡(luò)狀態(tài)(如GPS信號、Wi-Fi信號或者基站信號等)生成相應(yīng)的定位依據(jù),將定位依據(jù)發(fā)送至定位服務(wù)器,服務(wù)器處理定位請求后將定位結(jié)果經(jīng)由定位SDK最終回送給LBS應(yīng)用程序,為移動用戶提供必要的地理位置信息和導(dǎo)航路線信息,如圖4所示。
圖4 系統(tǒng)定位原理及過程
利用百度地圖API開發(fā)過程中用到的幾個主要關(guān)鍵類如下。
(1)Map View:一個顯示地圖的視圖,當(dāng)被焦點選中時,它能捕獲按鍵事件和觸摸手勢去平移和縮放地圖;
(2)GeoPoint:表示一個地理坐標(biāo)點,存放經(jīng)度和緯度,以微度的整數(shù)形式存儲;
(3)MKEvent:地圖事件類,主要功能是實現(xiàn)網(wǎng)絡(luò)連接、網(wǎng)絡(luò)數(shù)據(jù)驗證和授權(quán)驗證等;
(4)LocationData:用戶位置信息,存放信息包含了定位精度、經(jīng)緯度坐標(biāo)、GPS定位衛(wèi)星數(shù)目和定位時速度等;
(5)LocationClient:定位SDK核心類,實現(xiàn)定位參數(shù)設(shè)置、注冊監(jiān)聽函數(shù)及發(fā)起定位功能;
(6)BDLocation:封裝了定位SDK的定位結(jié)果,通過該類用戶可以獲取位置的坐標(biāo)和精度半徑等信息。
移動用戶終端將依據(jù)實時的網(wǎng)絡(luò)情況采用混合定位方式返回用戶的地理位置信息。在進(jìn)行定位開發(fā)時,Manifest.xml配置文件必須聲明應(yīng)用程序的使用權(quán)限如Wi-Fi、Internet、Network等,移動客戶端定位的部分示例代碼如下。
mLocClient=new LocationClient(this); //定位初始化
locData=new LocationData();
mLocClient.registerLocationListener(myListener);
LocationClientOption option=new LocationClientOption();
option.setOpenGps(true);//打開GPS
option.setCoorType("bd09ll"); //設(shè)置坐標(biāo)類型
mLocClient.setLocOption(option);
mLocClient.start();
myLocationOverlay=new locationOverlay(mMapView);
//定位圖層初始化
myLocationOverlay.setData(locData); //設(shè)置定位數(shù)據(jù)
mMapView.getOverlays().add(myLocationOverlay);
//加定位圖層
myLocationOverlay.enableCompass();
mMapView.refresh();//修改定位數(shù)據(jù)后刷新圖層生效
2.3 JDBC數(shù)據(jù)庫訪問技術(shù)
服務(wù)器端的后臺利用MySQL關(guān)系型數(shù)據(jù)庫,存儲著用戶信息、商品信息、后臺管理員信息等數(shù)據(jù),服務(wù)器端利用JDBC(Java Database Connectivity)方式連接關(guān)系型數(shù)據(jù)庫,通過SQL結(jié)構(gòu)化查詢語言來實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的增刪改查操作。JDBC編程步驟大致分為以下幾步:(1)加載數(shù)據(jù)庫驅(qū)動;(2)通過DriverManager獲取數(shù)據(jù)庫連接;(3)通過Connection對象創(chuàng)建Statement對象;(4)使用Statement執(zhí)行SQL語句;(5)獲取操作結(jié)果集;(6)回收數(shù)據(jù)庫資源,包括關(guān)閉ResultSet、Statement和Connection對象等資源。
這樣,通過JDBC訪問方式實現(xiàn)對主流數(shù)據(jù)庫的操作。并且利用JDBC操作數(shù)據(jù)庫可以實現(xiàn)跨數(shù)據(jù)庫、跨平臺,具有非常優(yōu)秀的可移植性能。
2.4 服務(wù)器與客戶端HTTP通信
在無線購物系統(tǒng)中,客戶端在注冊登錄、瀏覽和購買商品時必須將用戶信息及商品信息封裝后向服務(wù)器端發(fā)起請求,以得到服務(wù)器端的響應(yīng)數(shù)據(jù)。HTTP協(xié)議是實現(xiàn)客戶端與服務(wù)器端數(shù)據(jù)交互和通信的主要途徑?蛻舳送ㄟ^GET和POST兩種請求方式向Web服務(wù)器發(fā)送請求。服務(wù)器端控制器Servlet將根據(jù)客戶端發(fā)起的請求類型調(diào)用不同的響應(yīng)函數(shù)對客戶端請求進(jìn)行相應(yīng)處理。Web服務(wù)器將處理結(jié)果回送到客戶端進(jìn)行界面更新,客戶端發(fā)送HTTP請求的Java示例代碼如下。
public static HttpClient httpClient=new DefaultHttpClient();
public static String getRequest(String url) throws Exception{
HttpGet get=new HttpGet(url); //GET請求方式
HttpResponse httpResponse=httpClient.execute(get);
if(httpResponse.getStatusLine().getStatusCode()==200){
String result=EntityUtils.toString(httpResponse.getEntity());
return result;
}
return null;
}
public static String postRequest(String url,Map<String,String> rawParams)throws Exception{
HttpPost post = new HttpPost(url); //POST請求方式
List<NameValuePair> params=new arrayList<NameValuePair>();
for(String key:rawParams.keySet()) {//封裝請求參數(shù)
params.add(new BasicNameValuePair(key,rawParams.get(key)));
}
……
return null;
}
3.實驗結(jié)果與分析
無線購物L(fēng)BS系統(tǒng)服務(wù)器端在MyEclipse 8.5集成環(huán)境中開發(fā),部署于Tomcat 7.0應(yīng)用服務(wù)器,數(shù)據(jù)庫采用MySQL 5.5;客戶端由Eclipse集成開發(fā)平臺和Android ADT組成,利用Android智能手機對所開發(fā)的系統(tǒng)進(jìn)行測試。
用戶通過無線購物應(yīng)用獲取到感興趣的商家地址以及商品詳細(xì)信息。移動用戶向定位服務(wù)器發(fā)起定位請求,獲取到移動終端的當(dāng)前位置,百度定位SDK將獲取得到的定位信息通過定位圖層顯示在終端上,并顯示出了用戶的當(dāng)前經(jīng)緯度信息。系統(tǒng)還為用戶和商家之間提供了合理的駕車導(dǎo)航路線,用戶可以選擇送貨上門服務(wù)或者到店取貨服務(wù)。
本文基于Android智能手機平臺,利用百度地圖API及定位SDK結(jié)合多種定位技術(shù)設(shè)計并實現(xiàn)了一個無線購物L(fēng)BS應(yīng)用。移動用戶借助于本系統(tǒng)可實現(xiàn)地理位置混合定位、地圖導(dǎo)航,并向服務(wù)器獲取基于位置的無線購物服務(wù)。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:一種基于無線定位技術(shù)的LBS應(yīng)用
本文網(wǎng)址:http://www.ezxoed.cn/html/solutions/14019318167.html