周陸洲 徐其崗 韓肖杰
【摘要】文中結(jié)合傳統(tǒng)的GPS定位方法和Android平臺提供的基于位置服務(wù)的地圖服務(wù)API開發(fā)包,分析了Android平臺移動終端實(shí)時(shí)定位的原理和方法,詳細(xì)闡述了Android平臺的GPS系統(tǒng)的具體實(shí)現(xiàn)技術(shù),討論了利用地圖接口和反地址解析來實(shí)現(xiàn)地圖的控制和詳細(xì)位置的顯示。最后通過實(shí)際的智能終端移動定位應(yīng)用開發(fā)驗(yàn)證了方法的可行性。
【關(guān)鍵詞】 GPS ?地圖接口 ?反地址解析 ?移動終端 ?實(shí)時(shí)定位
1 引言
隨著 GPS 技術(shù)的發(fā)展,基于 PC 機(jī)的導(dǎo)航定位系統(tǒng)由于其功耗高、攜帶不方便等已不能滿足社會發(fā)展的需要。文中介紹了一種基于 Android 平臺的移動終端定位系統(tǒng),在系統(tǒng)中 Android 移動終端利用周圍的無線網(wǎng)絡(luò)資源與 Internet 連接可將 Google 的地圖資源顯示在移動終端上,實(shí)現(xiàn)地圖的縮放、瀏覽、衛(wèi)星圖/地圖模 式切換及實(shí)時(shí)定位用戶當(dāng)前位置。
2 設(shè)計(jì)原理
現(xiàn)在很多移動終端都內(nèi)置了GPS 接收機(jī)模塊,借助于日益完善的移動定位技術(shù),移動終端的GPS定位 越來越實(shí)時(shí)、精準(zhǔn)。而 Google 推出的 Android 平臺提供了兩個(gè)基于位置服務(wù)的地圖 API 開發(fā)包。通過對這兩個(gè)開發(fā)包內(nèi)與位置服務(wù)相關(guān)的類的使用,配合移動終端設(shè)備本身具備的定位定向等相關(guān)模塊,可以很好地實(shí)現(xiàn) GPS 應(yīng)用程序開發(fā)。
Android 的定位接口可以用來獲取移動終端設(shè)備的地理位置。應(yīng)用程序可以定時(shí)請求更新移動終端設(shè)備的當(dāng)前地理定位信息。也可以借助一個(gè) Intent 接收器來實(shí)現(xiàn)以經(jīng)緯度和半徑劃定的一個(gè)區(qū)域,當(dāng)設(shè)備出入該區(qū)域時(shí),可以發(fā)出提醒信息。
主要包含下面幾個(gè)與位置服務(wù)相關(guān)的類: ( 1) LocationManager: 該類用來獲取當(dāng)前位置,追蹤設(shè)備的移動路線,或設(shè)定敏感區(qū)域,在進(jìn)入或離開敏 感區(qū)域時(shí)設(shè)備會發(fā)出特定警報(bào)。 ( 2) LocationProvider: 該類是能夠提供定位功能的組件集合,集合中的每種組件以不同的技術(shù)提供設(shè)備的當(dāng)前位置,區(qū)別在于定位的精度、速度和成本。 ( 3) LocationListener: 該類用于接收當(dāng)位置信息發(fā)生改變時(shí)從 LocationManager 接收通知。必須事先在定 位管理器中注冊監(jiān)聽器對象。 ( 4) Criteria: 該類用于描述 Location Provider 標(biāo)準(zhǔn), 包括位置精度水平、電量消耗水平、是否獲取海拔或方位信息、是否允許接收付費(fèi)服務(wù)。 Android 的地圖接口( com. google. Android. maps) 可以借助 Google Maps 及定位 API,就能在地圖上顯示用戶當(dāng)前的地理位置。主要包含下面幾個(gè)核心類: MapActivity: 該類是一個(gè)抽象類,用于顯示 Google。
MAP的 Activity 類,它需要連接底層網(wǎng)絡(luò)MapView: 該類派生自 android. view. ViewGroup,用 于顯示地圖的 View 組件。由于 MapView 需要通過后臺的線程來連接網(wǎng)絡(luò),而這些線程要由 MapActivity 來管理,所以它必須和 MapActivity 配合使用。 MapController: 該類用于在控制地圖的移動、縮放。 Overlay: 該類用于在地圖上的繪制可顯示的對象。 GeoPoint: 它是一個(gè)包含經(jīng)緯度位置的對象。 另外 Google Maps 服務(wù)要求開發(fā)者獲取一個(gè)使用 MapView 的 API Key,以便在使用應(yīng)用程序時(shí)能加載 Google 地圖數(shù)據(jù)。 根據(jù)上面介紹的 Android 平臺包含的 API 開發(fā)包,為了實(shí)現(xiàn)移動終端 GPS 定位功能現(xiàn)可分以下幾個(gè)步:
( 1) 向 Google 申請一組經(jīng)過驗(yàn)證的“地圖密鑰” ( Map API Key) ,申請成功后修改布局文件中 android: apiKey 鍵值。 ( 2) 通過使用 Google Maps API 中的 MapView、 MapController 分別進(jìn)行地圖的顯示、控制。 ( 3) 使用定位 API 來獲取移動終端的當(dāng)前定位信息及在 Google Map 上標(biāo)注該終端的當(dāng)前位置。 ( 4) 調(diào)用 Google Maps API 進(jìn)行地址解析,根據(jù)經(jīng) 緯度獲得具體位置詳細(xì)信息。
3 具體實(shí)現(xiàn)
3.1 申請申請 Maps API key 要使用 Google Map 服務(wù)的話,我們需要一個(gè) API key。
3.2 GPS 定位及實(shí)時(shí)更新功能實(shí)現(xiàn)為了能在 Google Map 上顯示用戶當(dāng)前的位置,就要通過 Android 的定位管理 LocationManager 來獲取當(dāng) 前設(shè)備的地理位置為了讓用戶能實(shí)時(shí)看到自己位置的變化,讓它實(shí) 現(xiàn)一個(gè) LocationListener 接口,使其能夠監(jiān)聽定位信息的改變。
3.3 地圖的顯示與控制 地圖的顯示與控制主要采用 Android 提供的 Map- View 和 MapActivity 這兩個(gè)類來實(shí)現(xiàn)。MapView 用來 顯示地圖,它可以通過獲取其他事件來支持移動終端上地圖的移動和縮放功能,也支持可以通過添加 Map Overlay 類在地圖上標(biāo)注用戶當(dāng)前位置。
3.4 根據(jù)經(jīng)緯度進(jìn)行反地址解析 在實(shí)際位置信息顯示開發(fā)過程中,地圖相關(guān)的操作普遍采用地理編碼與地理反編碼,Android 也提供了 Geocoder 類的 getFromLocation 方法進(jìn)行地理反編碼來 返回指定經(jīng)緯度的詳細(xì)地址( List 對象) 。筆者使用過程中不管是在模擬器還是在移動終端環(huán)境下,返回的 List 對象都為 null。經(jīng)過分析發(fā)現(xiàn) Google Geocoding API 的使用有每天 2500 個(gè)地理位置查詢請求的限制。
參考文獻(xiàn):
[1]冉崇善,趙 萍. 基于 ITIL 的企業(yè) IT 資源服務(wù)系統(tǒng)設(shè)計(jì) 武漢理工大學(xué)學(xué)報(bào) 2006
[2]陳 銳,魏津瑜. 基于 ITIL 的 IT 服務(wù)管理模型研究 2008
[3]周 霞. 探索 IT 服務(wù)管理( ITSM) 在勝利油田的應(yīng)用 計(jì)算機(jī)技術(shù)與發(fā)展 2011