地理位置对象可以用于基于地图的应用,一般手机的位置信息是通过GPS或者基站来获取,而pc则是通过IP地址来获取,准确度没有移动设备高。
地理位置对象navigator.geolocation下有有两个方法,分别是getCurrentPosition()单次定位请求和watchPosition()多次定位请求。
1.navigator.geolocation.getCurrentPosition(function(),function(),{});
三个参数依次为请求成功的回调,失败的回调,数据收集方式(一个json形式的配置),如下:
timer = navigator.geolocation.getCurrentPosition(function(position){ '经度:' + position.coords.longitude+' '; '纬度 :' + position.coords.latitude+' '; '准确度 :' + position.coords.accuracy+' '; '海拔 :' + position.coords.altitude+' '; '海拔准确度 :' + position.coords.altitudeAcuracy+' '; '行进方向 :' + position.coords.heading+' '; '地面速度 :' + position.coords.speed+' '; '时间戳:' + new Date(position.timestamp)+' '; },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()用于关闭更新请求。