最悲剧的HTML5 API : Position地理位置
Position API接口
注意:由于geolocation的位置信息來源包括GPS,IP地址,wifi,藍牙的MAC地址GSM/CDMA 卡 ID 等。移動設備優先使用GPS獲取位置,但是對于wifi和IP定位,瀏覽器本身不能直接解析,它只能手機wifi和ip的信息,然后通過請求位置信息服務接口來獲取,然后主流瀏覽器都是使用Google提供的地理位置查詢服務。通過抓包我們可以知道瀏覽器會請求www.googleapis.com來獲取位置信息,那么問題來了,谷歌撤出中國以后,很多Google提供的服務我們無法使用,其中就包括了地理位置查詢服務,悲劇!
不過我們還是有必要來學習一下這個最受開發者青睞的API。
方法1:getCurrentPosition() 獲取用戶當前的位置信息,有三個參數,1.成功后的回調函數,2.失敗后的回調函數,3,設置參數的對象。
方法2:watchCurrentPostion() 獲取用戶的位置信息,并繼續返回用戶移動時的更新位置,函數會返回一個 ID,唯一地標記該位置監視器。您可以將這個 ID 傳給 clearWatch() 函數來停止監視用戶位置。
方法3:clearWatch(id) 取消watchCurrentPostion,參數為watchID。
getCurrentPosition()使用案例
if(navigator.geolocation){
//可用
//設置配置參數
getLocationOptions = {
// 指示瀏覽器獲取高精度的位置,默認為false
enbaleHighAcuracy:true,
// 指定獲取地理位置的超時時間,默認不限時,單位為毫秒
timeout:5000,
// 最長有效期,在重復獲取地理位置時,此參數指定多久再次獲取位置。
maximumAge:300
};
navigator.geolocation.getCurrentPosition(getLocationSuccess,getLocationError,getLocationOptions);
}
else{
//不可用
alert('你的瀏覽器不支持geolocation API的使用');
}
//成功后返回對象,包含位置信息
function getLocationSuccess(position){
console.log('緯度:'+position.coords.latitude);
console.log('經度:'+position.coords.longitude);
console.log('位置精度:'+position.coords.accuracy);
console.log('海拔:'+position.coords.altitude);
console.log('海拔精度:'+position.coords.altitudeAccuracy);
console.log('方向(正北開始以度計):'+position.coords.heading);
console.log('速度,以米/每秒計'+position.coords.speed);
console.log('響應的日期/時間'+position.timestamp);
}
//失敗后返回對象,包含失敗信息
function getLocationError(error){
switch (error.code){
case error.PERMISSION_DENIED : alert('用戶拒絕瀏覽器獲取位置信息');break;
case error.TIMEOUT : alert('請求超時!'); break;
case error.POSITION_UNAVAILABLE : alert('無法檢測到你的位置'); break;
}
}
watchCurrentPostion()使用案例
var watchID = navigator.geolocation.watchPosition(function(position) { /*.....*/});
clearWatch(id)使用案例
navigator.geolocation.clearWatch(watchID);
總結
以上是生活随笔為你收集整理的最悲剧的HTML5 API : Position地理位置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [云炬创业基础笔记]第十章企业的利润计划
- 下一篇: 第四节:教你如何快速让浏览器兼容ES6特