前言:
今天同学们对“html5调用硬件”大概比较珍视,兄弟们都需要分析一些“html5调用硬件”的相关知识。那么小编在网上搜集了一些关于“html5调用硬件””的相关文章,希望我们能喜欢,同学们一起来了解一下吧!最近项目需要用到获取手机自身的定位系统,一直反馈定位不好用。网络状况不好的时候定位不准确。今天难得有时间修改了一下功能。但是遇到了一些问题,我用了一些方法解决,希望看了这个文章的有更好办法的大神们,可以指点指点我。
1.定位不准
使用官方提供的getCurrentPosition,默认的坐标系是国际的坐标系,用在百度地图上会有误差。可以使用官方提供的配置解决。
如在getCurrentPosition方法的第三个参数加上
provider: "baidu",
coordsType: "bd09ll",//百度坐标系
'enableHighAccuracy': true,//开启精准定位
2.实时获取定位
使用官方提供的watchPosition方法 ,实时监控坐标的变化。
可用参数
provider: "baidu",
coordsType: "bd09ll",
'enableHighAccuracy': true,
'maximumAge': 2000,
等等 其他我暂时没有 用
3.实时获取定位的watchPosition方法出现的问题
用hbuilder 基座 调试 获取经纬度一切没问题,但是打正式app包后,发现watchPosition方法第一次监听没有问题,后面监听的经纬度全是(5e-324,5e-324)。无法正确获取定位。后来发现只要我打开监听,出去走几步就可以正常监听。正常效果和打开地图一样,地图上的标注点会和我走路的轨迹一样,一直变化。
4.解决方法。
监听发现经纬度全是(5e-324,5e-324)时候调用getCurrentPosition方法,
部分代码:
this.dwtimer = plus.geolocation.watchPosition(
position => {
//坐标获取
//console.log(JSON.stringify(position));
let p = position;
//console.log(p.coords.latitude);
let lat = p.coords.latitude;
let lng = p.coords.longitude;
this.sb.jwdlr = lng + "," + lat;
let province =
p.address.province == undefined ? "" : p.address.province;
let city = p.address.city == undefined ? "" : p.address.city;
let district =
p.address.district == undefined ? "" : p.address.district;
let street = p.address.street == undefined ? "" : p.address.street;
let streetNum =
p.address.streetNum == undefined ? "" : p.address.streetNum;
let poiName = p.address.poiName == undefined ? "" : p.address.poiName;
this.sb.device_place =
city + "" + district + "" + street + "" + streetNum + "" + poiName;
console.log(lat);
if(lat!=5e-324&&lng!=5e-324&&lat!="5e-324"&&lng!="5e-324"){
this.center = {
lng,
lat
};
this.choosedLocation = {
province,
city,
district,
addr: street + streetNum,
lng,
lat
};
}else{
this.hqdw();
}
},
e => {
console.log(e.message);
this.hqdw();
plus.nativeUI.toast("请打开GPS定位" + e.message);
},
{
provider: "baidu",
coordsType: "bd09ll",
'enableHighAccuracy': true,
'maximumAge': 2000,
}
);
标签: #html5调用硬件 #html5取位置 #androidhtml5定位 #h5定位不准确