天天看點

《PhoneGap移動應用開發手冊》——1.6節調整位置傳感器更新時間間隔

本節書摘來自異步社群《phonegap移動應用開發手冊》一書中的第1章,第1.6節調整位置傳感器更新時間間隔,作者 【英】matt gifford,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.6 調整位置傳感器更新時間間隔

phonegap移動應用開發手冊

使用getcurrentposition方法,可以擷取以gps坐标表示的裝置位置。本例中,通過設定的間隔持續擷取更新資訊,以擷取目前位置。

實作步驟

通過傳遞一個包含多個參數的可選項,設定時間間隔,提高精确度。

(1)建立html初始化架構,并添加需求的cordova- 2.0.0.js檔案。

《PhoneGap移動應用開發手冊》——1.6節調整位置傳感器更新時間間隔

(4)現在添加ondeviceready函數執行startwatch方法,代碼如下。

《PhoneGap移動應用開發手冊》——1.6節調整位置傳感器更新時間間隔

(5)建立startwatch函數。首先,建立options變量儲存傳入該函數的可選參數。設定frequency值為5000毫秒(5秒),并将enablehighaccuacy設定為true。

(6)下一步,将watchposition方法賦給先前定義的變量watchid,此變量用來檢查當下位置是否正被監視。

(7)傳遞已設定的其他參數,将options變量傳遞給watchposition方法。

《PhoneGap移動應用開發手冊》——1.6節調整位置傳感器更新時間間隔

(8)初始調用函數建立完成後,現在開始設計在成功回應後執行的onsuccess函數。将傳回的position對象作為參數傳入該函數。

(9)聲明一些變量來儲存從響應中獲得的詳細資訊,它們以timestamp、latitude、longitude和accuracy變量的形式出現。同時需要建立一個元素變量,引用用于顯示輸出資訊的geolocation div元素。

(10)通過通路position對象的屬性,将傳回值賦給相關的變量。

(11)最後,将這些變量設定連接配接為字元串,并将其設定為div元素中的html。

《PhoneGap移動應用開發手冊》——1.6節調整位置傳感器更新時間間隔

(13)運作程式時,輸出效果如圖1.8所示。

《PhoneGap移動應用開發手冊》——1.6節調整位置傳感器更新時間間隔

實作原理

phonegap api中的watchposition方法以異步函數方式運作,持續檢查裝置目前位置的變化。一旦檢測到裝置位置發生變化,将以position對象的形式傳回目前地理位置資訊。

在持續檢測的循環過程中,onsuccess負責處理成功的響應,并将傳回值顯示到螢幕上。

相關内容

getcurrentposition和watchposition函數中有3個可選的參數。

enablehighaccuracy:布爾值變量。決定使用者選擇的定位精度。預設(false)情況下,使用移動或網元網絡擷取位置資訊。若設定為true,則會使用更加精确的定位方式,如衛星定位。

timeout:number類型變量,機關為毫秒,定義擷取成功響應的最大等待時間。

maximunage:number類型變量,機關為毫秒,如果緩存的數值小于指定的時間,則使用maximumage。

安卓裝置中必須将enablehighaccuracy設定為true,才能成功傳回位置結果。

清除更新時間間隔

使用者可以停止持續的位置請求,或通過程式調用phonggap api中的clearwatch方法清除更新間隔。清除更新時間間隔、停止檢測的方法,與清除通過持續更新擷取的加速計資料的方法,完全一樣。