Geolocation地理位置
HTML5 Geolocation API是新增的地理位置应用程序接口。它提供了一个可以准确感知浏览器用户当前地理位置的方法。如果浏览器支持,且设备具有定位功能,就能够直接使用这个API来获取当前位置信息。
window.navigator.geolocation对象存在3个方法:
1. getCurrentPosition 获取当前地理位置
2. watchPosition 监视位置信息
3. clearWatch 停止获取位置信息
1 浏览器支持情况
浏览器 说明
IE 通过gears插件支持
FireFox 3.5及以上版本支持
Opera 10及以上版本支持
Chrome 2.0及以上版本支持
Safari 4.0及以上版本支持
2 检测浏览器是否支持
1 function supportGeolocation() { 2 return 'geolocation' in navigator; 3 }
3 获取当前地理位置getCurrentPosition
这个getCurrentPosition(successCallback, onError, options)方法接受1个、2个或者3个参数。第1个参数为获取当前地理位置信息成功时所执行的回调函数,第2个参数为获取当前地理位置信息失败时所执行的回调函数,第3个参数为一些可选属性的列表。其中,第2、3个参数为可选参数。
1 navigator.geolocation.getCurrentPosition(function(position) { 2 //TODO 获取成功时的处理 3 var timestamp = position.timestamp; 4 var coords = position.coords; 5 console.log(timestamp); 6 console.log(coords); 7 }, function(error) { 8 //TODO 获取失败时的处理 9 console.log(error); 10 }, { 11 maximumAge: 0 12 });
第1个参数,在获取地理位置信息成功时执行的回调函数中,带有一个position参数,它是一个Geoposition对象。该对象有以下两个属性:
timestamp属性,时间戳。
coords属性,coords属性是一个Coordinates类型对象,包含下面这些属性:
1. accuracy 获取到的经度或纬度的精度(以米为单位)。
2. altitude 当前地理位置的海拔高度(不能获取时为null)。
3. altitudeAccuracy 获取到的海拔高度的精度(以米为单位)。
4. heading 设备的前进方向。用面朝正北方向的顺时针旋转角度来表示(不能获取时为null)。
5. latitude 当前地理位置的经度。
6. longitude 当前地理位置的纬度
7. speed 当前的前进速度(以米/秒为单位,不能获取时为null)。
第2个参数,在获取地理位置信息失败时执行的回调函数中,带有一个error参数,它是一个PositionError对象。该对象有以下两个属性:
code属性,可能值:
1. 当属性值为1时,表示用户拒绝了位置服务,"User denied Geolocation"。
2. 当属性值为2时,表示获取不到位置信息,"Timeout expired"。
3. 当属性值为3时,表示获取信息超时错误。
message属性
message属性值为一个字符串,包含了错误信息,这个错误信息在我们开发和调试时非常有用。
第3个参数是一个可选属性的列表,说明如下:
enableHighAccuracy属性,是否要求高精度的地理位置信息。
timeout属性,超时限制(单位为毫秒)。如果在该时间内未获取到地理位置信息,则返回错误。
maximumAge属性,对地理位置信息进行缓存的有效时间(单位为毫秒)。如果该值设为0,则每次都去重新获取地理位置信息。
4 监视地理位置信息watchPosition
使用watchPosition(successCallback, errorCallback, options)方法可以定期地获取用户地理位置信息。该方法使用方式与getCurrentPosition方法类似,这里就不再详细解释了。调用该方法会返回一个数字,这个数字与setInterval方法的返回值用法类似,可以被clearWatch方法使用,以停止对当前地理位置信息的监视.
5 停止获取位置信息clearWatch
使用clearWatch方法可以停止对当前用户地理位置信息的监视。用法如下:
navigator.geolocation.clearWatch(watchId);
参数watchId为调用watchPosition方法时的返回值。
原文地址:http://www.jianshu.com/p/eaa313b963e9