本章主要是介紹geolocation API來獲取用戶的地理位置信息。附帶頁面上使用Google地圖的基本方法(這我就不講了,google有很好的API使用說明書)。java
Geolocation是window.navigator對象新增長的屬性。Geolocation API存在三個方法。git
1.獲取地理位置緩存
2.持續監視當前地理位置的信息服務器
3.中止獲取用戶的地理位置信息網絡
1.但是使用getCurrentPosition方法來獲取用戶地理位置信息,使用方法是:google
void getCurrentPosition(onSuccess, onError,options);onSuccess是返回獲取地理位置成功時作什麼;onError是返回獲取地理位置失敗時;oprtions是一些可選屬性(書上這麼說的,我知道的還有一個超時的屬性)。
/* 一個完整的獲取地理位置信息代碼段 */ navigator.geolocation.getCurrentPosition( /*成功獲取片段*/ function(position){ var latitude = position.coords.latitude;//獲取當前位置的緯度 var longitude = position.coords.longitude;//獲取當前位置的精度 document.getElementById('map').value = '緯度:'+latitude+'精度:'+longitude; }, /*獲取地質位置錯誤片段*/ function(error){ var errorType={1:'位置服務器拒絕',2:'獲取不到位置',3:'獲取信息超時'}; alert(errorType[error.code]+":獲取地理位置錯誤,請檢查您的網絡是否通暢!"); }, /* 超時處理*/ { /*設置緩存有效時間是2分鐘,單位是毫秒*/ maximumAge:60*1000*2, /*5秒內沒有回獲取信息視爲超時*/ timeout:5000 } );
若是獲取地理位置成功的話,position有這樣幾個屬性:spa
latitude 當前地理位置的緯度code
longitude 當前地理位置的精度對象
altitude 當前海拔高度 不能獲取時爲nullip
accuracy 獲取的緯度或經度的精度(以米爲單位)
altitudeAccurancy 獲取海拔高度的精度(以米爲單位)
heading 設備的前進方向。用面朝正北方的順時針旋轉角度來表示(不能獲取時爲null)
speed 設備的前進速度(單位:米/秒)
timestamp 獲取地理時間
若是獲取地理位置失敗的話,Error對象有如下屬性:
code屬性:有三個值(1.用戶拒絕了位置服務 2.獲取不到位置信息 3.獲取信息超時錯誤)
(還沒弄明白,後面是書的原文)message屬性:包含了一個字符串,在該字符串中包含了錯誤信息
再來看看最後一個能夠省略參數包含那些屬性
enableHighAccuracy 要求高精度的地理位置,這個參數在不少設備上沒有用,因此大多數把設爲默認
maximumAge 對地理位置的獲取操做作一個超時限制(單位毫秒)
使用watchPosition方法來持續獲取用戶信息當前地理位置,它會按期自動獲取,該方法定義以下:
int watchCurrentPosition(pnSuccess,onError,options);
該方法三個參數的說明和使用方法和getCurrentPosition方法同樣。返回一個數字,這個數字的使用方法與javasctipt腳本中setInterval方法的返回值參數相似。
能夠使用
vodi clearWatch(watchId);watchId是調用上面的getCurrentPosition方法監視時返回的參數。