林育曼 潘敏潔 卓偉鵬 饒 浩
(1.韶關(guān)學(xué)院教育技術(shù)系,廣東 韶關(guān) 512005;2.韶關(guān)學(xué)院信息科學(xué)與工程學(xué)院,廣東 韶關(guān) 512005)
基于Android的智能手機(jī)室內(nèi)導(dǎo)航路徑規(guī)劃設(shè)計(jì)
林育曼1潘敏潔2卓偉鵬2饒 浩2
(1.韶關(guān)學(xué)院教育技術(shù)系,廣東 韶關(guān) 512005;2.韶關(guān)學(xué)院信息科學(xué)與工程學(xué)院,廣東 韶關(guān) 512005)
路徑規(guī)劃是室內(nèi)導(dǎo)航的基本要素之一。本文探討了運(yùn)用Fengmap Android SDK進(jìn)行室內(nèi)導(dǎo)航路徑規(guī)劃的設(shè)計(jì)與實(shí)現(xiàn)的方法,實(shí)踐證明系統(tǒng)能夠?qū)崿F(xiàn)路徑導(dǎo)航并提供導(dǎo)航線路的文字描述,表明建立室內(nèi)導(dǎo)航系統(tǒng)的有效性與可行性。
室內(nèi)導(dǎo)航;路徑規(guī)劃;SDK
隨著智能手機(jī)的普及,用手機(jī)導(dǎo)航已成為人們習(xí)以為常的生活習(xí)慣。大型的室內(nèi)場(chǎng)所,例如購(gòu)物中心、車(chē)站、地鐵站、機(jī)場(chǎng)、醫(yī)院等,室內(nèi)導(dǎo)航服務(wù)也在逐漸發(fā)展普及。室內(nèi)導(dǎo)航作為地圖導(dǎo)航的“最后一公里”,成為線下與線上行業(yè)共同的一個(gè)難題[1]。如何有效地解決室內(nèi)導(dǎo)航問(wèn)題是目前研究的一個(gè)重要方向。
目前室內(nèi)導(dǎo)航系統(tǒng)和方法的研究主要是基于室內(nèi)wifi、RFID[2]、藍(lán)牙4.0[3]等技術(shù),在國(guó)外室內(nèi)行業(yè)中,蘋(píng)果公司于2013年推出了基于低功耗藍(lán)牙模塊的iBeacon方案,在應(yīng)用到室內(nèi)定位方面,iBeacon可以通過(guò)三角定位原理感知到用戶的位置。谷歌手機(jī)地圖6.0版在一些地區(qū)加入了室內(nèi)導(dǎo)航功能,此方案主要依靠GPS、WiFi信號(hào)、手機(jī)基站以及一些“盲點(diǎn)”(室內(nèi)無(wú)GPS信號(hào)的地方)的具體位置完成室內(nèi)的定位。
而國(guó)內(nèi)市場(chǎng),高德是國(guó)內(nèi)第一個(gè)正式發(fā)布室內(nèi)地圖的圖商,高德在2015宣布開(kāi)放室內(nèi)地圖SDK提供室內(nèi)場(chǎng)景瀏覽、樓層切換、室內(nèi)外地圖切換等功能。百度地圖4.0中,開(kāi)始布局室內(nèi)定位,并和高德、萬(wàn)達(dá)在室內(nèi)地圖領(lǐng)域進(jìn)行合作。蜂鳥(niǎo)視圖也發(fā)布了室內(nèi)地圖引擎SDK版本,開(kāi)發(fā)者可以通過(guò)調(diào)用FengMapSDK接口,快速集成室內(nèi)地圖展示、查詢、覆蓋物、路徑規(guī)劃等功能。
路徑規(guī)劃是室內(nèi)導(dǎo)航的基本能力之一,本文主要探討如何實(shí)現(xiàn)室內(nèi)導(dǎo)航路徑規(guī)劃的設(shè)計(jì)與具體實(shí)現(xiàn)。
Android是一個(gè)對(duì)第三方軟件完全開(kāi)放的平臺(tái),開(kāi)發(fā)者在為其開(kāi)發(fā)程序時(shí)擁有更大的自由度。在Android系統(tǒng)中,軟件開(kāi)發(fā)工具包就是Android SDK。Android SDK最大的特點(diǎn)在于Android手機(jī)系統(tǒng)的開(kāi)放性和服務(wù)免費(fèi)。
蜂鳥(niǎo)SDK提供基礎(chǔ)地圖以及種類(lèi)繁多的工具,在需求明確之后開(kāi)始實(shí)現(xiàn)地圖以及附加功能,主要是加載地圖,能夠隨意瀏覽并搜索地圖上標(biāo)識(shí)的建筑物。再添加分樓層顯示地圖,2D/3D視圖切換等控件輔助用戶瀏覽地圖,改善用戶體驗(yàn)。因此,本次開(kāi)發(fā)選擇了蜂鳥(niǎo)SDK:Fengmap Android SDK,并在此基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)。
2.2.1 室內(nèi)導(dǎo)航開(kāi)發(fā)基本配置設(shè)計(jì)
室內(nèi)導(dǎo)航開(kāi)發(fā)首先需要對(duì)相關(guān)SDK初始化,并完成地圖的添加,具體步驟如下:
(1)添加地圖布局文件
android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mapview"> (2)初始化SDK 在應(yīng)用程序創(chuàng)建時(shí)初始化SDK引用的Context全局變量。 public class MainApplication extendsApplication{ public void onCreate(){ FMMapSDK.init(this); Super.onCreate(); } } 2.2.2 室內(nèi)導(dǎo)航路徑規(guī)劃的實(shí)現(xiàn) 路徑規(guī)劃是導(dǎo)航應(yīng)用中一個(gè)核心功能[4],F(xiàn)engmap Android SDK支持根據(jù)起點(diǎn)和終點(diǎn)坐標(biāo)規(guī)劃路線功能,實(shí)現(xiàn)路徑規(guī)劃功能最根本的在于找到起始點(diǎn)和終點(diǎn)坐標(biāo),在此應(yīng)用中的體現(xiàn)就是stGroupId(起始點(diǎn)樓層)、stCoord(起始點(diǎn)坐標(biāo))、endGroupId(終點(diǎn)樓層)、endCoord(終點(diǎn)坐標(biāo))。 (1)初始化路徑分析對(duì)象,具體代碼如下: try{ mNaviAnalyser=FMNaviAnalyser.getFMNaviAnalyserByPath(path); }catch(FileNotFoundException pE){ pE.printStackTrace(); }catch(FMObjectException pE){ pE.printStackTrace(); } (2)添加起始點(diǎn)與終點(diǎn),進(jìn)行路徑規(guī)劃,具體代碼如下: int stGroupId=起始點(diǎn)樓層; FMMapCoord stCoord=new FMMapCoord(X,Y); int endGroupId=終點(diǎn)樓層; FMMapCoord endCoord=new FMMapCoord(X,Y); 根據(jù)設(shè)置的起始點(diǎn)和起始樓層進(jìn)行路徑分析,分析成功,返回路徑經(jīng)過(guò)的坐標(biāo)點(diǎn)集 mLineLayer=mFMMap.getFMLayerProxy().getFMLine-Layer();//創(chuàng)建線圖層 mFMMap.addLayer(mLineLayer); //添加線圖層 int type=mNaviAnalyser.analyzeNavi(stGroupId,stCoord,endGroupId,endCoord,FMNaviAnalyser.FMNaviModule.MODULE_SHORTEST);//根據(jù)起始點(diǎn)坐標(biāo)和樓層id等信息進(jìn)行路徑規(guī)劃 if (type == FMNaviAnalyser.FMRouteCalcuResult.ROUTE_SUCCESS){ ArrayList ArrayList for(FMNaviResult r:results){ int groupId=r.getGroupId(); FMSegment s=new FMSegment(groupId,r.get-PointList()); segments.add(s); }//構(gòu)造路徑規(guī)劃線所需數(shù)據(jù) FMLineMarker lineMarker=new FMLineMarker(segments); mLineLayer.addMarker(lineMarker); 路徑規(guī)劃效果顯示如圖1所示。 2.2.3 室內(nèi)導(dǎo)航路徑規(guī)劃文字描述的實(shí)現(xiàn) 在應(yīng)用中除了顯示導(dǎo)航線路以外,還增加了路徑的文字描述功能,通過(guò)描述路徑走向,更能直觀地引導(dǎo)使用者更快抵達(dá)目的地。路徑的文字描述要建立在路徑規(guī)劃的基礎(chǔ)上[5],根據(jù)設(shè)置的起始點(diǎn)和起始樓層進(jìn)行路徑分析,分析成功后,返回路徑經(jīng)過(guò)的坐標(biāo)點(diǎn)集。同時(shí)可根據(jù)結(jié)果集獲取路徑描述等信息,具體代碼如下: //路徑分析:傳入起點(diǎn)和終點(diǎn)坐標(biāo)和起點(diǎn)Id進(jìn)行樓層分析 int type=mNaviAnalyser.analyzeNavi(stGroupId,stCoord,endGroupId,endCoord,FMNaviAnalyser.FMNaviModule.MODULE_SHORTEST); if (type == FMNaviAnalyser.FMRouteCalcuResult.ROUTE_SUCCESS){ ArrayList datas=mNaviAnalyser.getNaviDescription-Data();//得到路徑分析后的結(jié)果集 if(datas.isEmpty()){ return; } for(FMNaviDescriptionData data:datas){ Log.d("distance",""+data.getDistance()); } } 最后,應(yīng)用中可獲得路徑文字描述顯示如圖2所示。 圖2 路徑規(guī)劃文字描述 實(shí)踐研究表明,基于Android的室內(nèi)導(dǎo)航路徑規(guī)劃通過(guò)使用蜂鳥(niǎo)SDK進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)了對(duì)起始點(diǎn)和終點(diǎn)坐標(biāo)的獲取,并完成了相應(yīng)的路徑規(guī)劃,同時(shí)能夠根據(jù)路徑規(guī)劃給出對(duì)應(yīng)的文字描述,表明建立室內(nèi)導(dǎo)航系統(tǒng)的有效性與可行性。 [1]莊瑩,黃麗娜,鄭恒杰,等.二維碼定位技術(shù)支持下的室內(nèi)導(dǎo)航電子地圖的設(shè)計(jì)與實(shí)現(xiàn)——以武漢大學(xué)圖書(shū)館為例[J].測(cè)繪通報(bào),2017(05):125-128,142. [2]陳攀.LBS與RFID結(jié)合實(shí)現(xiàn)圖書(shū)館室內(nèi)定位導(dǎo)航方法初探[J].現(xiàn)代情報(bào),2016,36(02):114-119. [3]陳朝欽,洪少華,李振榮,等.基于ZigBee定位的室內(nèi)停車(chē)場(chǎng)導(dǎo)航系統(tǒng)[J].現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版),2017(13):63-66. [4]徐彪,蔣朝陽(yáng),朱健銘,等.智能輪椅室內(nèi)導(dǎo)航路徑規(guī)劃算法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(08):171-175. [5]林巍凌.引入導(dǎo)航網(wǎng)格的室內(nèi)路徑規(guī)劃算法[J].測(cè)繪科學(xué),2016,41(02):39-43. Design of Path Planning forAndroid Smartphone Indoor Navigation Lin Yuman1Pan Minjie2Zhuo Weipeng2Rao Hao2 Path planning is one of the basic elements of indoor navigation.Fengmap Android SDK is used for path planning for Android smartphone indoor navigation.Path navigation and text description of navigation line can be implemented in the system.The effectiveness and feasibility of indoor navigation system are described. indoor navigation;path planning;SDK TN966 A 1008-6609(2017)08-0019-03 林育曼(1978-),女,廣東潮安人,碩士,副教授,研究方向?yàn)榻逃畔⒒?、信息技術(shù)應(yīng)用。 2017年廣東省攀登計(jì)劃項(xiàng)目,項(xiàng)目編號(hào):pdjh2017b0455。3 結(jié)語(yǔ)
(1.Department of Instructional Technology,Shaoguan University,Shaoguan 512005,Guangdong;2.School of Information Science and Engineering,Shaoguan University,Shaoguan 512005,Guangdong)