HTML5中地理定位API的使用
- 地理定位(Geolocation),API可以获取用户当前地理位置信息(或者是当前正在运行的浏览器系统的位置),不是HTML5规范的部分,但是经常和HTML5的功能相结合使用
当前只介绍API的使用
- 使用地理定位(出于安全考虑,获取用户地理位置需要用户手动确定允许获取)
要使用地理位置要通过全局属性navigator.geolocation
访问地理定位功能,它会返回一个地理定位(Geolocation)对象,这个Geolocation有下面三个方法
名称 | 说明 | 返回 |
---|
getCurrentPosition(successcallback,errorcallback,options) | 获取当前的位置 | void |
watchPosition(callback,error,options) | 实时检测当前位置 | 数值 |
clearWatch(id) | 停止监控当前位置 | void |
getCurrentPosition(callback,errorcallback,options)
function successcallback(position){
1.`coords` 以`对象`的形式返回当前位置的各种坐标,具体见下表
2.`timestamp` 以`字符串`的形式返回获取坐标的`时间`,一般配合Date对象使用Data(position.timestamp)
}
名称 | 说明 | 返回 |
---|
latitude 纬度 | 返回十进制的纬度 | 数值 |
longitude 经度 | 返回十进制的经度 | 数值 |
altitude 海拔高度 | 返回用米表示的海拔高度 | 数值 |
altitudeAccuracy海拔精度 | 返回用米表示的海拔精度 | 数值 |
accuracy 坐标精度 | 返回用米表示的坐标精度 | 数值 |
heading 方向 | 返回度表示的行进方向 | 数值 |
speed 速度 | 返回米/秒表示的行进速度 | 数值 |
position.coords.名称 | 调用方法 | 各种对应的值 |
errorcallback
:处理地理定位错误的回调
function errorcallback(error){
1.`code` 以`数值`的形式返回的代表错误类型的代码,具体见下表
2.`message` 以`字符串`的形式返回描述错误的字符串片段
}
值 | 说明 |
---|
1 | 用户未授权使用地理定位功能 |
2 | 不能确定位置(没有联网) |
3 | 请求超时 |
options={
enableHighAccuracy : false,
timeout : 2000,
maximumAge : 50000
}
名称 | 说明 | 返回 |
---|
enableHighAccuracy | 指定浏览器获取尽量精确的定位结果 | 布尔值 |
timeout | 限制请求时间,超过规定请求时间则报code:3 错误 | 数值(ms) |
maximumAge | 规定一个时间,在该段时间内使用缓存过的地理位置,超出规定时间毫秒数则重新请求 | 数值(ms) |
watchPosition()
:监控位置
- 监控位置和
getCurrentPosition
使用方法一样,不同的是watchPosition
可以实时获取地理位置,但是getCurrentPosition只能获取一次数据, clearWatch(ID)
:当我们想要通知位置获取和定时器一样需要给监控函数定义一个id,进行销毁
var ID = navigator.geolocation.watchPosition(...)
clearWatch(ID)
注:浏览器对于watchPosition
的兼容性还不是很好,如果想实时获取地理位置,可以通过周期性定时器setInterval
来进行周期性设置