1. 使用navigator.Geolocation对象
首先判断是否支持
if(navigator.Geolocation){
alert("支持位置对象")
} else {
alert("不支持")
}
2. Geolocation API存在于navigator对象中,
只包含3个方法:
1、getCurrentPosition //当前位置
2、watchPosition //监视位置
3、clearWatch //清除监视
getCurrentPosition(success,error,option)方法最多可以有三个参数:
第一个参数是成功获取位置信息的回调函数,它是方法唯一必须的参数;
第二个参数用于捕获获取位置信息出错的情况,
第三个参数是配置项。
[例子]
navigator.geolocation.getCurrentPosition( function(p) {
var map="维度"+p.coords.latitude+"经度"+p.coords.longitude;
alert(var);
});
其他属性:
p.address.country
p.address. region
p.address.city
p.coords.accuracy 准确角
p.coords.altitude 海拔高度
p.coords.altitudeAcuracy海拔高度的精确度
p.coords.heading 行进方向
p.coords.speed 地面的速度
出错处理
navigator.geolocation.getCurrentPosition( … , function(error){
switch(error.code){
case error.TIMEOUT :
alert( " 连接超时,请重试 " );
break;
case error.PERMISSION_DENIED :
alert( " 您拒绝了使用位置共享服务,查询已取消 " );
break;
case error.POSITION_UNAVAILABLE :
alert( " ,抱歉,暂时无法为您所在的星球提供位置服务 " );
break;
}
});
参数设置:
navigator.geolocation.getCurrentPosition( … , … , option);
option配置项,第三个参数是一个对象,该对象影响了获取位置时的一些细节。
enableHighAccuracy ,它将告诉浏览器是否启用高精度设备,所谓的高精度设备包含但不局限于前面所提到的GPS和 WIFI,值为 true 的时候,浏览器会尝试启用这些设备,默认指为 true。
timeout,超时,获取位置信息时超出设定的这个时长,将会触发错误,捕获错误的函数将被调用,并且错误码指向TIMEOUT。
这样我们尝试修改调用 getCurrentPosition 时传递的参数
watchPosition与clearWatch有点像setInterval和clearInterval的工作方式。
var watchPositionId = navigator.geolocation.watchPosition(success_callback, error_callback, options);
navigator.geolocation.clearWatch(watchPositionId );