羅才鮮 余遠波 王國樹
(海南醫學院 醫學信息學院 ??凇?71101)
基于Android平臺的海醫校園導航系統設計與實現*
羅才鮮余遠波王國樹
(海南醫學院醫學信息學院???71101)
在移動互聯網時代,基于Android平臺開發的手機APP軟件越來越成熟,直接影響到人們的日?;顒?。文章是以海南醫學院空間信息為基礎數據,利用PHP、JavaScript及XML技術實現基于百度地圖API的校園導航系統。校園內外用戶通過Android手機客戶端查詢自身的位置、任意兩點間的步行導航路徑等信息。系統最終是做成手機APP形式,操作界面簡潔直觀,校園導航應用主要是面向校園師生、外部來訪人員等,解決了她們對校園不熟悉的眾多問題,同時也幫助她們快速的認識校園、融入校園。
校園導航GPS百度地圖API路徑規劃
近年來,Android操作系統在智能手機應用中越來越成熟,份額也越來越多。根據市場分析機構Strategy Analytics公布了2014年第二季度智能手機操作系統全球分布情況。報告顯示,目前Android操作系統的全球市場份額已達84.6%(有史以來最高比重),而iOS、WP等系統占比均有所下滑。使用的操作系統球中,占全球份額近85%。同時在2014年中國Android智能手機市場硝煙彌漫,除了廠商間的競爭,不同操作系統陣營間的競爭也更加劇烈,但是從統計數據來看,Android智能手機的銷量在中國智能手機市場的占比要遠遠高于蘋果iOS及微軟Windows Phone系統的市場份額。
國內外對在Android平臺上開發校園導航系統應用這領域的研究并不是很多。在國外,比如∶美國加州大學的一些研究人員正在研究一個交互式地圖應用[1]。該應用是可以為用戶提供對選擇的建筑物進行放大、定位和查看建筑中的房間。但是該應用不能為用戶提供從某一地點到目的地點的最短路徑。加利福尼亞大學的校園地圖的功能和本課題研究的地圖功能基本相同[1]。該應用是用戶通過打開網頁瀏覽器打開地圖,用戶可以在地圖上選擇當前位置到目的地,當用戶的信息提交后就會在地圖上顯示出到達目的地的最短路勁。但是要打開網頁瀏覽器才能使用,這樣不僅浪費用戶的時間而且攜帶非常的不方便。在國內,各高校對于校園導航的研究基于PC機的比較多。如清湖大學虛擬校園、華中科技大學校園導航系統[2]。相比之下,大部分高校在Android系統上對校園導航研究都缺少,目前,Android操作系統在智能手機中的發展是越來越成熟,而使用PC機開發校園導航已經不能滿足用戶的需求。
如今,隨著國內各高校的發展,校園內的教學樓、學生食堂、學生公寓等它們的布局錯綜復雜,即使在學校工作、生活的老師或者學生也未必能清楚對學校的了解,對于學校新生以及外來訪人員更是帶來諸多的不便。為了跟上學校發展的步伐,海南醫學院也設計了基于Android平臺的海醫校園導航系統,本系統是在百度地圖開放平臺的基礎上進行的二次開發,實現了一個操作性強、實用性強的校園應用程序。
百度地圖JavaScript API[3]是一套由JavaScript語言編寫的應用程序接口,它能幫助編程人員在網站中構建功能豐富、交互性強的個性化地圖應用程序[4],支持PC端和移動端基于瀏覽器的地圖應用,包含了構建地圖基本功能的各種接口,提供了諸如本地搜索、路線規劃等數據服務。2013年4月,百度地圖的開發新增Key驗證機制,即自V1.5版本起,JavaScript API引導文件增加key驗證(對應參數為ak),用戶需先申請Key,才可使用V1.5版本API服務。
1、系統體系結構
系統客戶端使用百度地圖Android SDK開發,服務器端以APP的形式向客戶端提供服務,使用的地圖信息是由調用百度地圖API。服務器端的可以分成路徑結點管理、地圖放大倍數數據管理及為客戶端提供的查詢等??蛻舳说墓δ芸梢苑譃閷Ш焦δ?、定位功能、路線查詢功能等。導航功能主要是在校園地圖上輸入起點、終點即可導出校園步行路徑,校園地圖可以隨意自動、縮放等。定位功能的應用不僅限制于在校園內,在校外同樣可以定位到當前的位置,提供類似指南針的圖標,當用戶在移動時該圖標隨之移動。路線查詢功能主要是為用戶提供最佳路徑到達目的地,同時也能查看當前附近的建筑物、其他路線等。
2、系統流程
本系統目前是對用戶開放使用,所以不需要設計賬號密碼登陸,直接進入主界面;主界面是調用百度地圖為載體的綜合查詢顯示界面,界面包括三部分,分別是頂部為操作欄、中間是地圖顯示區域已以及底部菜單欄;用戶可以在頂部的操作欄上根據校園地圖上的建筑物標記輸入起點和終點后點擊步行導航就能顯示導航路徑;地圖顯示區域主要是查看校園的建筑物及周圍路線同時也能平移地圖;在底部菜單欄設置縮放按鈕,是對地圖的進行倍數的放大或者縮小,目前地圖只能放大到10米;另外本系統還提供定位服務,定位當到前位置和顯示方向;用戶所操作的信息數據向本地服務器和百度地圖服務器發出數據請求,服務器收到請求后再經過業務處理,最后將請求結果返回到客戶端,用戶就能在地圖上看到相應的結果。
系統流程如圖1所示∶
3、數據庫設計
系統導航這模塊功能主要涉及到路線規劃方案。由于地圖實數據量過于龐大,步行導航路徑規劃需要借助地第三方平臺提供的數據和API支持[5]。同時步行路線規劃也屬于本地化數據需要服務器端提供支持,其主要存儲的是路線信息、建筑物點信息等。為了設計的方便,服務器端和客戶端的數據使用的數據庫都MySQL。
1、路徑算法實現
路徑算法的選擇是本系統首要考慮的問題。道路網中任意兩個結點之間的最短路徑常用的算法有廣度優先算法(Breadth-First-Search)、深度優先算法(Depth-First-Search)、Dijkstra算法[6]及A*啟動搜索算法[7]。廣度優先算法和深度優先算法在展開子節點時均屬于盲目型搜索,也就是說,它不會選擇哪個節點在下一次搜索中更優而去跳轉到該節點進行下一步的搜索。Dijkstra算法采用了和寬度優先搜索類似的思想。A*算法其實是在寬度優先搜索的基礎上引入了一個估價函數,每次并不是把所有可擴展的結點展開,而是利用估價函數對所有未展開的結點進行估價,從而找出最應該被展開的結點,將其展開,直到找到目標結點為止。
本系統的動態路徑規劃算法建立在傳統Dijkstra算法和A*算法的基礎上,采用雙向A*路徑的搜索算法[8]。雙向A*算法是在傳統的A*算法和Dijkstra算法的基礎上采用正反向同時搜索的策略[9]。當有一節點是正向搜索和反向搜索同時到達時完成搜索,算法停止。使用雙向搜索不僅能減少搜索結點,還能縮短規劃時間。
2、校園地圖導航實現
在百度地圖開放平臺上申請秘鑰·Android SDK,獲取地圖,通過在地圖上相應景點的經緯度繪制建筑點,然后在經過Android轉換工具Project類的MapView.getProject()方法轉換成屏幕上的點的坐標位置,然后依次連接成線。在主界面的下拉框選擇起點和終點點擊步行導航按鈕即可實現海南醫學院校園步行導航。
(1)校園地圖
在方案設計中,我們采用的是在百度地圖的基礎上進行二次開發,根據設計的需求在此基礎上實現相關功能。使用百度地圖的API,可以使用JavaScript將從百度地圖中獲取地圖,甚至可以在地圖上圖像上疊加顯示用戶自己的數據,如在地圖圖像上顯示路徑。本系統針對的是校園內的導航,當用戶到達校園某建筑物時,可選擇與另一建筑物進行導航,這樣就會給用戶使用帶來很大的便利。校園地圖的實現部分代碼為∶
android∶layout_width="match_parent" android∶layout_height="match_parent"> android∶id="@+id/id_bmapView" android∶layout_width="fill_parent" android∶layout_height="fill_parent" android∶clickable="true"/>
(2)路線規劃
路線規劃實質上就是路線設計。地圖中將現有的校園里面所有的建筑物信息都添加進數據里面,然后需要計算路線的時候再把數據調取出來經過路徑算法運算得出路徑。實現的部分代碼為∶
private void setBoxRoutePlan(){
mSearch=RoutePlanSearch.newInstance();
mSearch.setOnGetRoutePlanResultListener(this);
mWalk.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(mBaiduMap!=null){
mBaiduMap.clear();//清除上一次的導航路線
}
String str_stNode=mRoutePlanStart
.getSelectedItem()
.toString();
String Str_enNode=mRoutePlanEnd
.getSelectedItem()
.toString();
if(str_stNode==Str_enNode){
Toast.makeText(getActivity(),"起點終點不能一樣??!",Toast.LENGTH_LONG).show();
}else{
if(str_stNode=="我的位置"){
PlanNode stNode=PlanNode.withLocation(new LatLng(mLatitude,mLongtitude));
PlanNode enNode=PlanNode.withCityNameAndPlaceName("海口",Str_enNode);
mSearch.walkingSearch((new WalkingRoutePlanOption()). from(stNode).to(enNode));
}else{
PlanNode stNode=PlanNode.withCityNameAndPlaceName("海口",str_stNode);
PlanNode enNode=PlanNode.withCityNameAndPlaceName("???,Str_enNode);
mSearch.walkingSearch((new WalkingRoutePlanOption()). from(stNode).to(enNode));
}
}
}
});
}
本文設計的基于Android平臺的海醫校園導航系統是為了在校師生(特別是新生)以及外來訪問人員帶來方便外,還能迅速的了解海醫校園。本系統與傳統導航相比,實現了海醫校園導航以及現有智能終端(如Android版本手機)的直接運行,還提供了GPS定位服務。除此之外,本系統界面簡潔直觀、實用性強、易維護、可擴展等。一個手機APP的應用,除了功能解決用戶的問題,還能提高用戶的辦事效率、節約時間。
[1]熊志軍.Android在高校學生信息服務系統中的應用研究[D].碩士學位論文.江西∶南昌大學,2010.
[2]鄔琦,林靖,楊江濤.基于Android的校園導航系統路徑規劃的研究與應用[J].電腦知識與技術2014,10(06)∶1294-1298.
[3]百度.百度地圖API開發指南[EB/OL].http://developer. baidu.com/map/,[2015].
[4]梁廣榮,黎紅.基于百度地圖API的虛擬校園實現[J].廊坊師范學院學報,2012,12(6)∶47-49.
[5]楊偉龍,李步德,謝俊鵬.校園導航系統最短路徑的實現[J].邵陽學院學報,2014,35(4)∶20-23.
[6]劉玉偉,劉愛蓮,謝濤,等.基于Android平臺的人員定位與監控系統的設計與實現[J].鄭州輕工業學院學報∶自然科學版,2012,27(6)∶17
[7]韓平陽,肖云魁,姚遵恩,等.車輛導航系統中路線尋優算法研究[J].軍事交通學院報,2010,12(2)∶75.
[8]夏國平.基于Android的車載智能導航系統的研究與設計[D].成都∶電子科技大學,2012.
[9]馬歡,景志勇,李建勇,等.基于Android的智能導航系統的實際與實現[J].鄭州輕工業學院學報,2015,30(3/4)∶79-81.
羅才鮮(1993~),女,本科生,研究方向為基于位置的服務(LBS);
余遠波(1981~),男,碩士,副教授,研究方向為計算機應用;
王國樹(1996~),男,本科生,研究方向是基于位置的服務(LBS)。
Design and Implementation of the Hainan Medical College Campus Navigation System Based on Android Platform
Luo CaixianYu YuanboWang Guoshu
(Hainan Medical College of Medical InformaticsHaikou571101)
In the mobile Internet era,mobile APP software becomes more and more mature based on the Android platform,a direct impact on people's daily activities.This article is based on the information of spatial data of Hainan Medical College,using PHP,JavaScript and XML technology-based Baidu Maps API campus navigation system.Campus and external users via Android mobile client queries its location within the navigation route information between any two points.Phone system will eventually be made in the form of APP,simple and intuitive user interface,campus navigation application is mainly for school teachers and students,staff and other external visitors to solve their campus are not familiar with the many problems,while also helping them to quickly recognize the campus,and convergence into campus.
Campus NavigationGPSBaidu maps APIPath planning
TP311
A
160429-7261
∶國家級大學生創新創業訓練計劃項目(項目編號∶201411810051;);海南醫學院創新性實驗計劃項目(項目編號∶HYCX201312)。