最近需要实现网页的考勤打卡,但是使用百度地图api.getCurrentPosition,在不同浏览器获取得经纬度有很大偏差,小米浏览器,谷歌浏览器,显示正常,可能也存在一点点偏差,但是还好,但是到uc浏览器,夸克浏览器,甚至百度浏览器自身也会存在较大误差,这个问题应该怎么解决呢?求大神,下面是我获取经纬度的代码
const geolocation = new BMap.Geolocation()
geolocation.getCurrentPosition(function (r) {
const param = r
console.log(param)
if (this.getStatus() == BMAP_STATUS_SUCCESS) { // 判断是否开启权限
if (!param.accuracy) {
_this.info = false
_this.text = '无法打卡'
_this.info2 = false
_this.place = '请开启权限允许定位'
return
}
const mk = new BMap.Marker(param.point)
_this.map.addOverlay(mk)
_this.map.panTo(param.point) // 地图中心移动到自己的当前位置
_this.point = new BMap.Point(param.point.lng, param.point.lat) // 获取自己当前位置经纬度
_this.info = true
_this.signIn()
} else {
_this.info = false
alert('failed' + this.getStatus())
}
},
function (err) {
_this.info = false
_this.info2 = false
_this.text = '定位失败'
_this.place = '可能网络延迟'
console.log(err)
},
{ enableHighAccuracy: true, provider: 'baidu', maximumAge: 30 * 1000 })
我看你使用的是浏览器的接口?看了下W3C针对geolocation-api的规范,使用的是WGS84坐标系,但目前都还是non-mormative(非标准化)状态,也就是各个浏览器厂商可以按照不统一的标准去实现。但具体是浏览器的有意而为之还是浏览器的bug,需要自己多去搜集下资料。但是可以明确知道的是,用浏览器的定位不太可靠,因为是非标准化的东西。