第十章GPS位置服務與地圖編程_第1頁
第十章GPS位置服務與地圖編程_第2頁
第十章GPS位置服務與地圖編程_第3頁
第十章GPS位置服務與地圖編程_第4頁
第十章GPS位置服務與地圖編程_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十章

GPS位置服務與地圖編程

倚動軟件工廠實驗室

主要內容支持位置服務的核心API位置服務(Location-BasedServices,LBS),又稱定位服務或基于位置的服務,融合了GPS定位、移動通信、導航等多種技術,提供了與空間位置相關的綜合應用服務。Android為支持位置服務,提供了android.location包,該包中包含了與位置信息密切相關的類和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。LocationManager(定位管理者)類是訪問android系統(tǒng)位置服務的入口,所有定位相關的服務、對象都將由該類的對象來產(chǎn)生。和其他服務一樣,程序不能直接創(chuàng)建LocationManager對象,而是通過Context的getSystemService()方法來獲取。LocationManagerlocMg=getSystemService(Context.LOCATION_SERVICE)

;支持位置服務的核心API一旦得到了LocationManager對象,即可調用LocationManager類的方法獲取定位相關的服務和對象,例如獲取最佳定位提供者、實現(xiàn)臨近警報功能等,該類的常用方法如下:

publicStringgetBestProvider(Criteriacriteria,boolean

enabledOnly):根據(jù)指定條件返回最優(yōu)的LocationProvider;criteria表示過濾條件,enabledOnly表示是否要求處于啟用狀態(tài);

publicLocationgetLastKnownLocation(Stringprovider):根據(jù)LocationProvider獲取最近一次已知的Location,provider表示提供上次位置的LocationProvider名稱;

publicLocationProvider

getProvider(Stringname):根據(jù)名稱返回LocationProvider;

publicList<String>getProviders(boolean

enabledOnly):獲取所有可用的LocationProvider;

publicvoidrequestLocationUpdates(Stringprovider,longminTime,floatminDistance,PendingIntentintent):通過指定的LocationProvider周期性地獲取定位信息,并通過intent啟動相應的組件,進行事件處理,provider表示LocationProvider的名稱,mimTime表示每次更新的時間間隔,單位為毫秒,minDistance表示更新的最近位置,單位為米,intent每次更新時啟動的組件;支持位置服務的核心APILocationProvider(定位提供者)類是對定位組件的抽象表示,用來提供定位信息,能夠周期性的報告設備的地理位置,Android中支持多種LocationProvider,它們以不同的技術提供設備的當前位置,區(qū)別在于定位的精度、速度和成本等方面。常用的LocationProvider主要有以下兩種。

network:由LocationManager.NETWORK_PROVIDER常量表示,代表通過網(wǎng)絡獲取定位信息的LocationProvider對象;

gps:由LocationManager.GPS_PROVIDER常量表示,代表通過GPS獲取定位信息的LocationProvider對象。GPS相對來說精度更高,但它只能在戶外工作,很費電,并且不能像用戶期望的那樣立即就能返回位置信息,而網(wǎng)絡位置提供器使用手機發(fā)射塔或Wi-Fi信號來判斷用戶位置,在室內室外都能工作、響應速度快,并且更加省電。支持位置服務的核心APILocationProvider類的常用方法如下:

int

getAccuracy():返回該LocationProvider的精度;

StringgetName():返回該LocationProvider的名稱;

boolean

hasMonetaryCost():返回該LocationProvider是收費的還是免費的;

boolean

supportsAltitude():判斷該LocationProvider是否支持高度信息;

boolean

supportsBearing():判斷該LocationProvider是否支持方向信息;

boolean

supportsSpeed():判斷該LocationProvider是否支持速度信息;Location類就是代表位置信息的抽象類,通過Location可獲取定位信息的精度、高度、方向、緯度、經(jīng)度、速度以及該位置的LocationProvider等信息。支持位置服務的核心APILocationListener接口用于監(jiān)聽定位信息的監(jiān)聽器,必須在定位管理器中注冊該對象,這樣在位置發(fā)生變化的時候就會觸發(fā)相應的方法進行事件處理,該監(jiān)聽器包含的方法如下:

publicabstractvoidonLocationChanged(Locationlocation):位置發(fā)生改變時回調該方法;

publicabstractvoidonProviderDisabled(Stringprovider):Provider禁用時回調該方法;

publicabstractvoidonProviderEnabled(Stringprovider):Provider啟用時回調該方法;

publicabstractvoidonStatusChanged(Stringprovider,intstatus,Bundleextras):當Provider狀態(tài)發(fā)生變化時回調該方法;簡單位置服務應用

獲取位置信息的通用步驟為:①獲取系統(tǒng)的LocationManager對象;②使用Locationmanager,通過指定LocationProvider來獲取定位信息,定位信息由Location來對象來表示;③從Location對象中獲取定位信息;案例:獲取位置信息

【示例代碼:codes\10\LocationService】

使用Google地圖的準備工作

Android系統(tǒng)默認并不支持調用GoogleMap,為了正常調用GoogleMap服務,需要先進行如下準備工作。1、獲取GoogleMapAPIKey為了在應用程序中調用GoogleMap,必須先獲取GoogleMapAPI的Key,步驟如下:1)單擊Eclipse的“Window”菜單,然后選擇Preferences菜單項,彈出如圖所示對話框;使用Google地圖的準備工作2)展開左邊Android節(jié)點,選中Build子節(jié)點,即可在對話框中看到默認調試的keystore的存儲位置,在此為D:\androiddeveloper\AVD\.android\debug.keystore,默認為你的模擬器文件的存儲目錄下。接下來根據(jù)keystore來生成GoogleAPI的Key;3)使用JDK提供的keytool工具為Androidkeystore生成認證指紋,啟動命令行窗口輸入如下命令。keytool–list–keystore

<Androidkeystore的存儲位置>,在此為:keytool–list–keystoreD:\androiddeveloper\AVD\.android\debug.keystore使用Google地圖的準備工作注意:如果運行keytool工具時,提示”找不到該命令”,則說明還未在PATH環(huán)境變量中添加java安裝目錄下的bin路徑,該路徑下包含keytool.exe工具。如果keystore存儲路徑中包含空格時,也會提示錯誤,無法生成認證指紋,此時需修改AVD的存儲路徑,做法是在環(huán)境變量中,添加Android_SDK_Home變量,變量值為電腦上的任意路徑,不包含空格。設置完成后,需重啟Eclipse。

4)記住上面生成的認證指紋,登錄

/maps/documentation/android/maps-api-signup站點,界面如圖所示;使用Google地圖的準備工作

5)在界面的文本框中輸入keytool工具生成的認證指紋,單擊GenerateAPIKey按鈕,系統(tǒng)顯示如圖(左)所示的頁面。

6)在頁面中輸入自己的Google賬戶,如果還沒有Google賬戶,可以先注冊一個,如果已經(jīng)有了Google賬號,輸入Google賬戶和密碼,登錄后如圖(右)所示。使用Google地圖的準備工作2、創(chuàng)建支持GoogleMapAPI的AVD

AndroidSDK默認并不支持GoogleMap,為了得到支持GoogleMap的SDK,必須為AndroidSDK添加相應的插件。啟動Android的SDKManager.exe工具,顯示如圖(左)所示的窗口,勾選GoogleAPI前面的復選框,然后單擊Installpackage按鈕。安裝完畢后,需要創(chuàng)建一個支持GoogleMap的模擬器,單擊Eclipse中的模擬器管理界面,新建一個模擬器,如圖(右)所示。根據(jù)位置信息在地圖上定位

Google地圖核心API介紹

為了使開發(fā)者更容易在應用程序中添加強大的地圖功能,Google提供了操作地圖的API,存放在com.google.android.maps下。包括地圖的顯示、縮放、定位、標記等,核心API如下:

MapView:用于顯示地圖的View組件。它派生自ViewGroup,它必須和MapActivity配合使用,而且只能被MapActivity創(chuàng)建,這是因為MapView需要通過后臺的線程來連接網(wǎng)絡或文件系統(tǒng),這些線程要由MapActivity來管理。當MapView獲取的焦點時,它將捕捉按鍵和觸摸手勢,自動地平移和縮放地圖,還可以在地圖上繪制許多Overlay類型標記。

MapActivity:該類是用于顯示地圖的Activity類,是一個抽象類,任何想要顯示MapView的Activity都需要派生自MapActivity,并且在onCreate()中,都要創(chuàng)建一個MapView實例。

MapController:用于控制地圖的移動、縮放等的工具類。根據(jù)位置信息在地圖上定位

Overlay:是一個可顯示在地圖之上的可繪制的對象,常用于繪制標記。如果需要在地圖上標注一些圖標文字等信息,就需要使用Overlay,首先要將地圖上的經(jīng)度和緯度轉換

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論