在移动端h5使用
navigator.geolocation.getCurrentPosition(success, error)
获取方法时,手机浏览器和微信嵌入的浏览器,无论关闭与否,实施定位是没有问题;但是普通的andriod app嵌入h5页面功能时,关闭手机app定位权限后err.调函数是不能生效的,必须添加第三个参数options:timeout: 5000, //超时,毫秒 ,规定超时时间
navigator.geolocation.getCurrentPosition(success, error, options)
搜索到的相关信息是国行Android由于被阉割了谷歌的GMS服务,导致能正常调用 getCurrentPosition 函数但永远无法正常触发回调。(具体机制不详)而部分国内的浏览器对 getCurrentPosition 进行了重新封装。
参考代码:
if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(success,error,options);
} else {
alert('抱歉!您的浏览器无法使用地位功能');
}
var msg = '';
var success = function(pos) {
// A callback function that takes a Position object as its sole input parameter.
// 成功回调函数,接受一个地理位置的对象作为参数。
// https://developer.mozilla.org/en-US/docs/Web/API/Position 参数说明
pos.coords.latitude// 维度;
pos.coords.longitude// 经度
pos.coords.accuracy// 准确度
pos.coords.altitude// 海拔(m)
pos.coords.altitudeAccuracy// 海拔准确度(m)
pos.coords.headig// 行进方向 相对于正北而言
pos.coords.speed// 地面速度 m/s
};
var error = function(err) {
// 错误的回调
// 参考 https://developer.mozilla.org/en-US/docs/Web/API/Positionerr.错误参数
//错误号
switch (err.code) {
case 0:
msg = "There was an error while retrieving your location.Additional details:" + err.message;
break;
case 1:
msg = "The user opted not to share his or her location details:" + err.message;
break;
case 2:
msg = "the browser was uable to determine your location. Additional details:" + err.message;
break;
case 3:
msg = "The browser timed out before retrieving the location";
break;
}
console.log(msg);
};
var options = {
enableHighAccuracy: true, // 是否获取高精度结果
timeout: 5000, //超时,毫秒
maximumAge: 0 //可以接受多少毫秒的缓存位置
// 详细说明 https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions
};
相关文章:
,请先登录查看所有评论- h5存储知多少(sessionStorage、localStorage、stringify、parse) 2017-02-14
- 如何去测试HTML5的标准? 2015-04-17
网友评论已关闭