uni-app h5使用uni.chooseLocation生成地图列表无默认选中第一个,直接确定无法获取地址

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app h5使用uni.chooseLocation生成地图列表无默认选中第一个,直接确定无法获取地址

示例代码:

popupPackets.value.close()  
uni.chooseLocation({  
  latitude: 39.724699,  
  longitude: 116.34198,  
  success: (res) => {  
    console.log(res)  
  }  
})

操作步骤:

  • 直接调用uni.chooseLocation方法

预期结果:

  • 地图列表默认第一个

实际结果:

  • 实际并没有,需要手动选择一下

bug描述:

h5使用uni.chooseLocation生成一个地图列表但是没有默认选择第一个,直接确定的话就获取不到地址,


| 开发环境          | 版本号                    | 项目创建方式 |
|-------------------|---------------------------|--------------|
| Windows           | 版本 119.0.6045.161(正式版本) 64 位) | HBuilderX    |
| HBuilderX         | 3.6.18                    |              |

![Image 1](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20231203/6fdc8fa27362bb182d4950bf4bcc2065.jpg)

![Image 2](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20231203/3c9b7d6da8b963c027af536ccdbe7106.jpg)

3 回复

遇到相同的问题,请问老哥你是怎么解决的呢? 还有 在微信端,列表地址第一个是处于默认选择状态,在h5端,并没有默认选择,所以无法进行确定。


不选择不让他关闭,在手机端没这个问题

在使用 uni.chooseLocation 时,如果地图列表没有默认选中第一个地址,直接点击确定按钮可能会导致无法获取到地址。这是因为 uni.chooseLocation 的默认行为是要求用户手动选择一个地址,如果没有选择,直接点击确定按钮,返回的结果可能为空。

解决方案

  1. 强制用户选择地址

    • 在用户点击确定按钮之前,确保用户已经选择了一个地址。可以通过监听地图列表的选择事件,确保用户已经选择了某个地址。
  2. 默认选中第一个地址

    • 如果希望默认选中第一个地址,可以在 uni.chooseLocation 打开后,通过 JavaScript 自动选择第一个地址。不过,uni.chooseLocation 本身并不提供直接操作地图列表的 API,因此这个方案可能无法直接实现。
  3. 处理返回结果

    • uni.chooseLocationsuccess 回调中,检查返回的结果。如果结果为空,提示用户需要选择一个地址。

示例代码

uni.chooseLocation({
  success: (res) => {
    if (res.name && res.address) {
      // 用户选择了地址
      console.log('选择的地址:', res.name, res.address);
      // 处理地址逻辑
    } else {
      // 用户没有选择地址
      uni.showToast({
        title: '请选择一个地址',
        icon: 'none'
      });
    }
  },
  fail: (err) => {
    console.error('选择地址失败:', err);
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!