江永池
(汕頭職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)系,廣東 汕頭 515078)
在日常生活中,經(jīng)常要通過電子地圖系統(tǒng)來確定相關(guān)人員的位置,或者一組相關(guān)人員、移動(dòng)設(shè)施(如車輛)需要相互定位[1],目前的做法是主尋方通過電話或微信通知被尋方,被尋方將自己的位置反饋給主尋方,這種一問一答式定位方式是被動(dòng)尋呼定位模式.如圖1 是被動(dòng)尋呼定位模式的執(zhí)行過程.采用被動(dòng)尋呼定位方式,在實(shí)際應(yīng)用中會(huì)存在以下幾方面問題:(1)主觀上,因被尋方故意瞞報(bào),無法獲得被尋方定位;(2)客觀上,被尋方因環(huán)境噪雜,無法接收主尋信息,不能及時(shí)反饋定位;(3)雙方通信正常,但一問一答式響應(yīng)存在實(shí)時(shí)性差的問題;(4)不能同時(shí)獲得一組被尋對(duì)象的定位.
圖1 被動(dòng)尋呼定位模式
由于被動(dòng)尋呼定位存在上述缺陷,在人們的生活和工作中,會(huì)造成諸如園區(qū)安保巡更、大型活動(dòng)人員調(diào)控、旅游景區(qū)導(dǎo)游、游客、旅游車相互定位不能及時(shí)到位,管理效率低下等問題[2].基于實(shí)際應(yīng)用需要,我們經(jīng)過研究論證,提出基于百度地圖的主動(dòng)定位解決方案,并根據(jù)該方案構(gòu)建一個(gè)主動(dòng)定位web應(yīng)用平臺(tái),讓定位不再需要尋呼,同平臺(tái)上各用戶能快速確定一個(gè)或多個(gè)其他用戶的位置信息.
基于上述問題,經(jīng)過探索和實(shí)踐,參考國內(nèi)有關(guān)Html5移動(dòng)定位與百度地圖API研究[3-4],改進(jìn)了主動(dòng)定位模式,不再認(rèn)定主尋和被尋方,一個(gè)群組多個(gè)對(duì)象(以下稱組員)同時(shí)登錄到平臺(tái)上,輸入約定的代碼(或手機(jī)碼,系統(tǒng)不主動(dòng)讀取用戶手機(jī)碼),系統(tǒng)定時(shí)記錄組員的GPS 位置,再轉(zhuǎn)換為百度坐標(biāo),利用百度地圖顯示各自位置[5].以旅游管理為例,導(dǎo)游可以實(shí)時(shí)獲知一個(gè)或多個(gè)游客位置,游客也可實(shí)時(shí)獲知導(dǎo)游和旅游車位置,打破一問一答的局限,實(shí)現(xiàn)實(shí)時(shí)多方主動(dòng)相互定位.其中圖2為主動(dòng)定位平臺(tái)網(wǎng)絡(luò)結(jié)構(gòu)圖,圖3為其功能結(jié)構(gòu)圖.
圖2 主動(dòng)定位平臺(tái)網(wǎng)絡(luò)結(jié)構(gòu)圖
圖3 主動(dòng)定位平臺(tái)功能結(jié)構(gòu)圖
主動(dòng)定位系統(tǒng)的優(yōu)點(diǎn):(1)定位無主從關(guān)系,實(shí)現(xiàn)多對(duì)多定位;(2)減少尋呼過程,無需等待應(yīng)答,定位實(shí)時(shí)不滯后;(3)可以要求被定位者拍攝周圍環(huán)境,確認(rèn)被定位者的真實(shí)位置;(4)可以給被定位者留言,保證多種聯(lián)絡(luò)路徑暢通.
主動(dòng)定位平臺(tái)實(shí)現(xiàn)以下主要功能.
(1)主頁:用戶登錄后,輸入約定的代碼,如某個(gè)旅游團(tuán),該團(tuán)主代碼為200320A,序碼為XXX三位數(shù),每位游客分配一個(gè)序碼.系統(tǒng)自動(dòng)檢測出該用戶的GPS坐標(biāo),轉(zhuǎn)換為Baidu的坐標(biāo),并在百度地圖顯示出來.同時(shí),如該用戶有未讀信息,會(huì)顯示其他用戶的信息列表.顯示用戶當(dāng)前位置.
(2)找人:找人頁面可以尋找某個(gè)代碼或一組代碼的定位,并在百度地圖標(biāo)示出來,當(dāng)勾上提醒選項(xiàng)時(shí),被尋對(duì)象會(huì)響起音樂提示音.如果被尋對(duì)象有對(duì)周圍環(huán)境的拍照,可以被查看,驗(yàn)證被尋對(duì)象的確切位置(見圖4).
(3)拍照:利用手機(jī)的拍照功能,可以拍攝并上傳周圍環(huán)境照片.
(4)留言:如定位不到要尋對(duì)象,可以給被尋對(duì)象留言,被尋對(duì)象上線時(shí),會(huì)看到留言信息.
(5)后臺(tái)模塊:頁面功能相對(duì)簡單,主要定期刪除上線用戶記錄,刪除留言信息.
以下模擬某旅游團(tuán)的一次活動(dòng),一年一度的菊花展在某市中山公園舉行,旅行團(tuán)有半日的游園安排.下午1:00,各團(tuán)友自中山公園東側(cè)門入園,自由活動(dòng).本團(tuán)代碼為133X,1331為導(dǎo)游,2,3,4 為團(tuán)友.導(dǎo)游在2:25 的位置,位于園內(nèi)月鑒湖西北處,如圖4 我的位置.導(dǎo)游查看團(tuán)友1332 位置,勾上提醒,點(diǎn)擊查找,查得1332位于園內(nèi)入公園牌坊處,并查看到該團(tuán)友拍攝的實(shí)景圖,如圖5、圖6.這時(shí)團(tuán)友1332手機(jī)提醒音樂響起.導(dǎo)游又輸入133*,查得1332,1333,1334號(hào)團(tuán)友的實(shí)時(shí)位置,如圖7.這種體驗(yàn),讓導(dǎo)游對(duì)團(tuán)友定位了如指掌,在該次帶團(tuán)活動(dòng)中獲得良好體驗(yàn).
圖4 我的位置
圖5 定位1332團(tuán)友
圖6 查看被尋實(shí)景
圖7 多被尋對(duì)象定位圖
主動(dòng)定位平臺(tái)也可以應(yīng)用在很多生活場景中,比如單位職工通勤班車,沿途員工和班車司機(jī)同時(shí)用手機(jī)掃碼登錄本平臺(tái),輸入約定的識(shí)別碼,如大家約定000101為司機(jī),0001xxx(xxx為員工姓名首拼音碼),沿途員工點(diǎn)擊“找人”,輸入000101查詢,便可定位司機(jī)當(dāng)前位置,如勾“提醒”,則此時(shí)司機(jī)的手機(jī)響起音樂,并提醒司機(jī)是哪位員工查尋定位.另外,司機(jī)也可以輸入0001,勾組搜索,則可以顯示沿線員工當(dāng)前位置,如圖8所示.又如在某市舉辦大型文體活動(dòng),指揮中心要監(jiān)控不同現(xiàn)場安保人員位置,防止現(xiàn)場人員在關(guān)鍵點(diǎn)缺位,可以利用本平臺(tái)進(jìn)行有效的管理和控制.
圖8 沿途員工定位
本平臺(tái)系統(tǒng)服務(wù)器端基于windows操作系統(tǒng),采用Mysql數(shù)據(jù)庫和php語言編程,前端采用Html5+Javascript編程,前后端采用異步通信技術(shù),前端定時(shí)(3 000 ms)將檢測到的GPS坐標(biāo)寫入后端數(shù)據(jù)庫.尋呼時(shí)從數(shù)據(jù)記錄中讀取被尋對(duì)象的GPS位置記錄,轉(zhuǎn)化為百度坐標(biāo)并在百度地圖顯示出來.
本系統(tǒng)客戶端使用移動(dòng)設(shè)備,如果在PC端登錄,不能獲得當(dāng)前用戶的GPS位置信息.Html5增加了獲取移動(dòng)設(shè)備GPS坐標(biāo)的內(nèi)部對(duì)象,可以使用navigator.geolocation來簡單地獲取用戶的地理位置信息.以下是系統(tǒng)獲取GPS坐標(biāo)的代碼[6].
如果直接使用GPS的定位,因?yàn)槎ㄎ恢剖皆?,定位結(jié)果與實(shí)際位置存在偏差,一般的做法是從系統(tǒng)將獲得的GPS坐標(biāo)先轉(zhuǎn)換為百度地圖坐標(biāo),再在百度地圖上標(biāo)示出該點(diǎn)的位置[7].這里用到了百度地圖的兩個(gè)API函數(shù),在頁面的頭部引用導(dǎo)入[8-9].
其中convertor.js是百度地圖坐標(biāo)轉(zhuǎn)換函數(shù)庫,“http://api.map.baidu.com/api?v=1.4”遠(yuǎn)程引用百度的地圖API接口,基于測試,只采用1.4版本.
變成百度的坐標(biāo)(x1,y1),將(x1,y1)代入到mp.centerAndZoom(new BMap.Point(x1,y1),16),即百度地圖的顯示位置,這時(shí)把x1,y1連同用戶登錄碼記錄下來,再加上對(duì)(x1,y1)位置標(biāo)示,就完成了用戶百度地圖位置定位.
為了保證客戶端頁面不因設(shè)置定時(shí)器而被反復(fù)刷新,系統(tǒng)對(duì)檢測并轉(zhuǎn)換后的坐標(biāo)寫入記錄采用異步通信技術(shù)AJax.以下是實(shí)現(xiàn)主要代碼[10]:
同時(shí)客戶端還要定時(shí)檢測數(shù)據(jù)記錄中是否有未處理的被尋記錄,如有前端的音頻控件啟動(dòng)播放,這也用到了異步通信,基于篇幅,本文不做贅述.
主動(dòng)定位平臺(tái)使用成熟的移動(dòng)GPS定位、百度地理坐標(biāo)轉(zhuǎn)換和百度地圖API技術(shù),定位高效準(zhǔn)確快捷.平臺(tái)利用瀏覽器登陸網(wǎng)站,無需下載,即點(diǎn)即用,支持在線留言、應(yīng)答,增加環(huán)境拍照,可通過照片確認(rèn)地理位置,語音提示功能,讓尋人變得更方便快捷.相比于目前主尋人與被尋人的一問一答式的定位方式,基于百度地圖的主動(dòng)定位平臺(tái)有明顯的優(yōu)勢(shì),在旅游團(tuán)定位管理、指揮中心巡更管理、廠區(qū)車輛管理等方面具有現(xiàn)實(shí)的應(yīng)用意義.
目前html5自帶GPS定位功能并被多數(shù)軟件所應(yīng)用,但是基于定位安全考慮和更快更準(zhǔn)確定位要求,隨著北斗衛(wèi)星導(dǎo)航系統(tǒng)的應(yīng)用成熟和北斗衛(wèi)星民用級(jí)的webAPI會(huì)逐步推廣普及,將在以后升級(jí)中加入北斗衛(wèi)星定位功能.