使用 getCurrentPosition 方法可以取得用户当前的地理位置信息。
void getCurrentPosition(onSuccess, onError, options);
当浏览器成功获取到用户的位置信息时, getCurrentPosition 的第一个函数类型的参数将被调用,将对应的 position 对象传入到调用的函数中,这个对象中包含了浏览器返回的具体数据,这非常重要。
其中, position 对象包含了用户的地理位置信息,该对象的 coords 子对象包含了用户所在的纬度和经度信息,通过 position.coords.latitude 可以访问纬度信息, position.coords.longitude 可访问经度信息,用户的位置信息越精确,这两个数字后面的小数点越长。此外,在 Firefox 中, position 对象下还附带有另一个 address 对象,这个对象包含这个经纬度下的国家名,城市名甚至街道名 。
getCurrentPosition 方法中的第 1 个参数为获取当前地理位置信息成功时所执行的回调函数。
navigator.geolocation.getCurrentPosition(function (position) {
//获取成功时的处理
});
在获取地理位置信息成功时执行的回调函数中,用到了一个参数 position ,它代表一个 position 对象,我们将在后面小节中对这个对象进行具体介绍。
getCurrentPosition 方法中的第 2 个参数为获取当前地理位置信息失败时所执行的回调函数。如果获取地理位置信息失败,可以通过该回调函数把错误信息提示给用户。当在浏览器中打开使用了 Geolocation API 来获得用户当前位置信息的页面时,浏览器会询问用户是否共享位置信息。如果在该画面中拒绝共享的话,也会发生错误。
该回调函数使用一个 error 对象作为参数,该对象具有以下两个属性。
code 属性
code 属性包含 3 个值,简单说明如下:
message 属性
getCurrentPosition 方法中使用第二个参数捕获错误信息的具体使用方法如下所示。
navigator.geolocation.getCurrentPosition(
function (position) {
var cords = position.coords;
showMap(coords.latitude, coords.longitude, coords.accuracy);
},
//捕获错误信息
function (error) {
var errorTypes = {
1: `位置服务被拒绝`,
2: `获取不到位置信息`,
3: `获取信息超时`,
};
alert(errorTypes[error.code] + ':, 不能确定当前地理位置 ');
},
);
getCurrentPosition 方法中的第三个参数可以省略,它是一些可选属性的列表,这些可选属性说明如下。
navigator.geolocation.getCurrentPosition(
function (position) {
// 获取地理定位信息成功时
},
function (error) {
// 获取地理位置失败
},
{
maximumAge: 60 * 1000 * 2, // 缓存时间 timeout: 5000
// 超时设置
},
);
使用 watchPosition 方法可以持续获取用户的当前地理位置信息,它会定期地自动获取。
int watchCurrentPosition ( onSuccess , onError , options )
该方法参数的说明和使用与 getCurrentPosition 方法相同。调用该方法后会返回一个数字,这个数字的用法与 JavaScript 脚本中 setInterval 方法的返回值用法类似,可以被 clearWatch 方法使用,以停止对当前地理位置信息的监视。
用 clearWatch 方法可以停止对当前用户的地理位置信息的监视。具体用法如下所示。
void clearWatch(watchId);
参数 watchId 为调用 watchCurrentPosition 方法监视地理位置信息时的返回参数。
HTML5 Geolocation 规范提供了一套保护用户隐私的机制。除非得到用户明确许可,否则不可获取位置信息。具体设置步骤如下:
提示,应用程序不能直接访问设备,它只能请求浏览器来代表它访问设备。
访问使用 HTML5 Geolocation API 的页面时,会触发隐私保护机制。如果仅仅是添加 HTML5 Geolocation 代码,而不被任何方法调用,则不会触发隐私保护机制。只要所添加的 HTML5 Geolocation 代码被执行,浏览器就会提示用户应用程序要共享位置。执行 HTML5 Geolocation 的方式很多,例如,可以调用 navigator.geolocation.getCurrentPosition 方法等。
除了询问用户是否允许共享其位置之外, Firefox 等一些浏览器还可以让用户选择记住该网站的位置服务权限,以便下次访问的时候不再弹出提示框,类似于在浏览器中记住某些网站的密码。