地理位置对象可以用于基于地图的应用,一般手机的位置信息是通过GPS或者基站来获取,而pc则是通过IP地址来获取,准确度没有移动设备高。

地理位置对象navigator.geolocation下有有两个方法,分别是getCurrentPosition()单次定位请求和watchPosition()多次定位请求。

1.navigator.geolocation.getCurrentPosition(function(),function(),{});

三个参数依次为请求成功的回调,失败的回调,数据收集方式(一个json形式的配置),如下:

timer = navigator.geolocation.getCurrentPosition(function(position){
            
         '经度:' + position.coords.longitude+'\n';
         '纬度 :' + position.coords.latitude+'\n';
         '准确度 :' + position.coords.accuracy+'\n';
         '海拔 :' + position.coords.altitude+'\n';
         '海拔准确度 :' + position.coords.altitudeAcuracy+'\n';
         '行进方向 :' + position.coords.heading+'\n';
         '地面速度 :' + position.coords.speed+'\n';
         '时间戳:' + new Date(position.timestamp)+'\n';                            
        },function(err){
            
            //err.code // 失败所对应的编号
            
            navigator.geolocation.clearWatch(timer);
            
        },{
            enableHighAcuracy : true,
            timeout : 5000,
            maximumAge : 5000,
            frequency : 1000
        });

如上所示:

请求成功的函数,接受一个参数,该参数下有一下属性:

经度 : coords.longitude

纬度 : coords.latitude

准确度 : coords.accuracy

海拔 : coords.altitude

海拔准确度 : coords.altitudeAcuracy

行进方向 : coords.heading

地面速度 : coords.speed

时间戳 : new Date(position.timestamp)

不过其中有些属性只有在移动设备才会存在。

 

2.、多次定位请求watchPosition()

用法和getCurrentPosition一样,不过仅仅只有移动设备,位置改动才会触发。

 

请求失败的时候,err.code是错误编号,分别表示不同的错误,如下:

code 0 : 不包括其他错误编号中的错误

1 : 用户拒绝浏览器获取位置信息

2 : 尝试获取用户信息,但失败了

3 : 设置了timeout值,获取位置超时了

 

数据收集方式:

enableHighAcuracy : 更精确的查找,默认false

timeout : 获取位置允许最长时间,默认infinity

maximumAge : 位置可以缓存的最大时间,默认0

frequency :更新的频率

这两个方法的使用类似于定时器,所以也有一个方法clearWatch()用于关闭更新请求。

posted on 2015-09-01 23:08  toodeep  阅读(2683)  评论(0编辑  收藏  举报