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