小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用 wx.onLocationChange获取定位数据,每30秒为有效数据。然后展示为polyline,为什么会出现定位乱跳的问题,如下图效果
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
不漂移才是少见现象,gps存在较弱或丢失或切换基站等操作,出现这种不奇怪。
主流地图都有纠偏web服务等操作,小程序没见过。
可能需要有开源算法之类过滤异常点
期间手机有息屏锁屏吗?
以下是后台定位代码
startLocationChange() { const that = this const d = new Date() //检查是否已开启后台定位请求 if (!APP.globalData.startLocation) { wx.startLocationUpdateBackground({ success: (res) => { APP.globalData.startLocation = true wx.offLocationChange((result) => {}) wx.onLocationChange((result) => { const second = d.getSeconds() if (second % 30 === 0) { const markers = that.data.markers const polyline = that.data.polyline const timestamp = d.getTime() //获取本地points缓存并存入变量 let points = wx.getStorageSync('points') points = points ? JSON.parse(points) : [] if (Object.keys(result).length > 0) { markers[0].latitude = result.latitude.toFixed(6) markers[0].longitude = result.longitude.toFixed(6) that.setData({ markers }) } //设置缓存用于5分钟上传 points.push({ latitude: markers[0].latitude, longitude: markers[0].longitude, timestamp: parseInt(timestamp / 1000) }) wx.setStorage({ key: 'points', data: JSON.stringify(points) }) //合并30秒获取的points数据到polyline polyline[0].points.push({ latitude: markers[0].latitude, longitude: markers[0].longitude, timestamp: parseInt(timestamp / 1000) }) that.setData({ polyline }) } }) }, fail: (res) => { console.log(res); } }) } },
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
不漂移才是少见现象,gps存在较弱或丢失或切换基站等操作,出现这种不奇怪。
主流地图都有纠偏web服务等操作,小程序没见过。
可能需要有开源算法之类过滤异常点
期间手机有息屏锁屏吗?
以下是后台定位代码
startLocationChange() { const that = this const d = new Date() //检查是否已开启后台定位请求 if (!APP.globalData.startLocation) { wx.startLocationUpdateBackground({ success: (res) => { APP.globalData.startLocation = true wx.offLocationChange((result) => {}) wx.onLocationChange((result) => { const second = d.getSeconds() if (second % 30 === 0) { const markers = that.data.markers const polyline = that.data.polyline const timestamp = d.getTime() //获取本地points缓存并存入变量 let points = wx.getStorageSync('points') points = points ? JSON.parse(points) : [] if (Object.keys(result).length > 0) { markers[0].latitude = result.latitude.toFixed(6) markers[0].longitude = result.longitude.toFixed(6) that.setData({ markers }) } //设置缓存用于5分钟上传 points.push({ latitude: markers[0].latitude, longitude: markers[0].longitude, timestamp: parseInt(timestamp / 1000) }) wx.setStorage({ key: 'points', data: JSON.stringify(points) }) //合并30秒获取的points数据到polyline polyline[0].points.push({ latitude: markers[0].latitude, longitude: markers[0].longitude, timestamp: parseInt(timestamp / 1000) }) that.setData({ polyline }) } }) }, fail: (res) => { console.log(res); } }) } },