当手机的定位功能关闭以后通过getLocation方法返回的数据将不发生变化。
demo演示:
1.关闭手机的定位功能
2.创建一个新的小程序,然后将index.js内容替换为如下即可:
//index.js //获取应用实例 const app = getApp() var mylocation = function (tag){ wx.getLocation({ type: 'gcj02' , success: function (res) { var latitude = res.latitude; var longitude = res.longitude; // wx.openLocation({ // latitude: latitude, // longitude: longitude, // scale: 28 // }); var address = latitude + "," + longitude; console.log( "address:" + address); tag.setData({ motto: address }); }, fail: function (res){ console.log(res); } }); } Page({ data: { motto: 'Hello World' , userInfo: {}, hasUserInfo: false , canIUse: wx.canIUse( 'button.open-type.getUserInfo' ) }, //事件处理函数 bindViewTap: function () { mylocation( this ); }, onLoad: function () { if (app.globalData.userInfo) { this .setData({ userInfo: app.globalData.userInfo, hasUserInfo: true }) } else if ( this .data.canIUse){ // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 app.userInfoReadyCallback = res => { this .setData({ userInfo: res.userInfo, hasUserInfo: true }) } } else { // 在没有 open-type=getUserInfo 版本的兼容处理 wx.getUserInfo({ success: res => { app.globalData.userInfo = res.userInfo this .setData({ userInfo: res.userInfo, hasUserInfo: true }) } }) } }, getUserInfo: function (e) { console.log(e) app.globalData.userInfo = e.detail.userInfo this .setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) } }) |
演示说明:
点击头像将会获取定位信息然后在Hello World的地方展示,若开启定位功能的时候走动并一直点击时位置会不断变化。但是当关闭定位时位置将不发生变化。
BUG影响:
我们做的是一个打卡功能。存在的缺陷是用户在公司时将定位获取以后并关闭定位功能。只要不退出小程序,那么回家了位置也是在公司。这时候就会导致打卡不准确。
测试手机型号:
红米手机 Redmi 4X 系统:MIUI9.1 稳定版
华为荣耀8 系统:EMUI 5.0.1
期望效果:
当用户关闭定位时获取定位时执行error回调,目前测试ios下是这样的。
当用户关闭定位时通过网络获取并返回有效位置。
这个问题没人关注吗><
我也遇到这个问题了