小程序
小游戏
企业微信
微信支付
扫描小程序码分享
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
微信小程序中使用wx.startLocationUpdateBackground这个定位方式时,肯定要使用 wx.onLocationChange不间断的获取位置信息,但这个有两个问题:
1、位置不变化时也上报,亮屏状态每隔两秒触发onLocationChange
2、api没有提供参数控制onLocationChange的上报间隔
以下的代码可能解决以上两个问题
wx.startLocationUpdate({ success: (res) => { wx.onLocationChange((data) => { //获取当前时间 var currentTime = new Date().getTime(); //获取上次保存的位置信息 var oldLocation = wx.getStorageSync('oldLocation'); //获取上次执行的时间 var oldTime = wx.getStorageSync('oldTime'); //将经纬度拼接 var newLocation = data.latitude+""+data.longitude; //判断当前的位置是否和上次位置不一致,并且间隔时间超过5s if(oldLocation!=newLocation && currentTime-oldTime>5000){ //缓存当前最新位置 wx.setStorageSync('oldLocation',newLocation); //缓存当前执行的时间 wx.setStorageSync('oldTime',currentTime); //将位置信息上传后台的自己的代码 uploadLocation(data); } }); }, fail: (err) => { consoler.log(err); } })
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
微信小程序中使用wx.startLocationUpdateBackground这个定位方式时,肯定要使用 wx.onLocationChange不间断的获取位置信息,但这个有两个问题:
1、位置不变化时也上报,亮屏状态每隔两秒触发onLocationChange
2、api没有提供参数控制onLocationChange的上报间隔
以下的代码可能解决以上两个问题
wx.startLocationUpdate({ success: (res) => { wx.onLocationChange((data) => { //获取当前时间 var currentTime = new Date().getTime(); //获取上次保存的位置信息 var oldLocation = wx.getStorageSync('oldLocation'); //获取上次执行的时间 var oldTime = wx.getStorageSync('oldTime'); //将经纬度拼接 var newLocation = data.latitude+""+data.longitude; //判断当前的位置是否和上次位置不一致,并且间隔时间超过5s if(oldLocation!=newLocation && currentTime-oldTime>5000){ //缓存当前最新位置 wx.setStorageSync('oldLocation',newLocation); //缓存当前执行的时间 wx.setStorageSync('oldTime',currentTime); //将位置信息上传后台的自己的代码 uploadLocation(data); } }); }, fail: (err) => { consoler.log(err); } })