首次授权直接调用wx.getLocation();方法,如果用户点击允许 则在success回调里返回地理位置信息,并且在不清除授权数据的情况下,以后再次调用wx.getLocation();方法 不会出弹窗 直接走success
如果用户在首次弹窗是选择 拒绝 则在fail回调中返回 {errMsg:"getLocation:fail auth deny"},并且在不清除授权数据的情况下,以后再次调用wx.getLocation();方法 不会出弹窗 直接走fail
所以正确授权逻辑 应该是:
1、进入页面先通过wx.getSetting();判断用户是否授权以及授权成功与否
a>如果没有地理位置的相关字段表示没有授权 -- 调起首次授权
b>如果返回scope.userLocation: true,表示授权成功 则直接在success拿地理位置信息
c>如果返回scope.userLocation: false,表示拒绝授权
则需要用户点击按钮 手动去设置允许获取地位置 返回主页面时
aa>允许 则返回 scope.userLocation: true,再次调用 wx.getLocation();方法 走success 返回地理位置信息
bb>拒绝 则返回scope.userLocation: false,
2、
产品流程:
首次进入页面 调起wx.getLocation();弹窗授权
允许? 直接拿地理位置信息
拒绝? 出一个按钮二次授权 方便用户手动设置
3、打开地图和选择地理位置
二、打开小程序设置(wx.openSetting())的调用方式(2018-09-12日调整)
1、使用button组件触发
代码:<button open-type="openSetting" bindopensetting="callback">打开设置</button>
2、有用户的点击行为触发wx.openSetting();接口调用;
代码:<button bindtap="openSetting">打开设置</button> openSetting(){wx.openSetting()}
其中:方法2已在最新开发者工具中支持(基础库切到2.2.4以上)