JS新API标准 地理定位(navigator.geolocation),感兴趣的能够参考下:git
经过navigator.geolocation来获取设备的当前位置,返回一个位置对象(从对象中获得一些经纬度的相关信息)。缓存
一、使用方法:函数
navigator.geolocation.getCurrentPosition(successCallback, [errorCallback] , [positionOptions]);code
二、参数介绍:对象
successCallback: 获取定位成功时执行的回调函数。function(position){ console.log(position); }get
返回一个地理数据对象position做为参数,该对象有属性timestamp和coords。回调函数
timestamp表示该地理数据建立时间(时间戳);it
coords包括另外七个属性:io
coords.latitude:估计纬度console
coords.longitude:估计经度
coords.altitude:估计高度
coords.accuracy:所提供的以米为单位的经度和纬度估计的精确度
coords.altitudeAccuracy:所提供的以米为单位的高度估计的精确度
coords.heading: 宿主设备当前移动的角度方向,相对于正北方向顺时针计算
coords.speed:以米每秒为单位的设备的当前对地速度
errorCallback:定位失败时执行的回调函数。function(error){ console.log(error); }
返回一个错误数据对象error做为参数,该对象有属性message、 code、PERMISSION_DENIED、POSITION_UNAVAILABLE、TIMEOUT。
message:错误提示内容;
code:表示失败缘由,返回1 or 2 or 3 (对应PERMISSION_DENIED、POSITION_UNAVAILABLE、TIMEOUT);
PERMISSION_DENIED (数值为1) 表示没有权限使用地理定位API;
POSITION_UNAVAILABLE (数值为2) 表示没法肯定设备的位置,例如一个或多个的用于定位采集程序报告了一个内部错误致使了所有过程的失败;
TIMEOUT (数值为3) 表示超时;
例:{ message: "User denied Geolocation", code: 1, PERMISSION_DENIED: 1, POSITION_UNAVAILABLE: 2, TIMEOUT: 3 }
positionOptions:经过设置positionOptions来更精细的执行定位。
positionOptions拥有三个属性{ enableHighAccuracy: boolean, timeout: long, maximumAge: long }。
enableHighAccuracy:true / false(默认,不启用)是否返回更详细更准确的结构,选择true则启用,可是会致使较长的响应时间及增长功耗,这种状况更多的用在移动设备上。
timeout:设备位置获取操做的超时时间设定(不包括获取用户权限时间),单位为毫秒,若是在设定的timeout时间内未能获取位置定位,则会执行errorCallback()返回code(3)。若是未设定timeout,那么timeout默认为无穷大,若是timeout为负数,则默认timeout为0。
maximumAge:设定位置缓存时间,以毫秒为单位,若是不设置该值,该值默认为0,若是设定负数,则默认为0。该值为0时,位置定位时会从新获取一个新的位置对象;该值大于0时,即从上一次获取位置时开始,缓存位置对象,若是再次获取位置时间不超过maximumAge,则返回缓存中的位置,若是超出maximumAge,则从新获取一个新的位置。
三、示例:
if(navigator.geolocation) { // 判断设备是否支持定位
navigator.geolocation.getCurrentPosition(function(position) {
alert(position.coords.latitude); // 纬度
alert(position.coords.longitude); // 经度
}, function(error) {
alert(error.message);
}, {
timeout: 90000
});
}else {
alert("不支持定位");
}
水平有限,文中错误不妥在所不免,欢迎批评指正建议评论。文章将不按期修改完善斧正。谢谢!