整 理:曹燕
时 间:2015-10-22
说 明:html5地理定位的原理知识
1.地理定位的作用
2.地理定位的原理
3.地理定位的机制
4.浏览器支持情况
4.1 PC浏览器支持情况
4.2 手机支持情况
5.使用API前检测浏览器
6.API的使用
6.1 getCurrentPosition()方法
6.2 watchPosition()方法
6.3 clearWatch()方法
7.代码示例
8.扩展
1.地理定位的作用
HTML5地理定位(HTML5 Geolocation)提供了一组API用于获取用户的地理位置。鉴于该特性可能侵犯用户的隐私,在访问位置信息前,浏览器都会询问用户是否共享其位置信息。
2.地理定位的原理
Geolocation的位置信息主要来源于以下四种方式:
①GPS全球定位。在露天环境下效果较好,获取位置信息非常精确。适合移动设备。
②IP地址定位。适用于接入互联网的设备,比如台式机。但是因为浏览器是将位置信息发送给 ISP 服务商来解析,其IP 地址与服务商所在位置有关,可能与用户所在位置不同,所以这种方式的解析容易出现偏差。
③WiFi定位。这种方式与GPS效果同样精确,它通过多个WiFi接入点三角距离获取位置信息数据。适用于室内环境的移动设备。
④GMS网络定位。与TCP/IP协议不同,它基于GMS数据交换协议。通常用于移动服务商的GPRS数据服务。解析方式精确。
3.地理定位的机制
4.浏览器支持情况
4.1 PC浏览器支持情况:
Firefox 3.5+
Chrome 5.0+
Safari 5.0+
Opera 10.60+
Internet Explorer 9.0+
4.2 手机支持情况:
Android 2.0+
iPhone 3.0+
Opera Mobile 10.1+
Symbian (S60 3rd & 5th generation)
Blackberry OS 6
Maemo
5.使用API前检测浏览器
在使用地理位置API之前首先要检测浏览器是否支持:
6.API的使用
navigator.geolocation对象有三个方法:
6.1 getCurrentPosition()方法
功能:获取用户当前位置
参数:
①successCallback是定位成功时执行的回调函数,是必须参数;
successCallback返回一个地理数据对象position作为参数,该对象的属性有:
属性名 |
描述 |
coords.latitude |
十进制数的纬度 |
coords.longitude |
十进制数的经度 |
coords.accuracy |
位置精度 |
coords.altitude |
海拔,海平面以上以米计 |
coords.altitudeAccuracy |
位置的海拔精度 |
coords.heading |
方向,从正北开始以度计 |
coords.speed |
速度,以米/每秒计 |
timestamp |
响应的日期/时间 |
②errorCallback定位失败时执行的回调函数,是可选参数;
errorCallback返回一个错误数据对象error作为参数,该对象的属性有:
属性名 |
取值 |
描述 |
code |
PERMISSION_DENIED (数值为1) |
表示没有权限使用地理定位API |
POSITION_UNAVAILABLE (数值为2) |
表示无法确定设备的位置 |
TIMEOUT (数值为3) |
表示超时 |
UNKNOWN_ERROR(数值为4) |
表示未知错误 |
③options参数为额外参数,用来实现更精细的执行定位,是可选参数。
options = {
enableHighAccuracy:true,
timeout:1000,
maximumAge:3000
}
enableHighAccuracy表示是否要求高精度的地理信息,默认为false。
timeout表示等待响应的最大时间,单位是ms,默认是0,表示无穷大。
maximumAge表示应用程序的缓存时间,当第二次请求定位与第一次定位的时间差超过maximumAge,则重新获取一个定位;否则返回缓存中的位置。
6.2 watchPosition()方法
功能:持续获取当前用户位置(定期轮询设备的位置)
参数:该方法的参数和getCurrentPosition()方法的参数是一样的,包括:successCallback(必须)、errorCallback(可选)、options(可选)
返回值:数值型的watchId
6.3 clearWatch()方法
功能:配合watchPosition()使用,用于停止watchPosition()的轮询
参数:watchPosition()方法的返回值watchId
7.代码示例
效果(显示当前所在位置的经度和纬度):
8.扩展
在获取用户位置时除了以数值的形式显示出来,还可以结合百度或谷歌地图的API,这样可以在地图上显示位置。
首先引入百度地图API:
然后改写上面代码示例中的onSuccess方法(定位成功时执行的回调函数)
这样就能将当前位置显示在地图上:
附:百度地图开放平台:
http://developer.baidu.com/map/jsdemo.htm#a1_2
相关文章:HTML5地理定位(使用实例)