fix(user): 修复地图选点打开失败及定位权限处理问题

- 移除旧的定位权限拒绝检测方法,改用微信隐私授权新接口保证兼容
- 新增确保微信隐私授权的函数,适配新版基础库及旧版本放行逻辑
- 增加定位权限预检和引导用户开启权限流程,支持设置页跳转回读授权状态
- 在调用 chooseLocation 时仅传入有效经纬度,避免部分机型失败
- 地图打开失败时增加弹窗提示,支持用户手动选择地区或重试打开地图
- 定位失败且已锁定地区时取消误触发地区选择器,提升用户体验
This commit is contained in:
2026-07-12 21:58:52 +08:00
parent f1da250295
commit b02f0d91b1
2 changed files with 181 additions and 84 deletions

View File

@@ -0,0 +1,15 @@
# 2026-07-12
## address-edit 地图选点「打开地图失败」修复
客户反馈部分手机无法通过选择地图填写地址/所在区,提示「打开地图失败,请重试」。
根因按概率①微信隐私授权未处理新版基础库强制最契合「部分手机」②chooseLocation 传 undefined 经纬度;③权限流程不完整;④失败无兜底。
已修复 `src/pages/user/address-edit.tsx`(四层):
1. 调 chooseLocation 前 `ensurePrivacyAuthorized()`wx.getPrivacySetting/requirePrivacyAuthorize旧基础库无接口则放行
2. 仅当 lat/lng 为有效数字时才传给 chooseLocation否则 `chooseLocation({})`
3. `ensureLocationPermission()`getSetting 预检 + authorize 申请 + openSetting 引导并回读确认。
4. 失败兜底:弹窗「手动选择」(打开所在地区选择器)/「再试一次」(chooseLocation({}))regionLocked 时不再误开选择器。
注意:项目本地 `tsc --noEmit` / `npm run type-check` 在本机因 Taro 类型入口缺失(`@tarojs/taro` 不在 @types)会报错,与本次改动无关;以 `taro build --type weapp` 为准。
另:如仍偶发,需确认微信公众平台后台已配置《隐私保护指引》并发布。