在HTML5中,为window.navigator对象新增了一个geolocation属性,可以使用Geolocation API来对该属性进行访问。window.navigator对象的geolocation属性存在三个方法。
可以使用getCurrentPosition()方法来取得用户当前的地理位置信息,该方法的定义如下:
void getCurrentPosition(onSuccess, onError, options);
其中第一个参数为获取当前地理位置信息成功时所执行的回调函数,第二个参数为获取当前地理位置信息失败时所执行的回调函数,第三个参数为一些可选属性的列表。其中,后两个参数是可选的。
该方法成功取得地理位置信息时执行的回调函数使用方法如下:
navigator.geolocation.getCurrentPosition(function(position) { // 获取成功时的处理。 });
如果获取地理位置信息失败,可以通过该方法的第二个参数定义的回调函数把错误信息提示给用户。当在浏览器中打开使用了Geolocation API来获得用户当前位置信息的页面时,浏览器会询问用户是否共享位置信息,如果拒绝共享的话也会引起错误。该回调函数使用一个error对象作为参数,该对象具有两个属性:code属性、message属性。
code属性的可能值有:用户拒绝了位置服务(属性值“1”)、获取不到位置信息(属性值“2”)、获取信息超时(属性值“3”)。
message属性为一个字符串,在该字符串中包含了错误信息,这个错误信息在开发和调试时很有用。有些浏览器不支持该属性。
错误处理回调函数的使用方法如下:
navigator.geolocation.getCurrentPosition(function(position) {}, function(error) { var errorType = ['位置服务被拒绝', '获取不到位置信息', '获取信息超时']; alert(errorType[error.code - 1]); });
该方法第三个参数为可选属性列表,这些可选属性包括:
该属性使用方法如下所示:
navigator.geolocation.getCurrentPosition(function(position) {}, function(error) {}, // 以下为可选属性。 { maximumAge: 60 * 1000 * 2, // 设置缓存有效时间为2分钟。 timeout: 5000 });
使用watchPosition()方法来持续获取用户的当前地理位置信息,它会定期地自动获取,该方法定义如下:
int watchCurrentPosition(onSuccess, onError, options);
该方法三个参数的说明与使用方法与getCurrentPosition()方法相同。该方法返回一个数字,该数字的使用方法与JavaScript脚本中的setInterval()方法的返回结果类似,可以被clearWatch()方法使用,停止对当前地理位置信息的监视。
使用该方法可以停止对当前用户的地理位置信息的监视。该方法定义如下:
void clearWatch(watchId);
该方法的参数为调用watchCurrentPosition()方法监视地理位置信息时的返回参数。
如果获取地理位置信息成功,则可以在获取成功后的回调函数中通过访问position对象的属性来得到这些地理位置信息。position对象具有如下属性: