地理定位(Geolocation)是一个可以获取到客户端经纬度等地理位置信息的API。 API本身是不知道客户端地理信息的,常见的地理位置信息来源有全球定位系统(GPS)和从网络信号中推断出的地理信息(如IP地址, RFID, WIFI, 蓝牙MAC地址, GSM/CDMA手机id,以及用户输入的信息 )
先来了解下Geolocation API:
//返回地理定位对象
var geo = navigator.geolocation;
/*
*方法,获取当前客户端地理位置
*有三个参数可以用
*successCallback:必需,函数,获取成功后的回调函数
*errorCallback:可选,函数,失败时的回调函数
*options:可选,对象字面量,有三个值可设定:
* enableHighAccuracy:是否启用高精度设备(高精度设备包含但不局限于前面所提到的 GPS 和 WIFI)
* maximumAge:数值,如果将其定义为负数或者未定义,会重设为0
* timeout:数值,请求获取地理信息时的超时时间,如果将其定义为负数会重设为0,如果未定义则不启用超时判断
*/
geo.getCurrentPosition(successCallback,errorCallback,options);
/*
*方法,持续监控当前客户端地理位置(实时)
*返回该watchPosition的id*参数同getCurrentPosition
*/
var watchGEO = geo.watchPosition(successCallback,errorCallback,options);
/*方法,结束指定ID的watchPosition*/
geo.clearWatch(watchId);
使用地理定位API需要获得用户的许可,如果没有,会执行errorCallback;
watchPosition的successCallback只有在获取到的实时地理位置和之前有较大不同时才会执行;
getCurrentPosition和watchPosition的successCallback都有一个position参数,它包含有详细的地理信息如经纬度:
geo.getCurrentPosition(function (pos) {//成功获取时执行
var coord = pos.coords, //坐标detail
accuracy = coord.accuracy, //精准度,单位为米
latitude = coord.latitude, //纬度
longitude = coord.longitude, //经度
altitudeAccuracy = coord.altitudeAccuracy, //高度精确度,单位为米
heading = coord.heading, //移动的方向
speed = coord.speed; //速度
showLocationInfo(coord,‘map’); //显示坐标信息
showMap(coord,‘map’); //显示google地图
},
function (error) {//获取失败时执行
alert(‘error:’+error.message+‘\n\n无法获得您的地理位置:’);
});
取到经纬度就可以利用各map服务商的app来显示地图,如google map