HTML-Geolocation API
前 言
Geolocation API(地理位置應用程序接口)提供了一個可以知道瀏覽器用戶當前位置的方法。且目前看來瀏覽器的支持情況還算不錯(因為新版本的IE支持了該API),這使得在不久之後就可以使用這一瀏覽器內置的API了。HTML5 Geolocation僅僅是用來檢索定位信息的API,至於底層是如何定位的他也不知道,他就相當於一個傳信的。
1.檢測瀏覽器的支持性。 |
在HTML5中,通過window.navigator對象下新增geolocation屬性來判斷瀏覽器的兼容性。
function geolocationSupport() { if(!navigator.geolocation) { alert(‘當前瀏覽器不支持HTML5 Geolocation‘); } else { alert(‘當前瀏覽器支持HTML5 Geolocation‘); } } geolocationSupport();
2.獲取當前地理位置 |
我們使用getCurrentPosition(success(position),error(err),options)方法來獲取當前用戶的地理位置。
success(position)回調函數是在獲取到地理信息時調用的,其中的position參數是一個對象包括: latitude(緯度)、longitude(經度)
accuracy(緯度和經度的精度,以米為單位)
latitudeAccuracy(海拔高度的精度,以米為單位)
heading(設備的前進方向),speed(設備的前進速度以單位m/s)
timestamp(獲取位置的時間)。
error(err)回電函數是在獲取地理位置失敗時調用的,其中err參數有倆個屬性:
code和message,code{1:表示用戶拒絕了定位服務,2:獲取不到位置信息,3:獲取信息超時錯誤},message是字符串,表示錯誤信息。
opations是一些可選屬性的列表包括: enableHighAccuracy(是否要求高精度的地理位置信息),值為true或false。
timeout(對地理信息獲取操作做一個超時限制,如果超時,則返回錯誤),值為數字,單位為毫秒。
maximumAge(對地理位置信息進行緩存的有效時間做一個限制),值為數字,單位為毫秒。
window.onload = function() { var x,y; if(navigator.geolocation) { document.getElementById("ip").innerHTML = "您當前的位置"; // 百度地圖API功能 var map = new BMap.Map("container"); var point = new BMap.Point(x,y); map.centerAndZoom(point,12); var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() == BMAP_STATUS_SUCCESS){ var mk = new BMap.Marker(r.point); map.addOverlay(mk); map.panTo(r.point); } else { alert(‘failed‘+this.getStatus()); } },{enableHighAccuracy: true}) return; } };
引入JS:
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=134db1b9cf1f1f2b4427210932b34dcb"></script>
3.清除地理位置監聽和清除監聽 |
watchPosition 跟上面的getCurrentPosition 是同樣的原理,參數,返回值。只不過它是個定時器版本的。
clearWatch就是來清除watchPosition 的。
編者
@唯蕓熙 借鑒 iwebkit
HTML-Geolocation API