js调用百度地图api获取定位在不同浏览器显示不一致,怎么解决?

最近需要实现网页的考勤打卡,但是使用百度地图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 })
阅读 2.5k
1 个回答

我看你使用的是浏览器的接口?看了下W3C针对geolocation-api的规范,使用的是WGS84坐标系,但目前都还是non-mormative(非标准化)状态,也就是各个浏览器厂商可以按照不统一的标准去实现。但具体是浏览器的有意而为之还是浏览器的bug,需要自己多去搜集下资料。但是可以明确知道的是,用浏览器的定位不太可靠,因为是非标准化的东西。

W3C geolocation-api
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏