本章主要是介绍geolocation API来获取用户的地理位置信息。附带页面上使用Google地图的基本方法(这我就不讲了,google有很好的API使用说明书)。
Geolocation是window.navigator对象新增加的属性。Geolocation API存在三个方法。
1.获取地理位置
2.持续监视当前地理位置的信息
3.停止获取用户的地理位置信息
1.可是使用getCurrentPosition方法来获取用户地理位置信息,使用方法是:
void getCurrentPosition(onSuccess, onError,options);
onSuccess是返回获取地理位置成功时做什么;onError是返回获取地理位置失败时;oprtions是一些可选属性(书上这么说的,我知道的还有一个超时的属性)。
/* 一个完整的获取地理位置信息代码段 */
navigator.geolocation.getCurrentPosition(
/*成功获取片断*/
function(position){
var latitude = position.coords.latitude;//获取当前位置的纬度
var longitude = position.coords.longitude;//获取当前位置的精度
document.getElementById('map').value = '纬度:'+latitude+'精度:'+longitude;
},
/*获取地质位置错误片断*/
function(error){
var errorType={1:'位置服务器拒绝',2:'获取不到位置',3:'获取信息超时'};
alert(errorType[error.code]+":获取地理位置错误,请检查您的网络是否通畅!");
},
/* 超时处理*/
{
/*设置缓存有效时间是2分钟,单位是毫秒*/
maximumAge:60*1000*2,
/*5秒内没有回获取信息视为超时*/
timeout:5000
}
);
如果获取地理位置成功的话,position有这样几个属性:
latitude 当前地理位置的纬度
longitude 当前地理位置的精度
altitude 当前海拔高度 不能获取时为null
accuracy 获取的纬度或经度的精度(以米为单位)
altitudeAccurancy 获取海拔高度的精度(以米为单位)
heading 设备的前进方向。用面朝正北方的顺时针旋转角度来表示(不能获取时为null)
speed 设备的前进速度(单位:米/秒)
timestamp 获取地理时间
如果获取地理位置失败的话,Error对象有以下属性:
code属性:有三个值(1.用户拒绝了位置服务 2.获取不到位置信息 3.获取信息超时错误)
(还没弄明白,后面是书的原文)message属性:包含了一个字符串,在该字符串中包含了错误信息
再来看看最后一个可以省略参数包含那些属性
enableHighAccuracy 要求高精度的地理位置,这个参数在很多设备上没有用,所以大多数把设为默认
maximumAge 对地理位置的获取操作做一个超时限制(单位毫秒)
使用watchPosition方法来持续获取用户信息当前地理位置,它会定期自动获取,该方法定义如下:
int watchCurrentPosition(pnSuccess,onError,options);
该方法三个参数的说明和使用方法和getCurrentPosition方法一样。返回一个数字,这个数字的使用方法与javasctipt脚本中setInterval方法的返回值参数类似。
可以使用
vodi clearWatch(watchId);
watchId是调用上面的getCurrentPosition方法监视时返回的参数。