成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PhoneGap API介紹:Geolocation

移動開發
本文將介紹PhoneGap API——Geolocation:使得你的應用程序可以訪問地理位置信息。geolocation對象提供了對設備GPS傳感器的訪問。Geolocation提供設備的位置信息,例如經度和緯度。位置信息的常見來源包括全球定位系統(GPS),以及通過諸如IP地址、RFID、WiFi和藍牙的MAC地址、和GSM/CDMA手機ID的網絡信號所做的推斷。不能保證該API返回的是設備的真實位置信息。這個API是基于W3C Geo location API Specification實現的。有些設備已經提供了對該規范的實現,對于這些設備采用內置實現而非使用PhoneGap的實現。對于沒有地理位置支持的設備

方法

參數

對象(只讀)

geolocation.getCurrentPosition

  • 返回一個Position對象表示設備的當前位置。
  1. navigator.geolocation.getCurrentPosition(geolocationSuccess, 
  2.                                 [geolocationError], 
  3.                                 [geolocationOptions]); 

參數

  • geolocationSuccess:獲取位置信息成功時調用的回調函數,參數為當前的位置信息。
  • geolocationError:(可選項)獲取位置信息出錯時調用的回調函數。
  • geolocationOptions:(可選項)地理位置選項。

說明

  • geolocation.getCurrentPositon是一個異步函數。它回傳一個包含設備當前位置信息的Position對象給geolocationSuccess回調函數。如果發生錯誤,觸發geolocationError回調函數并傳遞一個PositionError對象。

支持的平臺

  • Android
  • BlackBerry (OS 4.6)
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iPhone

簡單的范例

  1. //    獲取位置信息成功時調用的回調函數 
  2. //    該方法接受一個“Position”對象,包含當前GPS坐標信息 
  3. var onSuccess = function(position) { 
  4.     alert('Latitude: '          + position.coords.latitude          + '\n' + 
  5.         'Longitude: '         + position.coords.longitude         + '\n' + 
  6.         'Altitude: '          + position.coords.altitude          + '\n' + 
  7.         'Accuracy: '          + position.coords.accuracy          + '\n' + 
  8.         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' + 
  9.         'Heading: '           + position.coords.heading           + '\n' + 
  10.         'Speed: '             + position.coords.speed             + '\n' + 
  11.         'Timestamp: '         + new Date(position.timestamp)      + '\n'); 
  12. }; 
  13.  
  14. // onError回調函數接收一個PositionError對象 
  15. function onError(error) { 
  16.     alert('code: '    + error.code    + '\n' + 
  17.         'message: ' + error.message + '\n'); 
  18.  
  19. navigator.geolocation.getCurrentPosition(onSuccess, onError); 

完整的范例

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head>     
  4. <title>Device Properties Example</title> 
  5.  
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  7. <script type="text/javascript" charset="utf-8"> 
  8.  
  9.     // 等待加載PhoneGap 
  10.     document.addEventListener("deviceready", onDeviceReady, false); 
  11.      
  12.     // PhoneGap加載完畢 
  13.     function onDeviceReady() { 
  14.         navigator.geolocation.getCurrentPosition(onSuccess, onError); 
  15.     } 
  16.      
  17.     // 獲取位置信息成功時調用的回調函數 
  18.     function onSuccess(position) { 
  19.         var element = document.getElementById('geolocation'); 
  20.         element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' + 
  21.                             'Longitude: '          + position.coords.longitude             + '<br />' + 
  22.                             'Altitude: '           + position.coords.altitude              + '<br />' + 
  23.                             'Accuracy: '           + position.coords.accuracy              + '<br />' + 
  24.                             'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' + 
  25.                             'Heading: '            + position.coords.heading               + '<br />' + 
  26.                             'Speed: '              + position.coords.speed                 + '<br />' + 
  27.                             'Timestamp: '          + new Date(position.timestamp)          + '<br />'; 
  28.     } 
  29.      
  30.     // onError回調函數接收一個PositionError對象 
  31.     function onError(error) { 
  32.         alert('code: '    + error.code    + '\n' + 
  33.             'message: ' + error.message + '\n'); 
  34.     } 
  35.  
  36. </script> 
  37. </head> 
  38. <body> 
  39.     <p id="geolocation">Finding geolocation...</p> 
  40. </body> 
  41. </html> 

geolocation.watchPosition

  • 監視設備的當前位置的變化。
  1. var watchId = navigator.geolocation.watchPosition(geolocationSuccess, 
  2.                                          [geolocationError], 
  3.                                          [geolocationOptions]); 

參數

  • geolocationSuccess: 獲取位置信息成功時調用的回調函數,參數為當前位置信息。
  • geolocationError:(可選項)獲取位置信息出錯時調用的回調函數。
  • geolocationOptions:(可選項)地理位置選項。

返回

  • String:返回的watch id是位置監視String:返回的watch id是位置監視周期的引用。可以通過geolocation.clearWatch調用該watch ID以停止對位置變化的監視。

說明

  • geolocation.watchPosition是一個異步函數。當檢測到設備的位置發生改變時,它返回設備的當前位置。當設備檢索到一個新的位置,會觸發geolocationSuccess回調函數并傳遞一個Position對象作為參數。如果發生錯誤,會觸發geolocationError回調函數并傳遞一個PositionError對象。

支持的平臺

  • Android
  • BlackBerry (OS 4.6)
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iPhone

簡單的范例

  1. // 獲取位置信息成功時調用的回調函數 
  2. // 該方法接受一個“Position”對象,包含當前GPS坐標信息 
  3. function onSuccess(position) { 
  4.     var element = document.getElementById('geolocation'); 
  5.     element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br>' + 
  6.                         'Longitude: ' + position.coords.longitude     + '<br>' + 
  7.                         '<hr>' + element.innerHTML; 
  8.  
  9. // onError回調函數接收一個PositionError對象 
  10. function onError(error) { 
  11.     alert('code: '    + error.code    + '\n' + 
  12.         'message: ' + error.message + '\n'); 
  13.  
  14. // Options: 每隔3秒鐘檢索一次位置信息 
  15. var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { frequency: 3000 }); 

完整的范例

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head>     
  4. <title>Device Properties Example</title> 
  5.  
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  7. <script type="text/javascript" charset="utf-8"> 
  8.  
  9.     // 等待加載PhoneGap 
  10.     document.addEventListener("deviceready", onDeviceReady, false); 
  11.      
  12.     var watchID = null
  13.      
  14.     // PhoneGap加載完畢 
  15.     function onDeviceReady() { 
  16.         // 每隔3秒鐘更新一次 
  17.         var options = { frequency: 3000 }; 
  18.         watchID = navigator.geolocation.watchPosition(onSuccess, onError, options); 
  19.     } 
  20.      
  21.     // 獲取位置信息成功時調用的回調函數 
  22.     function onSuccess(position) { 
  23.         var element = document.getElementById('geolocation'); 
  24.         element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' + 
  25.                             'Longitude: ' + position.coords.longitude     + '<br />' + 
  26.                             <hr />''      + element.innerHTML; 
  27.     } 
  28.      
  29.     // onError回調函數接收一個PositionError對象 
  30.     function onError(error) { 
  31.         alert('code: '    + error.code    + '\n' + 
  32.             'message: ' + error.message + '\n'); 
  33.     } 
  34.  
  35. </script> 
  36. </head> 
  37. <body> 
  38.     <p id="geolocation">Finding geolocation...</p> 
  39. </body> 
  40. </html> 

geolocation.clearWatch

  • 停止watchID參數指向的設備位置變化監視。
  1. navigator.geolocation.clearWatch(watchID); 

參數

  • watchID:要清除的watchPosition周期的id。(字符串類型)

說明

  • geolocation.clearWatch函數通過清除watchID指向的geolocation.watchPosition來停止對設備位置變化的監視。

支持的平臺

  • Android
  • BlackBerry (OS 4.6)
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iPhone

簡單的范例

  1. // 選項: 每隔3秒鐘檢索一次位置信息 
  2. var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { frequency: 3000 }); 
  3.  
  4. // ...后繼處理... 
  5.  
  6. navigator.geolocation.clearWatch(watchID); 

完整的范例

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head>     
  4. <title>Device Properties Example</title> 
  5.  
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  7. <script type="text/javascript" charset="utf-8"> 
  8.  
  9.     // 等待加載PhoneGap 
  10.     document.addEventListener("deviceready", onDeviceReady, false); 
  11.      
  12.     var watchID = null
  13.      
  14.     // PhoneGap加載完畢 
  15.     function onDeviceReady() { 
  16.         // 每隔3秒鐘更新一次 
  17.         var options = { frequency: 3000 }; 
  18.         watchID = navigator.geolocation.watchPosition(onSuccess, onError, options); 
  19.     } 
  20.      
  21.     // 獲取位置信息成功時調用的回調函數 
  22.     function onSuccess(position) { 
  23.         var element = document.getElementById('geolocation'); 
  24.         element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' + 
  25.                            'Longitude: ' + position.coords.longitude     + '<br />' + 
  26.                            '<hr />'      + element.innerHTML; 
  27.     } 
  28.      
  29.     // 清除前述已經開始的監視 
  30.     function clearWatch() { 
  31.         if (watchID != null) { 
  32.             navigator.geolocation.clearWatch(watchID); 
  33.             watchID = null
  34.         } 
  35.     } 
  36.      
  37.     // onError回調函數接收一個PositionError對象 
  38.     function onError(error) { 
  39.         alert('code: '    + error.code    + '\n' + 
  40.             'message: ' + error.message + '\n'); 
  41.     } 
  42.  
  43. </script> 
  44. </head> 
  45. <body> 
  46.     <p id="geolocation">Finding geolocation...</p> 
  47.     <button onclick="clearWatch();">Clear Watch</button> 
  48. </body> 
  49. </html> 

geolocationSuccess

  • 當得到一個有效地理位置信息時,此用戶回調函數被調當獲得一個地理位置信息時,此用戶回調函數被調用。
  1. function(position) { 
  2.     // 進行處理 

參數

  • position:設備返回的地理位置信息。(Position類型)

范例

  1. function geolocationSuccess(position) { 
  2.     alert('Latitude: '          + position.coords.latitude          + '\n' + 
  3.         'Longitude: '         + position.coords.longitude         + '\n' + 
  4.         'Altitude: '          + position.coords.altitude          + '\n' + 
  5.         'Accuracy: '          + position.coords.accuracy          + '\n' + 
  6.         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' + 
  7.         'Heading: '           + position.coords.heading           + '\n' + 
  8.         'Speed: '             + position.coords.speed             + '\n' + 
  9.         'Timestamp: '         + new Date(position.timestamp)      + '\n'); 

geolocationError

  • 當geolocation函數發生錯誤時,此用戶回調函數被調用。
  1. function(error) { 
  2.     // 處理錯誤 

參數

  • error:設備返回的錯誤信息。(PositionError類型)

geolocationOptions

  • 用戶定制地理位置檢索的可選參數。
  1. { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }; 

選項

  • frequency:以毫秒為單位的檢索位置周期。這個選項并非W3C規范的一部分,未來會被刪除并用maximumAge來替代該選項。(數字類型)(默認值:10000)
  • enableHighAccuracy:提供一個表明應用程序希望獲得最佳可能結果的提示。(布爾類型)
  • timeout:允許的以毫秒為單位的最大時間間隔,該時間間隔是從geolocation.getCurrentPosition或geolocation.watchPosition的調用到相應的geolocationSuccess回調函數被調用。(數字類型)
  • maximumAge:應用程序將接受一個緩存的位置信息,當該緩存的位置信息的年齡不大于此參數設定值,單位是毫秒。(數字類型)

Android的特異情況

  • 除非enableHighAccuracy選項被設定為true,否則Android 2.X模擬器不會返回一個地理位置結果。
  1. { enableHighAccuracy: true } 

Position

  • 包含由geolocation API創建的Position坐標信息。

屬性

  • coords:一系列地理坐標。(Coordinates類型)
  • timestamp:以毫秒為單位的coords的創建時間戳。(DOMTimeStamp類型)

說明

  • Position對象是由PhoneGap創建和填充的,并通過一個回調函數返回用戶。

支持的平臺

  • Android
  • BlackBerry (OS 4.6)
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iPhone

簡單的范例

  1. // 獲取位置信息成功后調用的回調函數 
  2. var onSuccess = function(position) { 
  3.     alert('Latitude: '          + position.coords.latitude          + '\n' + 
  4.         'Longitude: '         + position.coords.longitude         + '\n' + 
  5.         'Altitude: '          + position.coords.altitude          + '\n' + 
  6.         'Accuracy: '          + position.coords.accuracy          + '\n' + 
  7.         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' + 
  8.         'Heading: '           + position.coords.heading           + '\n' + 
  9.         'Speed: '             + position.coords.speed             + '\n' + 
  10.         'Timestamp: '         + new Date(position.timestamp)      + '\n'); 
  11. }; 
  12.  
  13. // onError回調函數接收一個PositionError對象 
  14. function onError(error) { 
  15.     alert('code: '    + error.code    + '\n' + 
  16.         'message: ' + error.message + '\n'); 
  17.  
  18. navigator.geolocation.getCurrentPosition(onSuccess, onError); 

完整的范例

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head>     
  4. <title>Device Properties Example</title> 
  5.  
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  7. <script type="text/javascript" charset="utf-8"> 
  8.  
  9.     // 等待加載PHoneGap 
  10.     document.addEventListener("deviceready", onDeviceReady, false); 
  11.      
  12.     // PhoneGap加載完畢 
  13.     function onDeviceReady() { 
  14.         navigator.geolocation.getCurrentPosition(onSuccess, onError); 
  15.     } 
  16.      
  17.     // 獲取位置信息成功后調用的回調函數 
  18.     function onSuccess(position) { 
  19.         var element = document.getElementById('geolocation'); 
  20.         element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' + 
  21.                             'Longitude: '          + position.coords.longitude             + '<br />' + 
  22.                             'Altitude: '           + position.coords.altitude              + '<br />' + 
  23.                             'Accuracy: '           + position.coords.accuracy              + '<br />' + 
  24.                             'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' + 
  25.                             'Heading: '            + position.coords.heading               + '<br />' + 
  26.                             'Speed: '              + position.coords.speed                 + '<br />' + 
  27.                             'Timestamp: '          + new Date(position.timestamp)          + '<br />'; 
  28.     } 
  29.      
  30.     // onError回調函數接收一個PositionError對象 
  31.     function onError(error) { 
  32.         alert('code: '    + error.code    + '\n' + 
  33.             'message: ' + error.message + '\n'); 
  34.     } 
  35.  
  36. </script> 
  37. </head> 
  38. <body> 
  39.     <p id="geolocation">Finding geolocation...</p> 
  40. </body> 
  41. </html> 

iPhone的特異情況

  • timestamp:單位為秒而非毫秒。

一種變通方法是手動將時間戳轉換為毫秒(*1000):

  1. var onSuccess = function(position) { 
  2.     alert('Latitude: '  + position.coords.latitude             + '\n' + 
  3.         'Longitude: ' + position.coords.longitude            + '\n' + 
  4.         'Timestamp: ' + new Date(position.timestamp * 1000)  + '\n'); 
  5. }; 

PositionError

  • 當發生錯誤時,一個PositionError對象會傳遞給geolocationError回調函數。

屬性

  • code:一個在下面常量列表中定義的錯誤代碼。
  • message:說明錯誤細節的錯誤信息。

常量

  • PositionError.PERMISSIONPositionError.PERMISSION_DENIED:權限被拒絕
  • PositionError.POSITION_UNAVAILABLE:位置不可用
  • PositionError.TIMEOUT:超時

說明

  • 當使用Geolocation發生錯誤時,一個PositionError對象會作為geolocationError回調函數的參數傳遞給用戶。

Coordinates

  • 一系列用來描述位置的地理坐標信息的屬性。

屬性

  • latitude:以十進制表示的緯度。(數字類型)
  • longitude:以十進制表示的經度。(數字類型)
  • altitude:位置相對于橢圓球面的高度,單位為米。(數字類型)
  • accuracy:以米為單位的緯度和經度坐標的精度水平。(數字類型)
  • altitudeAccuracy:以米為單位的高度坐標的精度水平。(數字類型)
  • heading:運動的方向,通過相對正北做順時針旋轉的角度指定。(數字類型)
  • speed:以米/秒為單位的設備當前地面速度。(數字類型)

說明

  • 作為Position對象的一部分,Coordinates對象是由PhoneGap創建和填充的。該Position對象會作為一個回調函數的參數返回用戶。

支持的平臺

  • Android
  • BlackBerry (OS 4.6)
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iPhone

簡單的范例

  1. // 獲取位置信息成功后調用的回調函數 
  2. var onSuccess = function(position) { 
  3.     alert('Latitude: '          + position.coords.latitude          + '\n' + 
  4.         'Longitude: '         + position.coords.longitude         + '\n' + 
  5.         'Altitude: '          + position.coords.altitude          + '\n' + 
  6.         'Accuracy: '          + position.coords.accuracy          + '\n' + 
  7.         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' + 
  8.         'Heading: '           + position.coords.heading           + '\n' + 
  9.         'Speed: '             + position.coords.speed             + '\n' + 
  10.         'Timestamp: '         + new Date(position.timestamp)      + '\n'); 
  11. }; 
  12.  
  13. // 獲取位置信息出錯后調用的回調函數 
  14. var onError = function() { 
  15.    alert('onError!'); 
  16. }; 
  17.  
  18. navigator.geolocation.getCurrentPosition(onSuccess, onError); 

完整的范例

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head>     
  4. <title>Geolocation Position Example</title> 
  5.  
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  7. <script type="text/javascript" charset="utf-8"> 
  8.  
  9.     // 設置一個當PhoneGap加載完畢后觸發的事件 
  10.     document.addEventListener("deviceready", onDeviceReady, false); 
  11.      
  12.     // PhoneGap加載完畢并就緒 
  13.     function onDeviceReady() { 
  14.         navigator.geolocation.getCurrentPosition(onSuccess, onError); 
  15.     } 
  16.      
  17.     // 顯示位置信息中的“Position”屬性 
  18.     function onSuccess(position) { 
  19.         var div = document.getElementById('myDiv'); 
  20.      
  21.         div.innerHTML = 'Latitude: '             + position.coords.latitude  + '<br/>' + 
  22.                         'Longitude: '            + position.coords.longitude + '<br/>' + 
  23.                         'Altitude: '             + position.coords.altitude  + '<br/>' + 
  24.                         'Accuracy: '             + position.coords.accuracy  + '<br/>' + 
  25.                         'Altitude Accuracy: '    + position.coords.altitudeAccuracy  + '<br/>' + 
  26.                         'Heading: '              + position.coords.heading   + '<br/>' + 
  27.                         'Speed: '                + position.coords.speed     + '<br/>'; 
  28.     } 
  29.      
  30.     // 如果獲取位置信息出現問題,則顯示一個警告 
  31.     function onError() { 
  32.         alert('onError!'); 
  33.     } 
  34.  
  35. </script> 
  36. </head> 
  37. <body> 
  38.     <div id="myDiv"></div></body> 
  39. </html> 

Android的特異情況

  • altitudeAccuracy: Android設備上不支持該屬性,返回值總是null。

 

責任編輯:佚名 來源: PhoneGap中國
相關推薦

2011-09-13 16:24:11

PhoneGap AP

2011-12-19 15:30:25

AccelerometPhoneGap AP

2011-12-19 16:26:39

PhoneGap APCapture

2011-12-20 13:32:52

PhoneGap APContacts

2011-12-20 16:09:57

PhoneGap APDevice

2011-12-21 21:56:45

PhoneGap APFile

2011-12-22 09:54:40

PhoneGap APMedia

2011-12-22 10:33:39

PhoneGap APNotificatio

2011-12-22 10:45:32

PhoneGap APStorage

2011-12-20 15:34:55

PhoneGap APConnection

2011-12-20 17:15:52

PhoneGap APEvents

2011-12-20 11:20:46

PhoneGap APCompass

2011-12-19 16:09:32

PhoneGap APCamera

2011-12-30 14:05:17

PhoneGap APConnection視頻

2011-12-30 14:13:05

PhoneGap APCamera視頻

2011-12-30 14:16:02

AccelerometPhoneGap AP視頻

2011-12-30 13:59:38

PhoneGap APDevice視頻

2011-12-30 14:09:32

PhoneGap APCompass視頻

2011-12-30 13:47:57

PhoneGap AP視頻Contacts

2011-07-05 17:29:53

PhoneGapevents
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久国产综合久久 | 成人免费在线观看 | 亚洲成人免费电影 | 成人精品在线观看 | www久久久| 九七午夜剧场福利写真 | 欧美激情99 | 国产成人免费视频网站视频社区 | 欧美久久精品一级黑人c片 91免费在线视频 | 亚洲精品乱码久久久久久蜜桃91 | 国产欧美日韩在线一区 | www.色综合| 国产做a爱免费视频 | 一级大片免费 | 久久精品国产一区二区电影 | 91亚洲精品久久久电影 | 一级毛片成人免费看a | 玖玖精品 | 日本视频在线播放 | 国产精品一区二区三区四区 | 国产精品久久久久久久午夜片 | 欧美一区二区三区在线播放 | 在线观看国产视频 | 国内毛片毛片毛片毛片 | 成人在线免费 | 国产精品永久 | 最新伦理片 | 国产一级淫片免费视频 | a免费视频 | 99精品国自产在线观看 | www.亚洲国产精品 | 91精品久久久久久久99 | 成人18亚洲xxoo | 伊人久久在线 | 亚洲精品久久久久久国产精华液 | 精久久久| 国产a区| 精品亚洲一区二区三区四区五区 | 男女免费网站 | 日韩aⅴ视频 | 黄色免费看 |