当手机的定位功能关闭以后通过getLocation方法返回的数据将不发生变化。【】wx.authorize出现调用无success,fail,complete回调##微信小程序开发教程 ...。
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下是这样的。
当用户关闭定位时通过网络获取并返回有效位置。
本文网址:http://www.91bianli.com/kaifazhinan/71850.html