HTML5提供了一組API用來獲取用戶的地理位置,如果瀏覽器支持且設備具有定位功能,就能夠直接使用這組API來獲取當前位置信息。
該API是navigator對象的一個屬性 – Geolocation。目前除了ie內核瀏覽器外,其他瀏覽器的最新版本基本都支持Geolocation。同時,移動設備IOS 3.0+ 和 Android 2.0+ 系統也支持它,現在很多移動設備的應用加入了地理定位的元素。
那么我們接下來看如何使用Geolocation API:
一、檢查瀏覽器是否支持Geolocation
var hasGeolocation = !!(navigator.geolocation);
if(hasGeolocation){
alert(“瀏覽器支持hasGeolocation”);
}
二、navigator.geolocation 的方法:
* navigator.geolocation有三個方法,分別是getCurrentPosition()、watchPosition()和clearWatch()
getCurrentPosition()方法
* getCurrentPosition()方法檢索用戶的當前位置,但只檢索一次。當該方法被腳本調用時,方法以異步的方式來嘗試獲取宿主設備的當前位置。
* 該方法最多可以有三個參數:
geolocationSuccess:帶回當前位置的回調(callback)(必需的)
geolocationError:有錯誤發生時使用的回調(可選的)
geolocationOptions:地理位置選項(可選的)
調用如下所示:
navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationError, geolocationOptions);
watchPosition()方法
* watchPosition()方法定期輪詢用戶的位置,查看用戶的位置是否發生改變。其最多可帶三個參數。
調用如下所示:
var watchPositionHandler = navigator.geolocation.watchPosition(geolocationSuccess, geolocationError, geolocationOptions);
clearWatch()方法
* clearWatch()方法終止正在進行的watchPosition(),該方法只能帶一個參數。在調用時,其找到之前已經開始了的watchID參數并立即停止它。
調用如下所示:
navigator.geolocation.clearWatch(watchID);
三、navigator.geolocation返回一個Position對象:
* Position對象有兩個屬性:timestamp和coords。timestamp屬性表示地理位置數據的創建時間,coords屬性又包含七個屬性:
coords.latitude:估計緯度
coords.longitude:估計經度
coords.altitude:估計高度
coords.accuracy:所提供的以米為單位的經度和緯度估計的精確度
coords.altitudeAccuracy:所提供的以米為單位的高度估計的精確度
coords.heading: 宿主設備當前移動的角度方向,相對于正北方向順時針計算
coords.speed:以米每秒為單位的設備的當前對地速度
* 注意altitude, altitudeAccuracy, heading, speed不一定被瀏覽器支持,所以大家最好看一下官方規范的描述,多一些了解。
四、注意事項
* Geolocation App是不能直接訪問設備的,只能通過請求瀏覽器來訪問設備;
* Geolocation涉及到用戶隱私,在獲取 Geolocation 的時候,需要先征求用戶的意思。
* Geolocation目前沒有比較好的前端兼容解決方案,但是在移動設備 iOS 和 Android上,我們可以大膽嘗試使用。