1. 程式人生 > >HTML-Geolocation API

HTML-Geolocation API

navigator timestamp aid ref ons ont tom 通過 ucc

前 言

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