王文強,王宏亮,蔡朝陽
(遼寧石油化工大學計算機與通信工程學院,撫順113001)
基于百度地圖的“樂游”軟件設計與實現?
王文強,王宏亮,蔡朝陽
(遼寧石油化工大學計算機與通信工程學院,撫順113001)
隨著人民生活水平的提高,自助旅游受到越來越多的關注。自助旅游需要對行程進行詳細的規劃,掌握路徑、景點、天氣、周邊環境等信息,并隨時獲得導航幫助以及查詢旅游進度、記錄旅游感悟,以此保障旅游的品質。面向自助旅游專門設計了一款基于百度地圖的“樂游”APP以滿足用戶的出行需要。該APP應用于android平臺,集成路徑規劃、路徑沿途天氣查詢、導航、軌跡追蹤以及游客周邊興趣點查詢等為一體,并且提供本地收藏功能,采用xml技術解析數據,對于用戶上傳的圖片信息采用記錄地址方式進行存儲,避免緩存圖片過多而形成數據冗余。
百度地圖;APP應用;路徑規劃;軌跡追蹤;興趣點查詢;感悟收藏
自助旅游是當下新興起的一種旅游方式,人們自己設計路線,自己安排旅途中的一切,自由、主動,行程中旅游感悟深刻,充滿艱辛而又富于詩情畫意。但是自助旅游中所涉及的吃、住、行、游、購、娛,所有事情全由自己安排,操作起來比較繁瑣,只有借助現代科技帶來的便捷,才能保證行程的圓滿。
隨著社會發展,目前全球的手機用戶數量已經超過了PC機的數量,而且手機數量正在快速增長,其中智能手機所占的比例越來越大[1]。智能手機及其應用已經成為了人們身邊不可或缺的一部分,特別是Android平臺借助于其開源免費,兼容性強等優點迅速占領了移動平臺市場的最大份額[2]。基于Android平臺的開發已經成為開發者們重點關注的領域[3-4]。各種地圖搜索引擎(百度地圖,高德地圖)雖然已經可以在多方面支持自助旅游,但是由于面向的游客過于龐大,針對旅行的專題較少,信息比較概略,難以充分表達旅游的專題信息,因此產生了基于地圖專門服務于自助旅游的集成APP的需求。
百度地圖API號稱永久免費,提供了面向游客定制個性化服務的功能,為實現旅游專題信息檢索和地圖服務創造了便捷[5],因此專門針對自助旅游愛好者開發了“樂游”軟件,為自助出游提供所需的必要幫助。
百度地圖API是一套為開發者免費提供的應用程序接口,包括JavaScript,ios,Android,其中百度地圖Android SDK適用于Android2.1及其以上版本設備。開發者可以使用SDK開發適用于Android系統移動設備的地圖功能,通過調用地圖SDK可以訪問百度地圖服務和數據,構建功能豐富、交互性強的百度地圖應用程序。百度地圖Android定位SDK是為Android移動端應用提供的一套簡單易用的LBS定位服務接口,專注于為廣大開發者提供最好的綜合定位服務,通過使用百度定位SDK,開發者可以輕松為應用程序實現智能、精準、高效的定位功能[6]。
綜合考察自助出游游客的需求,設計“樂游”APP其功能結構如圖1所示,功能模塊包括:
1.路徑規劃與跟蹤。在百度地圖提供的技術支持基礎上進行二次開發,提供自助出游游客旅游路徑規劃、導航功能并實時定位與追蹤旅游進度。
2.旅游小憩功能。面向游客旅游感悟,記錄旅游心得與評價,保存旅游沿途珍貴照片,同時方便游客查看、修改。
3.興趣點管理功能。通過熱力地圖實現周邊興趣點查詢,以及興趣點周邊的天氣情況查詢,方便游客了解周邊的旅游景點情況并導航出行。

圖1 “樂游”APP系統功能結構圖
系統設計基于Android平臺,利用Android SDK提供的功能支持與百度地圖數據庫服務器進行數據通信,系統架構見圖2所示。

圖2 基于百度地圖的APP系統架構
采用GPS、WIFI、基站、IP混合定位模式,借助Android定位SDK獲取定位信息,通過地理編碼將地球表面的地址坐標轉換為標準地址,實現對于游客位置的定位,在此基礎上調用百度地圖API實現游客所需功能服務。
4.1 定位技術
綜合定位功能指的是根據游客實際需求,返回游客當前所處位置的基礎定位服務,“樂游”軟件定位功能運行效果如圖3所示。
創建定位服務步驟如下:
1.初始化LocationClient類,在onCreatea方法中獲取LocationClient并為其添加注冊監聽函數。
2.配置定位SDK參數,設置定位模式(LocationMode),設置坐標類型,設置是否允許模擬GPS,設置是否需要POI結果等。
3.實現BDLocationListener接口。重寫on ReceiveLocation(BDLocation location)方法,用于定位請求回調函數(其中BDLocation表示定位結果),接收異步返回的定位結果。
4.開始定位:調用start()方法。

圖3 “樂游”APP定位服務
4.2 路徑規劃與導航
用于滿足游客出行前旅游線路規劃的需求。百度地圖導航SDK的代碼Jar包由Java源代碼編譯打包而成,具有路徑規劃和導航、自定義圖層,語音播報等功能。資源Jar包由導航所需的配置數據、基礎數據以及導航功能所需的布局、字符串等資源打包而成。So動態庫是由native代碼編譯而成,主要實現地圖導航、路線規劃等功能[7]。軟件運行效果如圖4所示。

圖4 “樂游”APP路徑規劃與導航
設計借助百度地圖路徑規劃與導航SDK代碼包實現:
1.創建一個Activity繼承Activity并實現On-MapClickListener和OnGetRoutePlanResultListener接口。
2.獲取游客輸入的地址信息,并初始化地圖控件。
3.創建一個RoutePlanSearch對象,添加設置路線檢索監聽者(setOnGetRoutePlanResultListener(OnGetRoutePlanResultListener listener))。
4.獲取游客選擇的路徑規劃方式(駕車,公交或步行)并向RoutePlanSearch實例添加設置出行方式。路徑規劃成功后,通過route.getAllStep()獲取Object對象數據,并根據出行方式(判定Object對象是那個類型的子對象)獲取百度地圖提供的出行路線。
5.導航(部分代碼)

4.3 路徑沿途天氣查詢
考慮到旅游過程中天氣因素對用戶出行的影響,為了讓用戶有更加良好的旅游感悟,提供了天氣查詢功能。該功能為用戶提供天氣查詢服務,讓用戶在使用過程中即時了解天氣的變化,提前做好應對工作,方便用戶出行需求。軟件運行效果如圖5所示。
實現過程:
1.利用百度地圖API建立一張地圖,展現中國全貌。
2.利用地圖API提供的本地搜索功能,根據提供的城市名稱搜索所處位置并在地圖上進行標記。
3.在各城市標記點上設計彈出窗口來顯示天氣信息。天氣信息的獲取則通過php腳本直接對百度的各城市天氣搜索頁面進行天氣信息的抓取。
4.解析網頁信息,將網頁信息存放在android頁面中。

圖5 “樂游”APP天氣查詢
4.4 興趣點查詢
游客出行存在興趣偏好,通過用戶輸入偏好的關鍵字查詢,為用戶展示周邊存在的興趣點,方便用戶的旅游規劃,以及行程中了解周邊旅游資源的分布。軟件運行效果如圖6所示。

圖6 “樂游”APP興趣點查詢
具體實現如下:
1.調用定位功能,獲取當前地點信息。
2.實例化一個PoiSearch類對象,并向該對象設置poi檢索監聽者setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener listener)。
3.創建SuggestionSearch對象,同樣設置監聽器。


4.監聽游客點擊的按鈕,并在OnClick方法中搜索周邊景區興趣點,其中city和place都是以字符串形式傳遞過來,實行周邊興趣點檢索。核心代碼如下:
mPoiSearch=PoiSearch.new Instance();//創建POI檢索實例。
4.5 熱力地圖查詢
游客在旅游路途中有景點熱度查詢需求,熱力地圖查詢為游客提供周邊景點熱度信息。百度地圖熱力圖是用不同顏色的區塊疊加在地圖上實時描述人群分布、密度和變化趨勢的一個產品,是基于百度大數據的一個便民出行服務。系統調用百度地圖api客觀的反應旅游區的熱門程度,以及人流量,方便游客提前做好規劃。軟件運行效果如圖7所示。

圖7 “樂游”APP熱力地圖查詢
實現步驟包括:
1.創建一個Handle對象,并在對象中實現handleMessage()方法。
2.創建一個Thread對象,并覆蓋線程當中的run方法,在run()方法中實例化heartMap,將游客的位置信息放入一個list對象當中。
3.調用該線程的start()方法 。發送一個empty消息。
4.游客信息用于接收Json消息,并將Json消息放到一個list集合中。在OnPause方法中,將地圖功能暫停,在OnResume方法中恢復地圖控件的使用。
4.6 軌跡追蹤
滿足游客旅游過程中隨時掌握當前旅游定位以及行程進度的需求,軟件運行效果如圖8所示。

圖8 “樂游”APP軌跡追蹤
實現過程由四步完成:
1.實例化軌跡服務客戶端,同時創建鷹眼服務Id。
LBSTraceClient client=new LBSTraceClient(getApplicationContext());
2.實例化軌跡服務,創建一個Trace對象開啟軌跡服務回調接口arg0:消息編碼,arg1軌跡服務推送接口用于接收服務端推送消息,arg0:消息類型,arg1:消息內容,復寫onTraceCallback()和on TracePushCallback()方法。
3.開啟軌跡追蹤,并調用繪制軌跡。
client.startTrace(trace,startTraceListener);
4.結束軌跡追蹤服務。
創建一個OnStopTraceList接口類型的對象,并復寫其中的onStopTraceSuccess()方法和on-StopTraceFailed()方法,在客戶端調用stopTrace(trace stopTraceListener)方法。
其中繪制軌跡核心代碼如下:

4.7 旅游感悟收藏
采用xml存儲數據,側重于本地實現。在沒有消耗數據流量的基礎上,保存游客的旅游心得以及圖片信息,并加以管理,打造游客自己的專屬功能。軟件運行效果如圖9所示。

圖9 “樂游”APP旅游感悟收藏
系統采取xml文件方式保存游客感悟及照片,采用XmlSerializer和XmlPullParser對xml文件進行解析和創建修改[8],獲取游客在手機上存放的信息,通過游客的點擊事件實現游客需要的上傳、瀏覽和管理功能。

具體實現步驟包括:
1.為游客上傳部件添加事件監聽器,在Onclick()方法中添加用戶上傳事件。
2.獲取游客的位置信息,通過DBLocation對象的getAddrStr()方法,獲取用戶的位置信息。
3.接收游客的旅游箴言以及上傳圖片的src地址,并將src通過特殊符號進行連接,使之形成一個字符串,該字符串用于存儲用戶的上傳圖片地址。在瀏覽用戶旅游感悟時,獲取該字符串,并加以切割,以便展示用戶旅游感悟附帶的圖片信息。
4.獲取當前的時間存儲便于遍歷排序。
5.判斷存放游客信息的xml文件是否存在,若存在,就向該文件添加元素節點,若不存在就創建該文件,根據XmlPullParser提供的方法解析xml文件,添加該節點。操作成功后銷毀該Activity。
4.8 我的旅游日記管理
用戶頁面采用類似網格布局方式,圖片下方顯示游客旅游感悟,如圖10所示。

圖10 “樂游”APP旅游日記管理
實現過程:
1.查看游客信息文件是否存在,若不存在,則給出提示信息,反之,則采用XmlPullParser技術遍歷該xml文件。
2.獲取解析對象Xm lPullParser reader=XML. newPullParser()。
3.創建一個集合,將遍歷到的xm l屬性寫入集合中。
4.對游客輸入的圖片地址加以切割,得到游客文件的真實地址。
5.將游客的旅游感悟顯示在界面中。
“樂游”APP系統基于百度地圖API,Android平臺,結合xml技術開發而成,功能上基本滿足了自助旅游游客的行程需要。特別是個性化地定制了旅游感悟和照片的本地保存以及管理功能,打造了屬于游客出游的專屬空間。下一步,將在此應用基礎上進一步調研游客需求,添加新功能以及將已有功能進一步整合,以期實現軟件的真正實用化。
[1] 熊剛.基于Android的智能手機的設計與實現[D].武漢:武漢理工大學,2010. Xiong Gang.Design and implementation of smartmobile phone based on Android[D].Wuhan University of Technology,2010.
[2] 劉衛國,姚昱禹.Android的架構與應用開發研究[J].信息與電腦,2012(5):55-56. Liu Weiguo,Yao Yuyu.Study of Android's Architecture and Its Application Development[J].China Computer&Communication,2012,5:55-56.
[3] 楊豐盛.Android應用開發揭秘[M].北京:機械工業出版社,2010. Yang Fengsheng.Android Unleashed[M].Beijing:China Machine Press,2010.
[4] 明日科技.Android從入門到精通[M].北京:清華大學出版社,2012. Tomorrow Technology Co.,Ltd.Android from entry to themaster[M].Tsinghua University Press,2012.
[5] 王紅崧,周海晏.基于百度地圖API的旅游地理信息系統開發[J].現代計算機,2012(8):60-63. Wang Hongsong,Zhou Haiyan.Development of Tourism Geographic Information System Based on Baidu Map API[J].Modern computer,2012,8:60-63.
[6] 殷玥,劉偉,郭東恩.基于百度地圖API的房地產展示系統的實現[J].軟件導刊,2012,11(9):163-164. Yin Yue,Liu Wei,Guo Dongen.Implementation of Real Estate Trade System based on Baidu API[J].Software Guide,2012,11(9):163-164.
[7] 余志龍,陳昱勛,鄭名杰,陳小風,著.Google Android SDK開發范例大全(第3版)[M].北京:人民郵電出版社,2011. Yu Zhilong,Chen Yuxun,Zheng Mingjie,Chen Xiaofeng. Google Android SDK development paradigm(3rd Edition)[M],Beijing:Posts&Telecom Press,2011.
[8] Kathy Sierra&Bert Bates.First Head Of Java[M].北京:中國電力出版社,2007. Kathy Sierra&Bert Bates.First Head Of Java[M]. Beijing:China Electric Power Press,2007.
Design and Im p lementation of Le Tour Software Based on the Baidu Map
Wang Wenqiang,Wang Hongliang,Cai Zhaoyang
(School of Computer and communication enginering,Liaoning Shihua University,Fushun 113001,China)
With the improvement of people's living standards,the self-service travel attractsmore and more attention,which requires some information such as detailed itinerary planning,path,attractions,weather,other surrounding environment,access navigate help,query travel schedule,tourism experience record and so on.Le-Tour APP is designed to improve the quality of tourism based on the Baidumap for demands of self-service travel,which is based on Android platform and integrated with path planning,weather query along path way,navigation,trajectory tracking,tourists interest query,and provides the local collection function.XML technology is used to resolve the data and store travel tips and photos by recording picture address storage to prevent data redundancy because of too much memory and the formation.
Baidu map;APP Application;Route plan;Trajectory tracking;Point of interest query;Sentiment collection
10.3969/j.issn.1002-2279.2016.06.010
TP311.1
A
1002-2279(2016)06-0038-06
遼寧省教育廳資助科研項目(L2014153)
王文強(1994-),男,湖北省仙桃市人,遼寧石油化工大學本科生,主研方向:軟件工程等。
王宏亮(1971-),男,遼寧省撫順市人,副教授,主研方向:計算機集成制造、軟件工程。
2016-04-26