梁碧瑩 莫琦 蔡家歡
(廣東石油化工學院,廣東茂名 525000)
當今,互聯(lián)網(wǎng)地圖的應用已經(jīng)越來越廣泛,其提供的信息和搜索服務給廣大人民的工作和生活帶來極大的便利。由于人們生活水平的提高,對出行游玩的需求日益提升,地圖軟件新功能開發(fā)迫在眉睫。旅行路線規(guī)劃代表著未來生活以及商業(yè)方式的發(fā)展方向之一,其應用和推廣將給社會和經(jīng)濟帶來極大的效益。
傳統(tǒng)的地圖軟件功能單一,多數(shù)只能提供兩地點間的路線規(guī)劃。其次,用戶出行時需要一點點搜索目的地美食、景點、酒店、交通等信息,這些信息的獲取會消耗很多時間和精力,同時缺少一種有效方式去組織這些凌亂信息。使用戶無法高效靈活的出行。
圖1 系統(tǒng)總體框架圖Fig.1 Overall framework of the system
本應用提出一種景點推薦和路線規(guī)劃相結(jié)合的新型模式,在精準推薦中,將用戶搜索中所產(chǎn)生的地理位置數(shù)據(jù)記錄與分析建立用戶個性數(shù)據(jù)庫。在行程規(guī)劃中,用戶可以先根據(jù)自身喜好選擇所提供的路線,再根據(jù)個人的需求對路線中的部分安排進行更改,比如出行地點的替換,出行順序的調(diào)整等,生成一條用戶專屬的個性化路線。生成的行程單中包含多個地點間的出行方式比如駕車、步行、公共交通等導航。給予用戶出行效率提高和服務智能化的優(yōu)質(zhì)使用體驗。
系統(tǒng)采用Android9.0平臺,使用Java編程語言,采用Android studio開發(fā)工具,使用Google開發(fā)工具包Android sdk。本系統(tǒng)主要是客戶端,包括城市介紹、周邊人文景物的推薦、景點添加,以及調(diào)用地點坐標,通過百度地圖接口[1]實現(xiàn)路線的規(guī)劃。具體系統(tǒng)總體框架如圖1所示。
該APP的總體結(jié)構(gòu)是以三個Activity(活動)外加三個Fragment(碎片)構(gòu)成的。如圖2所示。
初始化的Activity,由于調(diào)用了百度地圖的SDK[2],所以在使用之前需要在Activity的OnCreate方法里面對SDK進行初始化,重點是向百度申請APIkey、以及B Map Manager類的初始化,對于后續(xù)的地圖搜索都是基于這個類操作的,當app退出前臺時,在OnDestroy方法里面對BMapManager類進行銷毀,然后需要將BMapManager設置為靜態(tài)類,用于首頁、推薦、行程Fragment的調(diào)用。其次,在Activity里面,添加了動態(tài)權(quán)限,用于App啟動時,自動檢測該App是否打開定位權(quán)限,若沒有,將跳轉(zhuǎn)到設置里面讓用戶打開GPS定位。
圖2 APP 框架圖Fig.2 App framework
第一個界面是是首頁的Fragment,其功能是推薦一些所在位置附近的景點玩樂,周邊美食,博物館與藝術(shù)館等。具體實現(xiàn)是使用POI的搜索信息,達到向用戶精準推薦。主要使用BDLocationListener的接口,重寫內(nèi)部onReceiveLocation方法,用于獲取當前位置的經(jīng)緯度,使用PoiSearch類的searchNearBy方法,將經(jīng)緯度、輸入以自己定位為中心的半徑,可以是100m或者是1000m、以及人文歷史或博物館等數(shù)據(jù)放入到PoiNearbySearchOption類,再將該類傳進searchNearBy方法中,就可以獲取附近景點玩樂、周邊美食的數(shù)據(jù),再對數(shù)據(jù)進行模塊化分類保存,用戶通過點擊不同模塊,可以跳轉(zhuǎn)到推薦的Fragment里面,相關(guān)內(nèi)容在推薦的Fragment界面中詳細顯示。
第二個是推薦的Fragment,里面的地理信息列表會根據(jù)推薦的Fragment點擊的內(nèi)容不同而改變,在每一行地理信息中都會有添加至行程標志, 用于添加到行程的Fragment里面,添加的信息保存是該地點的經(jīng)緯度。關(guān)于地點的詳細描述,是通過點擊其中一個地點之后實現(xiàn)跳轉(zhuǎn)到第二個Activity(詳細內(nèi)容顯示),此時需要在onCreate方法里面初始化LocationClient類,實現(xiàn)BDAbstract LocationListener的接口,并實現(xiàn)onReceiveLocation方法,獲取詳細的地理位置信息。
第三個界面是行程的Fragment,該界面的功能是實現(xiàn)多個地點的路線規(guī)劃。在地圖上顯示在推薦的Fragment里面選好的地點,用戶可以手動點擊的方式對出行地點進行排序,排完序之后點擊一鍵生成,系統(tǒng)將各個地點連成一線,以自己駕車路線為主,需要初始化RoutePlan Search類,實現(xiàn)OnGetRoutePlanResult Listener接口并重寫onGetDrivingRoute Result方法,除此之外還要實現(xiàn)PlanNode這個類,需要實現(xiàn)兩個, 分別是開始地點與目的地, 將這兩個地點加入到RoutePlanSearch對象中的一個drivingSearch方法即可,就能在地圖上顯示路徑,往下也是一樣,如果有四個地點,將第一個地點和第二個地點分別設置為開始和目的地,以此類推,就是第二個地點和第三個地點分別設置為開始和目的地,以類似于鏈表的形式進行處理。在底部還有全部行程的列表顯示,可以點擊不同的行程然后在地圖上顯示路線。點擊全部行程可以跳轉(zhuǎn)到行程列表的Activity,點擊后可以跳轉(zhuǎn)到原來的地圖界面顯示路徑。
本文設計的面向Android手機用戶的多地點路線規(guī)劃應用,將推薦功能與地圖軟件相結(jié)合,利用重寫百度地圖接口方式實現(xiàn)多地點排序,并結(jié)合步行,公交,打車等多種方式,給用戶提供全面的出行路線方案。由于地圖服務具有日常適應性,下一步的工作是在此基礎上,結(jié)合用戶需求,實現(xiàn)更多個性化應用服務。