这几天在项目里面需要手机获取当前位置,到现在我把自己碰到的坑在这里分享一下,希望可以减小第一次使用定位的小伙伴们减少一点儿疑惑:
var geolocation = navigator.geolocation;
if(geolocation){
navigator.geolocation.getCurrentPosition(showPosition, showError,{
// 指示浏览器获取高精度的位置,默认为false
enableHighAccuracy: true,
// 指定获取地理位置的超时时间,默认不限时,单位为毫秒
timeout: 1000,
// 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。
maximumAge: '',
});
}else{
location.href='search.html';
}
navigator.geolocation.getCurrentPosition 里面的三个参数,成功回调是必须的,后面的失败回调和参数配置是非必须的,但是如果想要失败的回调起作用,就必须把参数配置写上,不然失败回调不起作用!
function locationError(error){
switch(error.code) {
case error.PERMISSION_DENIED:
alert("定位失败,用户拒绝请求地理定位");
break;
case error.POSITION_UNAVAILABLE:
alert("定位失败,位置信息是不可用");
break;
case error.TIMEOUT:
alert("定位失败,请求获取用户位置超时");
break;
case error.UNKNOWN_ERROR:
alert("定位失败,定位系统失效");
break;
}
}
locationError里面的函数有失败原因的参数。可以弹出去。(获取的位置距离自己实际位置有个几千米远。。。)
还有h5里面的方法也可以实现定位功能:
plus.geolocation.getCurrentPosition(successCB, errorCB);
function successCB(){//成功的回调函数
alert(11)
};
function errorCB(){//失败的回调函数
alert(22)
};
(这个定位更加准确,并且非常的好用,不过在ios里面需要把定位获取的经纬度若是想要在高德地图上显示,就会出现问题,需要转化为高德经纬度)
网友评论