找到一个曲线拯救办法,大家可以试一试 //精准定位获取循环 locationNear: function () { return new Promise(async (resolve) => { let horizontalAccuracy = 1000, i = 0 let latitude, longitude while (horizontalAccuracy > 50 && i < 10) { //经度如果大于50米,最多尝试10次,免得进入死循环 i++ await this.wxGetLocation().then(res => { horizontalAccuracy = res.horizontalAccuracy latitude = res.latitude longitude = res.longitude }).catch(err => { resolve(false) console.log('定位失败') }) } if (horizontalAccuracy <= 50) { ///如果经度在50米内 resolve('精准定位成功') } }) }, //手机定位 wxGetLocation: function () { return new Promise((resolve, reject) => { wx.getLocation({ type: 'gcj02', isHighAccuracy: true, highAccuracyExpireTime: 5000, success: (res) => { console.log('目前的位置', res.accuracy) resolve(res) }, fail: (err) => { reject(err) } }) }) }, 上面只是让手机多次尝试,不是关键,关键在下面.在需要获得精准定位的wxml页面引入 <map show-location="true" style="width: 0rpx; height: 0rpx;"></map> 这个地图组件可以帮手机快速定位,一般上面循环到第二次就是精确位置了
wx.getLocation 返回定位精度不准问题- 需求的场景描述(希望解决的问题) wx.getLocation 获取定位的时候,用的gcj02,altitude传入true,返回的是小数点后6位的经纬度。发现手机真机定位的时候返回定位精度不准,有时候位置还可以,有时候偏了几百米。当应用需要精准定位,偏了几百米,这误差有点不能接受,用户完全找不到地方啊。 - 希望提供的能力 像百度地图Android定位SDK提供GPS、基站、WI-FI、地磁、蓝牙、传感器等多种定位方式,适用于室内、室外多种定位场景。但百度地图微信小程序API不提供定位功能,定位用的也是小程序的wx.getLocation。目前也没有发现微信小程序自身提供高精度定位,希望微信小程序能提供高精度定位或 有其他方法解决定位精度不足的问题。
2021-01-24