虎嘯
【關(guān)鍵詞】Android 百度地圖 附近的人 問詢
1 系統(tǒng)開發(fā)所需的理論和技術(shù)支持
1.1 電子地圖
電子地圖是以計算機系統(tǒng)為硬件支撐,基于可視化數(shù)字地圖,結(jié)合多種媒體向用戶展示各城市、地區(qū)的地理位置信息,是傳統(tǒng)地圖與現(xiàn)代信息技術(shù)結(jié)合的產(chǎn)物,具有表達、分析和服務(wù)的功能。Android平臺為開發(fā)者提供了靈活便捷的地圖展示和控制功能,開發(fā)者通過調(diào)用電子地圖的接口既可以實現(xiàn)地圖的顯示、縮放、搜索等功能,也可以進行個性化的技術(shù)創(chuàng)新。
1.2 定位技術(shù)
定位技術(shù)就是基于位置的服務(wù),通過該技術(shù)獲取用戶當前位置信息。手機應(yīng)用程序要獲取定位信息一般是通過借助第三方服務(wù),如百度地圖、高德地圖等,并按照第三方開發(fā)要求,對電子地圖相關(guān)接口進行調(diào)用,來設(shè)計實現(xiàn)定位功能。
1.3 經(jīng)緯度的距離計算
經(jīng)緯度的距離計算就是地球上任意兩點的經(jīng)緯度經(jīng)過轉(zhuǎn)化后,利用球體圖形來求解球面上兩點之間的弧長,以確定兩點的空間距離。將所要了解的位置坐標上傳至服務(wù)器或數(shù)據(jù)處理中心,篩選出符合“附近的人”定義的數(shù)據(jù)信息。
2 系統(tǒng)功能模塊設(shè)計
2.1 登錄及問詢模塊
用戶通過客戶端進行注冊和登錄,服務(wù)器端負責(zé)監(jiān)聽客戶端的動作,并將客戶端上傳到服務(wù)器,將數(shù)據(jù)存儲到數(shù)據(jù)庫中。服務(wù)器端開啟Socket服務(wù),調(diào)用ServerSocket類中accept()方法,等待客戶端的連接請求。服務(wù)器根據(jù)客戶端請求類型交給客戶端處理類ClientActionVerify來檢查新用戶注冊、用戶驗證登錄以及新注冊賬戶名是否已經(jīng)存在。用戶通過地圖位置的搜索和確認后向附近的人進行問詢,當附近的用戶在線時發(fā)送即時消息,當附近的用戶離線時,則發(fā)送離線消息到服務(wù)器,服務(wù)器將離線消息保存到數(shù)據(jù)庫中,當附近離線的用戶再次上線時,服務(wù)器將離線消息從數(shù)據(jù)庫中取出發(fā)送給該用戶,同時更新消息列表。在問詢過程中,均不顯示用戶的詳細信息,只顯示問題及其回復(fù)信息,以保證用戶之間的信息隱私。
2.2 定位模塊設(shè)計
當用戶需要搜索當前位置附近的人時,就需要通過定位模塊確定用戶當前位置信息。在手機硬件支持GPS功能的條件下,借助百度地圖,并按照其開發(fā)要求對電子地圖相關(guān)接口進行調(diào)用來實現(xiàn)定位功能。本文通過百度地圖定位SDK來設(shè)計實現(xiàn)對用戶當前定位信息的顯示和記錄。當定位按鈕被點擊后,向定位SDK發(fā)起定位請求時,根據(jù)GPS、基站、WiFi信號定位SDK的實際情況來進行定位,此時將坐標設(shè)置為經(jīng)緯度球面坐標,以確保以最好的精度返回定位信息。
該模塊中要使用一些用于定位、顯示、控制信息的功能類。通過BDLocation類獲取位置坐標,反編地理碼等信息。使用LocationClientOption類來設(shè)定位方式,同時通過該類來實現(xiàn)對GPS是否打開、是否需要定位信息以及定位操作掃描次數(shù)等參數(shù)進行設(shè)置。屏幕中的像素點和地球表面的經(jīng)緯度坐標之間的對應(yīng)轉(zhuǎn)化由Projection接口類來完成。地圖控制器MapController類來達到地圖的縮放、以及多角度顯示等效果。通過ItemizedOverlay向地圖添加一個自定義覆蓋物以標記用戶當前的位置。
2.3 位置搜索模塊設(shè)計
該模塊是通過位置搜索界面獲得用戶搜索的地址信息??梢酝ㄟ^移動、縮放地圖的方式對用戶所需地址進行搜索,也可以由用戶在地圖輸入界面查詢地址信息,通過相關(guān)方法將用戶輸入的信息轉(zhuǎn)換為經(jīng)緯度坐標,并在電子地圖上標注出來。初始化地圖之后,并通過一個可以調(diào)用GeoCode("詳細地址","具體城市")方法的線程來實現(xiàn)地址到地圖位置的轉(zhuǎn)化。在地圖單擊監(jiān)聽事件OnMapClickListener()中寫入要顯示到地圖上的覆蓋物作為地標和詳細地址信息,以便用戶確認位置搜索結(jié)果。當用戶通過拖動地圖上表示所需位置的覆蓋物進行位置搜索時,在setOnMapTouchListener(touchListener)觸摸監(jiān)聽事件中通過getMapStatus()獲取覆蓋物在屏幕上的物理坐標,由getPeojection()將物理坐標轉(zhuǎn)化為地理坐標,再通過反地理編碼獲取周邊信息,并由列表顯示以便用戶進一步確認位置搜索結(jié)果。
2.4 獲取附近用戶的位置信息模塊
獲取所需地址附近用戶的位置信息模塊就需要一個服務(wù)器獲取所有用戶的經(jīng)緯度,然后將用戶當前位置的經(jīng)緯度或用戶位置搜索的經(jīng)緯度數(shù)據(jù)送至服務(wù)器進行計算,篩選出500米范圍內(nèi)的用戶。通過設(shè)置定位操作的掃描次數(shù)來記錄當前在線用戶的最新位置信息,當查看所需位置附近的人時,首先向服務(wù)器發(fā)送請求,服務(wù)器根據(jù)所需位置處最新位置信息返回附近的人的經(jīng)緯度,再通過ItemizedOverlay類批量添加覆蓋物顯示在地圖上。
3 結(jié)束語
在信息技術(shù)和數(shù)據(jù)分析技術(shù)高速發(fā)展的今天,人們獲取信息的渠道也更加豐富,基于Android平臺的實時定位與問詢系統(tǒng)在用戶、所需地理位置附近的用戶之間建立起信息交流的橋梁,有助于用戶對相關(guān)的信息進一步了解,為用戶的出行、計劃、決策提供了可參考信息。
參考文獻
[1]龍毅,蔣成環(huán),張亮.電子地圖的基礎(chǔ)理論與框架體系[J].現(xiàn)代測繪,2005(03):7-11.
[2]崔和宏.移動定位技術(shù)概述[J].科技信息,2008(20):402-402.
[3]尚金金.Android平臺下移動終端與PC機的通信系統(tǒng)設(shè)計[D].天津:河北工業(yè)大學(xué),2013:18-20.
[4]馬獲蕾,湯海鳳.Android系統(tǒng)中SQLite數(shù)據(jù)庫的研究[J].電腦知識與技術(shù),2013,23(7).