uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问

uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问

项目信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10专业版 64位
HBuilderX类型 正式
HBuilderX版本号 3.1.22
手机系统 Android
手机系统版本号 Android 8.1
手机厂商 小米
手机机型 小米6X
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

1

预期结果:

2

实际结果:

3

bug描述:

代码和报错看附件吧 超简单, 我仔细去翻了翻官方文档,这里也没有说这个key有次数限制呀, 难道是uniapp的高德key那里有限制?


更多关于uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 使用chooseLocation会返回一个地址但随后返回一个报错 不影响使用但来问问的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个报错是uni-app的chooseLocation组件在高德地图SDK返回地址信息后,触发的JavaScript异常。从截图看,错误发生在解析地址数据时,具体是addressComponent对象为null或undefined导致的属性访问错误。

关键点分析:

  1. 问题根源:高德地图在某些情况下返回的地址数据中,addressComponent字段可能为空,而代码直接访问了addressComponent.city等子属性。
  2. 不影响使用的原因:虽然控制台报错,但主要地址信息(如name、address)已正常返回,应用功能未受影响。
  3. 与key限制无关:这不是高德key调用次数限制问题,而是数据解析时的容错处理缺失。

建议修复方案: 在调用chooseLocation后,对返回结果进行安全判断:

uni.chooseLocation({
  success: (res) => {
    if (res && res.addressComponent) {
      // 安全访问addressComponent的子属性
      const city = res.addressComponent.city || ''
      // ...其他处理
    }
    // 即使addressComponent为空,仍可正常使用res.name、res.address等主字段
  }
})
回到顶部