html5 geilocation Api
Geolocation api 通过navigator.geolocation全局对象进行访问。初次访问时,浏览器会询问用户是否允许共享位置。
- 判断浏览器是否支持Geolocation API
function success(position) {
console.log('获取位置成功',position.coords);
}
function error(positionError) {
console.log('获取位置失败',positionError.code,positionError.message)
}
var options = {
enableHighAccuracy: false,
timeout: 30000,
maxinumAge: 0
}
if(navigator.geolocation){
//获取地理位置
//获取当前位置,调用navigator.geolocation.getCurrentPosition()
navigator.geolocation.getCurrentPosition(success,error,options);
}else{
alert('你的浏览器不支持geolocation');
}
getCurrentPosition(success,error,options)方法参数说明
- 参数1,成功获取位置后,调用的回调函数。返回的参数对象包含获取位置时的时间戳timestamp和坐标信息coords.coords对象包含了很多有用的位置信息,常用的属性如下:
latitude: 坐标维度;
longitude: 坐标经度;
accuracy: 坐标精度,单位为米;
- 参数2,失败的回调。返回的对象positionError,message属性包含了相关的错误信息描述,positionError.code的值有以下几种:
- UNKONWN_ERROR(0): 其他错误;
- PERMISSION_DENIED(1): 用户拒绝分享位置信息;
- POSITION_UNAVALlAEL(2): 获取用户位置信息失败;
- TIMEOUT(3): 获取位置信息超时;
3.参数3,可以用来设置以下内容: - enableHighAccuracy: 布尔值,是否获取高精度的位置,如果开启,可能会增加响应时间,默认值为false.
- timeout: 定位超时时间,单位为毫秒,如到达时间时没有获取用户位置信息,则触发失败回调函数,默认值为0.表示无穷大。
- maxinumAge: 用户位置信息缓存的最大时间(单位为毫秒),默认值为0。
当用户位置变化时,还可以通过watchPosition()方法监听用户的位置信息,watchPosition的参数和getCurrentPosition相同。函数返回后返回一个唯一标识,可以使用clearWatch()方法来取消监听,代码如下:
var watchId = navigator.geolocation.watchPosition(success,error,option);
navigator.geolocation.clearWatch(watchId)