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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十章

GPS位置服務(wù)與地圖編程

倚動(dòng)軟件工廠實(shí)驗(yàn)室

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

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

publicStringgetBestProvider(Criteriacriteria,boolean

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

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

publicLocationProvider

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

publicList<String>getProviders(boolean

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

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

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

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

int

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

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

boolean

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

boolean

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

boolean

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

boolean

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

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

publicabstractvoidonProviderDisabled(Stringprovider):Provider禁用時(shí)回調(diào)該方法;

publicabstractvoidonProviderEnabled(Stringprovider):Provider啟用時(shí)回調(diào)該方法;

publicabstractvoidonStatusChanged(Stringprovider,intstatus,Bundleextras):當(dāng)Provider狀態(tài)發(fā)生變化時(shí)回調(diào)該方法;簡(jiǎn)單位置服務(wù)應(yīng)用

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

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

使用Google地圖的準(zhǔn)備工作

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

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

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

/maps/documentation/android/maps-api-signup站點(diǎn),界面如圖所示;使用Google地圖的準(zhǔn)備工作

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

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

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

Google地圖核心API介紹

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論