- 取消 openRegionPicker 中对 regionLocked 的拦截,始终显示选择器 - 去掉 handleRegionChange 中的 regionLocked 拦截,设置手动修改后解除锁定 - 移除 chooseLocation 失败时对 regionLocked 的判断,确保手动选择始终可用 - 调整提示逻辑,取消“修改请重新选择定位”限制 - 保留 regionLocked 用于区分文本与地图地区显示,不阻止用户操作
2.2 KiB
2.2 KiB
2026-07-12
address-edit 地图选点「打开地图失败」修复
客户反馈部分手机无法通过选择地图填写地址/所在区,提示「打开地图失败,请重试」。 根因(按概率):①微信隐私授权未处理(新版基础库强制,最契合「部分手机」);②chooseLocation 传 undefined 经纬度;③权限流程不完整;④失败无兜底。
已修复 src/pages/user/address-edit.tsx(四层):
- 调 chooseLocation 前
ensurePrivacyAuthorized()(wx.getPrivacySetting/requirePrivacyAuthorize,旧基础库无接口则放行)。 - 仅当 lat/lng 为有效数字时才传给 chooseLocation,否则
chooseLocation({})。 ensureLocationPermission():getSetting 预检 + authorize 申请 + openSetting 引导并回读确认。- 失败兜底:弹窗「手动选择」(打开所在地区选择器)/「再试一次」(chooseLocation({}));regionLocked 时不再误开选择器。
注意:项目本地 tsc --noEmit / npm run type-check 在本机因 Taro 类型入口缺失(@tarojs/taro 不在 @types)会报错,与本次改动无关;以 taro build --type weapp 为准。
另:如仍偶发,需确认微信公众平台后台已配置《隐私保护指引》并发布。
跟进:放宽所在地区锁定,始终可手动选择
用户要求「万一地图不可用也能手动选所在地区、填地址提交」。分析发现该路径原本已通(所在地区行→NutUI Address 选择器、详细地址 Input、save 不强制经纬度)。
唯一拦截点:regionLocked 在地图选点/编辑带坐标地址后置 true,导致「所在地区」行与 handleRegionChange 被拦。
已放宽(仍保留 regionLocked 用于「识别」文本不覆盖地图地区):
- openRegionPicker:去掉 regionLocked 拦截,始终打开选择器。
- handleRegionChange:去掉拦截,手动改后 setRegionLocked(false)。
- chooseGeoLocation 兜底:去掉 regionLocked 分支,地图失败「手动选择」始终打开地区选择器。
编译验证:
taro build --type weapp通过。 (未做:手动改地区时不自动清除旧经纬度,避免误删数据;如需坐标随地区失效可再加。)