Geolocation 地理定位是一个非常酷的特性,这里介绍 Geolocation API 实现在手机的浏览器中获取当前地理位置信息。
严格来讲,Geolocation API 并不属于 HTML5 标准规范,但其 API 接口使得它能够让浏览器或者移动设备的浏览器获取用户的当前位置信息。
由于地理定位涉及用户的隐私信息,因此在任何时候第一次使用 Geolocation 地理定位功能的页面,都需要用户确认允许 Web 应用程序获取自己的位置信息。
浏览器支持
Geolocation API 已得到大部分的浏览器支持,设置在移动设备领取的浏览器都能很好的支持该 HTML5 特性。
Geolocation API 是通过 window.navigator.geolocation 获得对地理位置的访问的。该对象有如下三个方法:
Geolocation 提供的地理位置功能,是通过 getCurrentPosition() 方法获取当前用户的地理位置信息的,同时该方法可以传递三个参数:
void getCurrentPosition(in PositionCallback successCallback, in optional PositionErrorCallback errorCallback, in optional PositionOptions options);
第一个参数是必须参数,其用于获取地理位置信息成功后返回执行的回调函数
第二个参数是可选参数,其用于获取地理位置信息异常或失败时执行的回调函数
第三个参数是可选参数,其用于一些可选属性的参数配置与设置
navigator.geolocation.getCurrentPosition(function(pos){ console.log("当前位置纬度" + pos.coords.latitude); console.log("当前位置经度" + pos.coords.longitude); console.log("当前位置经纬度的精度" + pos.coords.accuracy); });
在上述的实例中,调用 getCurrentPosition 方法成功后的返回函数中,可以通过其中的参数对象,获得当前用户访问页时的地理位置信息。
pos 对象包含一个 coords 属性,其中包含了一系列的地理坐标信息。
pos 对象除了包含 coords 属性之外还包含一个 timestamp 属性,用于返回 coords 对象时以毫秒为单位创建时间戳。
前面已经讲过 getCurrentPosition 方法的第一个参数。
第二个参数作为获取地理位置信息出错时调用的函数,该函数会传递一个参数到函数内部,同时此参数纪录着返回的错误信息。
第三个参数作为指定获取地理位置信息的可选参数,其中包含以下几个选项:
enableHighAccuarcy 属性是指对浏览器或移动设备以更高精度的读取经度与纬度,其默认值为 false 。当其指定为 true 时,设备定位所话费的时间更长且容易导致消耗更多的设备电量。因此在无需获取高精度定位信息的情况下此参数可设置为 false 或 不设置,保持为默认即可。
timeout 属性是指告诉 geolocation 允许以毫秒为单位的最大时间间隔。
maximunAge 属性是指当该缓存的位置信息的时间不大于此参数设定值时,应用程序将接受一个缓存的位置信息,单位是毫秒。
Hava Fun !!